我一直在努力使用 Google Speech API 一段时间,希望得到一些建议。
这是我正在尝试做的事情:
我总是收到一个空的结果对象。
当我按照这个入门教程虽然一切正常。
我做错了什么?
任何提示/想法将不胜感激。
const Speech = require('@google-cloud/speech');
const SpeechV1beta1 = require('@google-cloud/speech/src/v1beta1')
module.exports = {
syncRecognize: function(base64Encoding) {
const speech = Speech();
const speechV1beta1 = SpeechV1beta1();
const client = speechV1beta1.speechClient();
const body = {
"config": {
"encoding":"LINEAR16",
"sampleRate":16000,
"languageCode":"en-US"
},
"audio": {
"content": base64Encoding
}
}
return client.syncRecognize(body)
.then((results) => {
console.log('results', results)
return {transcription: results[0]};
}).catch(function(error) {
return {error: error};
});;
}
}
可能您从浏览器录制的内容没有这些配置参数。
我遇到的另一个问题是,对于超过 5 秒的音频持续时间,超时开始,到目前为止,我无法有效地更改 API 截止日期。这也可能是你的情况。
为了验证我的网络应用程序中音频的元数据,我使用 ffmpeg:我自动将文件保存到存储中并在脚本中运行
ffmpeg -i filename
以检索采样率、编码、通道数和持续时间。
注意同步语音识别请求有音频长度限制。如果你超过它们,我建议你使用异步方法(或将音频文件拆分为子文件)。在前一种情况下,您可能需要转换音频编码(幸运的是,FFmpeg 也可以为您做这件事:))。在后一种情况下,您可以使用 SoX 在静音上拆分音频并单独处理它们。