我正在使用React Native应用程序中的一项功能,该功能可以使用Google's NodeJS Speech-to-Text API将人们的语音转换为文本。
我正在使用Expo构建我的应用程序。我正在使用Expo的内置Audio
类,因为它使录制和播放音频非常简单。
我已经建立了一个独立的NodeJS和Express API,该API使我可以点击某些端点进行上传,然后将上传的音频转换为文本,然后将其传递回用户。我之所以这样做,是因为Google的语音转文本功能不能在React Native上运行,而只能在NodeJS应用程序上运行。
这是我已经实现的当前流程:
multipart/form-data
以axios
的形式发送该文件。 FormData
是用于形成数据的类。multer
来接收文件,并使用GridFS将其上传到托管的MongoDB数据库中。ArrayBuffer
的形式下载了特定文件。Buffer
转换为Base64
并将其发送到Google的API。此过程适用于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。