Я использую Undertone для проекта Unity, чтобы распознавать речевой ввод пользователя и расшифровывать его в реальном времени.
Я в значительной степени дублировал пример RealtimeTranscriber.cs, который включены в их демо-сцену и на веб-сайт. Он использует общедоступный движок SpeechEngine и имеет публичное событие TextTranscribed OnTextTranscribed (краткие заголовки прикреплены в конце этого сообщения).
Другой скрипт ( позвольте мне назвать это SpeechCheck.cs) имеет дело с результатом транскрибированного текста, транскрипция была достигнута с помощью прослушивателя и подключения события:
RealtimeTranscriber listener
// In initialize()
// Add a listener for when text is transcribed during initialization
listener.OnTextTranscribed += text =>
{
_text = text;
};
// In Update()
listener.StartListening();
// This is called when the user is supposed to say something
// and the `_text` will be updated with the recognized transcription.
Поскольку пользователь должен говорить как в разговоре, в сцене есть несколько объектов, к которым прикреплен SpeechCheck.cs для различной обработки.При первом использовании SpeechCheck.cs и запуске прослушивателя все работает нормально, _text обновляется и распознавание происходит достаточно точно. Однако после отключения первого объекта с компонентом SpeechCheck.cs второй объект с компонентом SpeechCheck.cs не работает, _text остается пустым.
Чтобы убедиться, что некоторые параметры не удалось сбросить, я даже попытался создать новые компоненты и назначить их во время выполнения:
// Still in SpeechCheck.cs
// In initialize()
Engine = this.AddComponent();
this.AddComponent();
GetComponent().Engine = Engine;
listener = this.GetComponent();
// At the end
listener.StopListening();
Destroy(GetComponent());
Destroy(GetComponent());
И это бесполезно, прослушиватель по-прежнему работает только при первом вызове.
Что могло вызвать эту проблему?
Поскольку на их веб-сайте код не отображается, к нему приложены заголовки методов:
public class RealtimeTranscriber : MonoBehaviour
{
public SpeechEngine Engine;
public event TextTranscribed OnTextTranscribed;
//...
private void Start();
public bool VADTriggered (float[] samples);
private IEnumerator TranscribeCoroutine();
public void StartListening();
public void StopListening();
private async Task TranscribeAudioClipAsync(float[] samples, bool flush);
private void RecalculateWindowSize();
private void OnDestroy();
}
Подробнее здесь: https://stackoverflow.com/questions/787 ... nd-time-be
Распознавание голоса Unity Undertone не распознает речь со второго раза ⇐ C#
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение