Невозможно преобразовать аудио в текстовые nodejs

Я пытаюсь преобразовать аудиофайл в текст с помощью узла js, у меня есть справочная ссылка https://github.com/GoogleCloudPlatform/nodejs-docs-samples/tree/master/speech, используя эту ссылку, я могу преобразовать входящие в нее образцы файлов (а именно, аудио .raw, gs://gcs-test-data/vr.flac) из аудио в текст

Но когда я использую аудиофайл из этого ссылка Мне не удалось преобразовать аудио в текст, отображается пустой ответ. Ответ { results: [] }

Также я знаю об использовании этих команд

 node recognize.js sync ./resources/audio.raw -e LINEAR16 -r 16000
 node recognize.js async-gcs gs://gcs-test-data/vr.flac -e FLAC -r 16000
 node recognize.js stream ./resources/audio.raw  -e LINEAR16 -r 16000

но я не знаю, как использовать аудиофайл из ссылки для преобразования аудио в текст


person Aravindh    schedule 12.10.2017    source источник
comment
Аравинд, не могли бы вы полностью добавить свой код к вопросу? какой из трех приведенных вами примеров не работает? Как вы загружаете аудиопоток, который у вас есть?   -  person Koen    schedule 16.10.2017
comment
Конечно, Коэн, теперь я пытаюсь использовать developers.google.com/apis-explorer/#search/speech/speech/ Я могу преобразовать конкретный образец файла (приземление нескольких торнадо — это череда сильных гроз, пронесшихся по Колорадо в воскресенье, я не знаю не знаю, как вставить аудиофайл stackoverflow) в любом формате, но когда я пробовал с другим файлом, он показывает пустой ответ   -  person Aravindh    schedule 16.10.2017
comment
Я думаю, вам следует хранить свой аудиофайл в облачной корзине, а затем использовать ссылку на этот файл в своем асинхронном запросе?   -  person Koen    schedule 16.10.2017
comment
Да, я так и делаю, я буду хранить свой аудиофайл в облаке Google, используя ссылку как gs://bucket-name/file-name.wav, когда я использую syncrecognize, он возвращает пустой ответ, но когда я использую с asyncrecognize возвращает имя: 4705002481516695159, а затем используйте эту ссылку GET speech.googleapis.com/v1beta1/ Operations/4705002481516695159 возвращается как { name: 4705002481516695159, done: true, response: { @type: type.googleapis.com/google.cloud.speech.v1beta1.AsyncRecognizeResponse, totalBilledTime: 30s } }   -  person Aravindh    schedule 16.10.2017
comment
просто включите метаданные в этот комментарий из-за нехватки метаданных места: { @type: type.googleapis.com/google.cloud.speech.v1beta1.AsyncRecognizeMetadata, progressPercent: 100, startTime: 2017-10-16T10:46:54.841148Z, lastUpdateTime: 2017-10-16T10:47:00.571549Z },   -  person Aravindh    schedule 16.10.2017
comment
поэтому вам нужно немного подождать, пока API не закончит обработку. Поэтому, когда вы позвоните ему снова, вы увидите, что есть ответ с расшифровкой   -  person Koen    schedule 16.10.2017
comment
Отлично, у меня есть ответ, но в нем нет поля расшифровки cache-control: private content-encoding: gzip content-length: 248 content-type: application/json; charset=UTF-8 дата: понедельник, 16 октября 2017 г. 10:48:56 GMT сервер: ESF варьируется: Origin, X-Origin, Referer { name: 4705002481516695159, metadata: { @type: type.googleapis.com/google.cloud .speech.v1beta1.AsyncRecognizeMetadata, progressPercent: 100, startTime: 2017-10-16T10:46:54.841148Z, lastUpdateTime: 2017-10-16T10:47:00.571549Z }, done: true, }   -  person Aravindh    schedule 16.10.2017
comment
здесь я включил ответ в поле ответа: { @type: type.googleapis.com/google.cloud.speech.v1beta1.AsyncRecognizeResponse, totalBilledTime: 30s}   -  person Aravindh    schedule 16.10.2017
comment
У меня есть ответ с полем расшифровки, для которого я уже получил ответ (приземление нескольких торнадо - это линия сильных гроз, пронесшихся по Колорадо в воскресенье), но для другого поля результата аудиофайла самого поля нет.   -  person Aravindh    schedule 16.10.2017
comment
Хорошо, тогда убедитесь, что ваш аудиофайл имеет правильный формат, поскольку API дает нулевой ответ, когда ваша кодировка неверна. Так что, возможно, установите Audacity или Sox ​​и преобразуйте файл в монофонический файл FLAC.   -  person Koen    schedule 16.10.2017
comment
да, я использую формат файла .wav и кодирую как FLAC, sampleRate - 44100, а languageCode - en-US, но он дает пустой ответ   -  person Aravindh    schedule 16.10.2017
comment
Вы можете установить sox (если вы используете Linux или около того) и вывести то, что команда воспроизведения дает вам в терминале? Это поможет точно узнать, правильный ли файл. Далее нужно определить, какую именно команду вы используете для запуска API?   -  person Koen    schedule 16.10.2017
comment
Теперь установил sox в ubuntu, и я определил, что некоторые файлы воспроизводятся в проигрывателе ритмбоксов, но не в проигрывателе sox, файл, который воспроизводится в проигрывателе sox, будет нормально работать в API речи Google, но как я могу воспроизвести другие файлы, которые принадлежат мне ( s3.amazonaws.com/android-liveb4buy-merchantapp/ )   -  person Aravindh    schedule 16.10.2017
comment
вы можете легко конвертировать файлы с помощью sox примерно так: sox input.mp3 output.flac (просто убедитесь, что ваш sox был установлен с поддержкой flac, но я думаю, что это по умолчанию)   -  person Koen    schedule 17.10.2017
comment
Ok. Добавил это как ответ на ваш ответ. Вы можете принять это как ответ, если вы довольны этим.   -  person Koen    schedule 24.10.2017


Ответы (1)


При использовании Google Speech API важно убедиться, что ваш аудиоформат правильный. API нельзя использовать с такими форматами, как mp3.

Чтобы использовать API, вы можете использовать такой инструмент, как sox или ffmpeg, для преобразования во flac: * Sox: sox input_file.mp3 output.flac * ffmpeg: ffmpeg -i input_file.mp3 ./output.flac

При использовании неправильного формата Google Speech API возвращает пустой ответ.

{ results: [] }

person Koen    schedule 24.10.2017