Google Cloud Speech-to-Text: "INVALID_ARGUMENT: недопустимое распознавание" config ": неправильное кодирование .." код c ошибка кодирования звука - PullRequest
0 голосов
/ 19 марта 2020

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

INVALID_ARGUMENT: Invalid recognition 'config': bad encoding.

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

Ваши аудиоданные могут быть закодированы неправильно или кодируется кодом c, отличным от того, который вы объявили в 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

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

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

// 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. Файл воспроизводится без проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...