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