Google语音文本无法在React Native中转录Android音频

时间:2018-12-10 00:30:15

标签: node.js react-native audio gridfs google-speech-api

我正在使用React Native应用程序中的一项功能,该功能可以使用Google's NodeJS Speech-to-Text API将人们的语音转换为文本。

我正在使用Expo构建我的应用程序。我正在使用Expo的内置Audio类,因为它使录制和播放音频非常简单。

我已经建立了一个独立的NodeJS和Express API,该API使我可以点击某些端点进行上传,然后将上传的音频转换为文本,然后将其传递回用户。我之所以这样做,是因为Google的语音转文本功能不能在React Native上运行,而只能在NodeJS应用程序上运行。

这是我已经实现的当前流程:

  1. 用户在手机上本地录制音频。在电话上创建了一个临时文件。
  2. 他们使用multipart/form-dataaxios的形式发送该文件。 FormData是用于形成数据的类。
  3. 在服务器端,我使用multer来接收文件,并使用GridFS将其上传到托管的MongoDB数据库中。
  4. 虽然仍在服务器端,但我以ArrayBuffer的形式下载了特定文件。
  5. 然后我将Buffer转换为Base64并将其发送到Google的API。
  6. Google会对其转录进行响应,然后将转录结果发送回格式化的JSON对象中。

此过程适用于iOS,没问题。但是,在使用Android方面我没有成功。

在线阅读后,我的主要直觉是我的音频文件可能无法在Android上正确格式化。

以下是Android的音频设置:

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

注意:这些设置与我为iOS设置的设置完全相同。

以下是Google语音到文本的音频设置:

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

注意:我在MacBook的模拟器上测试iOS,而在Google Pixel 2 XL上测试Android。

0 个答案:

没有答案