Я записываю короткие аудиофайлы (несколько секунд) в Chrome, используя mediaDevices.getUserMedia()
, сохраняю файл в Firebase Storage, а затем пытаюсь отправить файлы в IBM Watson Speech-to-Text. Я получаю сообщение об ошибке:
unable to transcode data stream audio/webm -> audio/x-float-array
В браузере я настроил микрофон:
navigator.mediaDevices.getUserMedia({ audio: true, video: false })
.then(stream => {
var options = {
audioBitsPerSecond : 128000,
mimeType : 'audio/webm'
};
const mediaRecorder = new MediaRecorder(stream, options);
mediaRecorder.start();
...
Согласно этот ответ Chrome только поддерживает два типа мультимедиа
audio/webm
audio/webm;codecs=opus
Я пробовал оба.
Вот что я отправил в IBM Watson:
curl -X POST -u "apikey:my-api-key" \
--header "Content-Type: audio/webm" \
--data-binary "https://firebasestorage.googleapis.com/v0/b/my-app.appspot.com/my-file" \
--url "https://api.us-south.speech-to-text.watson.cloud.ibm.com/instances/01010101/v1/recognize"
Список поддерживаемых типов MIME включает webm
и webm;codecs=opus
.
Я попытался записать и отправить файл формата ogg
и получил то же сообщение об ошибке:
curl -X POST -u "apikey:my-api-key" \
--header "Content-Type: audio/ogg" \
--data-binary @/Users/TDK/LanguageTwo/public/1.ogg \
--url "https://api.us-south.speech-to-text.watson.cloud.ibm.com/instances/01010101/v1/recognize"
Я попробовал образец аудиофайла IBM, и он отлично работал:
"transcript": "several tornadoes touched down as a line of severe thunderstorms swept through Colorado on Sunday "
Я получаю подобное сообщение об ошибке от Google Cloud Speech-to-Text.