Если вы будете следовать этому руководству: https://medium.com/ideas-at-igenius/delivering-a-smooth-cross-browser-speech-to-text-experience-b1e1f1f194a2 вам удастся создать процессор сценариев, к которому вы добавите прослушиватель
scriptProcessor = inputPoint.context.createScriptProcessor(bufferSize, in_channels, out_channels)
//...
scriptProcessor.addEventListener('audioprocess', streamAudioData)
Внутри обратного вызова, позвонив по этой строке: callback_param.inputBuffer.getChannelData(0)
каждый получает javascript Float32Array, который при просмотре данных, кажется, содержит числа с плавающей запятой от -1,0 до + 1,0
Поэтому, передавая это на сервер, который, в свою очередь, передает его в службу Google Speech-To-Text, вы ничего не получаете (как и ожидалось)
Служба Google Speech-To-Text, по крайней мере в Python, для потокового ввода ожидает строку байтов в формате wav, которая содержит звук с указанной частотой (т. Е. 16000 Гц). Обратите внимание, что если в бэкэнде вы транслируете файл, это работает нормально.
Это преобразование не удалось: Float32Array -> Int16Array -> byte-string
Кто-нибудь находил, какие преобразования подходят для работы вышеупомянутого?
В качестве альтернативы вам известен более простой и надежный путь для: микрофона в браузере -> потоковой передачи данных через веб-сокет на внутренний сервер -> потоковой передачи данных в службу речевого ввода Google -> получения ответов, как и ожидалось?
Редактировать: добавление кода Python для распознавания конфигурации Google speech api
config = types.RecognitionConfig(
encoding=enums.RecognitionConfig.AudioEncoding.LINEAR16,
sample_rate_hertz=16000,
language_code=self.language_code)