Google Speech API - 识别 base64 编码的音频
Posted
技术标签:
【中文标题】Google Speech API - 识别 base64 编码的音频【英文标题】:Google Speech API - recognizing base64 encoded audio 【发布时间】:2017-02-26 12:30:54 【问题描述】:我一直在为 Google Speech API 苦苦挣扎,希望得到一些建议。
这是我想要做的:
-
在浏览器中录制音频
将录音转换为base64并发送到我的服务器
在服务器上,调用 Google Speech API 的 syncRecognize 函数,传入我的 base 64 编码音频
我总是收到一个空的结果对象。
当我关注getting started tutorial 时,虽然一切正常。
我做错了什么?
非常感谢任何提示/想法。
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;
);;
【问题讨论】:
我以前从未尝试在浏览器中执行此操作,所以我不确定。有什么方法可以将音频内容数据保存到文件中,以确保它是可播放的(并且它是 LINEAR16 16kHz)?如果给它一个URI,相同的代码是否有效?如果是这样,问题似乎出在音频“内容”上。 【参考方案1】:可能您从浏览器记录的内容没有那些配置参数。
我遇到的另一个问题是,对于超过 5 秒的音频持续时间,超时启动,到目前为止,我无法有效地更改 API 截止日期。这也可能是您的情况。
为了在我的 web 应用程序中验证音频的元数据,我使用 ffmpeg:我自动将文件保存到存储中并在脚本中运行 ffmpeg -i filename
以检索采样率、编码、通道数和持续时间。
请注意,有 audio lenght limits 用于同步语音识别请求。如果超过了,我建议您使用异步方法(或将音频文件拆分为子文件)。在前一种情况下,您可能需要转换音频编码(幸运的是 ffmpeg 也可以为您做到这一点:))。在后一种情况下,您可以使用SoX 将音频拆分为静音并分别处理。
【讨论】:
以上是关于Google Speech API - 识别 base64 编码的音频的主要内容,如果未能解决你的问题,请参考以下文章
403(禁止),Google Speech API 上的无效键错误