Получить промежуточный результат при потоковой передаче звука с помощью streaming_detect_intent - PullRequest
0 голосов
/ 04 января 2019

Я последовал этому примеру и сумел собрать аудио буферы с моего микрофона и отправить их в Dialogflow.

https://cloud.google.com/dialogflow-enterprise/docs/detect-intent-stream

Но эта обработка последовательная.Сначала мне нужно собрать все аудиобуферы, которые я потом смогу отправить в Dialogflow.

Затем я получу правильный результат, а также промежуточные результаты.

Но только после того, как я дождался, пока человексначала прекратите говорить, прежде чем я смогу отправить собранные звуковые буферы в Dialogflow.

Я хотел бы мгновенно отправить (передать) аудиобуферы в диалоговый поток, пока кто-то еще разговаривает, а также сразу получить промежуточные результаты.

Кто-нибудь знает, возможно ли это, и укажет мне правильное направление?Мой любимый язык - Python.

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 08 января 2019

Недавно, пытаясь сделать нечто подобное, я обнаружил, что кто-то уже имел эту проблему и понял это .По сути, вы можете подавать аудиопоток в DialogFlow с помощью метода streamingDetectIntent и получать промежуточные результаты, поскольку в аудиовходе распознается действительный язык.Сложность в том, что вам нужно установить пороговое значение для входного потока, чтобы поток завершался, как только пользователь прекращает разговор в течение заданного времени.Закрытие потока служит той же цели, что и достижение конца аудиофайла, и инициирует попытку сопоставления намерений.

В приведенном выше решении используется SoX для потоковой передачи звука с внешнего устройства.Хорошая вещь в этом подходе состоит в том, что SoX уже имеет опции для установки пороговых уровней звука для запуска / остановки процесса потоковой передачи (посмотрите на опцию silence), так что вы можете точно настроить параметры для работыдля ваших нужд.Если вы не используете NodeJS, вам может потребоваться написать собственную утилиту для инициации аудиопотока, но, надеюсь, это может указать вам верное направление.

0 голосов
/ 07 января 2019

Я получил этот ответ от группы поддержки Dialogflow:

Из документации Dialogflow: Распознавание прекращается, когда он обнаруживает, что голос аудио остановлен или приостановлен.В этом случае после получения обнаруженного намерения клиент должен закрыть поток и при необходимости начать новый запрос с новым потоком.Это означает, что пользователь должен остановить / приостановить разговор, чтобы вы отправили его в Dialogflow.

Для того, чтобы Dialogflow обнаружил правильное намерение, он должен иметь полное пользовательское высказывание.

Если вы ищете распознавание речи в режиме реального времени, загляните в наш продукт «Речь в текст» (https://cloud.google.com/speech-to-text/).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...