Нужен правильный код c для файла WAV в Google Speech to Text API - PullRequest
0 голосов
/ 10 июля 2020

Я пытаюсь расшифровать аудиофайл WAV с помощью Google Speech to Text API. Большая часть работы по извлечению текста, за исключением одного файла WAV, который я всегда нажимаю

Необработанная ошибка {Ошибка: 3 INVALID_ARGUMENT: заголовок WAV указывает на неподдерживаемый формат.

Я уже упоминал https://cloud.google.com/speech-to-text/docs/encoding

Примечание. Преобразование речи в текст поддерживает файлы WAV со звуком в кодировке LINEAR16 или MULAW.

и пробовали оба кода c но это все равно не удалось.

Я попытался получить подробную информацию о wav с помощью команды soxi

>> soxi org\ hearing.WAV
Input File     : 'org hearing.WAV'
Channels       : 1
Sample Rate    : 22050
Precision      : 13-bit
Duration       : 00:14:59.99 = 19844721 samples ~ 67499.1 CDDA sectors
File Size      : 9.99M
Bit Rate       : 88.8k
Sample Encoding: 4-bit IMA ADPCM

Могу ли я узнать, поддерживается ли формат кодирования «4-битный IMA ADPCM»? Или какой соответствующий код c из поддерживаемого формата? https://cloud.google.com/speech-to-text/docs/encoding#audio -кодирования

Если это действительно не поддерживаемый код c из исходного файла, в любом случае преобразовать в поддерживаемый FLAC / WAV код c с помощью некоторой функции GCP, затем извлечь текст без ручного преобразования? Потому что я имею дело с административным работником, которому нужна функция извлечения, удобная для фиктивных файлов.

1 Ответ

0 голосов
/ 13 июля 2020

Вам нужно использовать enums.RecognitionConfig.AudioEncoding.LINEAR16, это идеально подходит для wav расширений. Я вижу, что ваша частота дискретизации составляет 22050, что не сработает, вам нужно сделать частоту дискретизации 16000. Также я столкнулся с проблемой, когда моя битовая глубина не была установлена ​​на 16, поэтому, пожалуйста, установите битовую глубину на 16, с этими изменениями она будет работать. Если вы используете sox, это можно сделать довольно легко. Ниже представлена ​​команда sox для изменения частоты дискретизации и битовой глубины.

sox audio.wav -r 16000 -c 1 -b 16 audio_1.wav bandreject 200 3k

Я реализовал полосовой фильтр, используя bandreject, вы можете удалить эту часть, если не требуется.

...