IBM Watson Speech-to-Text "невозможно перекодировать поток данных audio/webm -> audio/x-float-array" медиа-типы MIME

Я записываю короткие аудиофайлы (несколько секунд) в 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.

1 ответ

Создайте bash-скрипт с именем watsonstt.sh(рекомендую сохранить в ~/bin/), вставьте содержимое ниже, замените apikey, url, а также savepathпеременное содержимое с вашим собственным и вызовите скрипт, как рекомендует комментарий, включая кавычки для одного аргумента (для работы с пробелами).

Учетные данные API предоставляются на вкладке «Управление» облачного веб-интерфейса IBM Watson на момент написания статьи, и вам необходимо зарегистрироваться, указав данные кредитной/дебетовой карты.

      
#!/bin/bash

# call this script with one argument for posix file path parameter in quotes e.g.: 
# watsonstt.sh "/user/name/file.mp3"

# 500 mins per month for free
# https://www.ibm.com/watson/developercloud/speech-to-text/api/v1/curl.html?curl#get-token

apikey=XXXXXXXXXXXX
url=YYYYYYYYYY
savepath=~/Desktop/${1##*/}.txt

curl -X POST -u "apikey:$apikey" --header "Content-Type: audio/${1##*.}" --data-binary @"$1" "$url/v1/recognize?timestamps=true&max_alternatives=3" -o "${savepath}"
      
Другие вопросы по тегам