Мой сценарий довольно прост: после пробуждающего слова пользователя (я не использую для этого Google Speech) я начинаю отправлять данные микрофона в службу распознавания речи Google. Проблема, которую я пытаюсь решить, заключается в следующем: если пользователь активирует моего голосового помощника и сразу после этого ничего не говорит, я хочу остановить процесс отправки молчания в службу. Я считаю, что VoiceActivityTimeout специально создан для этой цели. Однако, поскольку я не разбираюсь в protobuf, я не уверен, как это реализовать и как он должен работать.
Это то, что я попробовал. Я взял этот пример и изменил его:streaming_transcribe_singlethread.cc:
личное: Обработчик (google:
./streaming_transcribe_singlethread Silence.wav Отправка 64 КБ. Отправка 64 КБ. Отправка 64 КБ. Ошибка в потоке транскрипции: ОТМЕНЕНО: операция отменена. Молчание.wav
Я согласен, что если поток закрывается по таймауту, такого результата можно было ожидать. Однако я считаю, что первоначального фрагмента данных (около 3 секунд) должно быть достаточно, чтобы определить наличие тишины. Увы, изменение значения тайм-аута, похоже, не влияет на результат.
Я почти уверен, что делаю что-то не так. К сожалению, мне не удалось найти примеров того, как устанавливать и обрабатывать таймауты. Будьте добры, объясните мне, как это должно работать и что я делаю не так.
Большое спасибо!
Мобильная версия