Преобразование речи в текст Google Cloud: "INVALID_ARGUMENT: недопустимая конфигурация распознавания: неправильная кодировка .." ошибка кодирования аудиокодека

Я записываю короткие аудиофайлы (несколько секунд) в Chrome, используя mediaDevices.getUserMedia(), сохраняя файл в хранилище Firebase, а затем пытаясь отправить файлы в Google Cloud для преобразования речи в текст из облачной функции Firebase. Я получаю это сообщение об ошибке:

INVALID_ARGUMENT: Invalid recognition 'config': bad encoding.

В документации Google говорится, что это сообщение об ошибке означает

Ваши аудиоданные могут быть неправильно закодированы или закодированы с помощью кодека, отличного от того, который вы объявили в RecognitionConfig. Проверьте аудиовход и убедитесь, что вы правильно установили поле кодирования.

В браузере настроил микрофон:

navigator.mediaDevices.getUserMedia({ audio: true, video: false })
.then(stream => {

var options = {
   audioBitsPerSecond : 128000,
   mimeType : 'audio/webm;codecs=opus'
};

const mediaRecorder = new MediaRecorder(stream, options);
mediaRecorder.start();
...

Согласно этому ответу Chrome поддерживает только два кодека:

audio/webm
audio/webm;codecs=opus

Фактически, это один медиаформат и один кодек. В этом сообщении также говорится, что Chrome поддерживает только кодек Opus.

Я настроил свою облачную функцию Firebase:

// Imports the Google Cloud client library
const speech = require('@google-cloud/speech');

// Creates a client
const client = new speech.SpeechClient();

const gcsUri = 'gs://my-app.appspot.com/my-file';
const encoding = 'Opus';
const sampleRateHertz = 128000;
const languageCode = 'en-US';

const config = {
   encoding: encoding,
   sampleRateHertz: sampleRateHertz,
   languageCode: languageCode,
};
const audio = {
   uri: gcsUri,
};

const request = {
   config: config,
   audio: audio,
};

// Detects speech in the audio file
return response = client.recognize(request) // square brackets in ES6 construct an array
.then(function(response) {
console.log(response);
...

Кодировка звука совпадает между браузером и запросом Google Speech-to-Text. Почему Google Speech сообщает мне, что кодировка звука плохая?

Я также попытался использовать параметры по умолчанию в браузере с тем же сообщением об ошибке:

navigator.mediaDevices.getUserMedia({ audio: true, video: false })
.then(stream => {

const mediaRecorder = new MediaRecorder(stream);
mediaRecorder.start();

В облачной функции Firebase я попытался опустить строку const encoding = 'Opus';, что привело к ошибке encoding is not defined. Я пробовал эту строчкуconst encoding = ''; что привело к INVALID_ARGUMENT: Invalid recognition 'config': bad encoding.. ошибка.

Я получаю аналогичное сообщение об ошибке от IBM Watson Speech-to-Text. Файл воспроизводится без проблем.

0 ответов

Другие вопросы по тегам