【发布时间】:2018-07-31 23:09:08
【问题描述】:
我使用麦克风从浏览器录制音频,编码 base64,然后发送到我的 node.js 应用程序,该应用程序假设将 base64 数据发送到谷歌语音到文本 api,然后向我发送转录。我对如何处理来自发布响应的数据然后将其发送给谷歌感到困惑。
这是我到目前为止的客户端 ajax 帖子:
var reader = new window.FileReader();
reader.readAsDataURL(blob);
reader.onloadend = function() {
var fd = new FormData();
base64data = reader.result;
fd.append('rawaudio', base64data);
console.log(base64data)
$.ajax({
type: 'POST',
url: 'http://localhost:3000/send',
data: fd,
cache: false,
processData: false,
contentType: false,
enctype: 'multipart/form-data'
}).done(function(err,data) {
console.log(data)
console.log(err)
})
}
表达 node.js
app.post('/send',(req,res)=>{
console.log(req.body.rawaudio)
})
我得到未定义的
console.log(req.body.rawaudio)
但我知道数据被发送是因为
console.log(base64data)
已定义
【问题讨论】:
-
b64 字符串采用 PCM 音频作为一种发布方式,与在客户端进行编码、发布二进制文件、然后将 b64 字符串发布到谷歌相比效率低下云...意识到这不是问题...
-
ans 可以帮助您从 post.body 中取出非常大的字符串。 stackoverflow.com/questions/35418921/… 。我刚刚为云语音实现了节点包装器,但使用了差异方法.. 从麦克风,我使用“record.js”作品包编码为 16K 作品。我获取 POST 的那个 blob 来表达中间件 rawbodyParser 以从 POST 中获取二进制正文。然后将其转换为服务器上的 b64 字符串,将 POST 包装到 google api 并将其响应返回给我的客户端。
标签: javascript node.js express base64