Google Speech to Text не в состоянии транскрибировать звук Android в React Native - PullRequest
0 голосов
/ 10 декабря 2018

Я работаю над функцией в своем приложении React Native, которая преобразует речь людей в текст, используя Google NodeJS Speech-to-Text API .

Я использую Expo для сборкииз моего приложения.Я использую встроенный класс Expo Audio, поскольку он делает запись и воспроизведение аудио очень простыми.

Я установил автономный NodeJS и Express API, который позволяет мне нажиматьопределенные конечные точки для загрузки, а затем преобразовать загруженное аудио в текст, который я передам обратно пользователю.Я делаю это только потому, что Google Speech-to-Text не работает на React Native, только приложения NodeJS.

Это текущий поток, который я реализовал:

  1. Пользователь записывает свое аудио локально на свой телефон.В телефоне создается временный файл.
  2. Они отправляют этот файл в виде multipart/form-data, используя axios.FormData - это класс, используемый для формирования данных.
  3. На стороне сервера я использую multer, чтобы получить файл и загрузить его в базу данных MongoDB, размещенную на хосте, используя GridFS.
  4. Находясь на стороне сервера, я загружаю определенный файл в виде ArrayBuffer.
  5. , затем переводю Buffer в Base64 и отправляю его в API Google.
  6. Google отвечает своей транскрипцией, а затем я отправляю транскрипцию обратно в отформатированном объекте JSON.

Этот процесс работает для iOS, нет проблем.Однако мне не удается использовать Android.

После прочтения в Интернете моя главная догадка заключается в том, что мои аудиофайлы могут быть неправильно отформатированы для Android.

Вот настройки звукадля Android:

"android": {
    "audioEncoder": 3,
    "bitRate": 128000,
    "extension": ".wav",
    "numberOfChannels": 1,
    "outputFormat": 2,
    "sampleRate": 44100,
}

Примечание : это те же самые настройки, которые у меня есть для iOS.

Вот настройки звука для Google Speech-to-Text:

const config = {
  encoding: 'LINEAR16',
  sampleRateHertz: 16000,
  languageCode: 'en-US',
};

Примечание : я тестирую iOS на эмуляторе моего MacBook, а тестирую Android на своем Google Pixel 2 XL.

...