我使用麦克风从浏览器录制音频,编码为 Base64,然后发送到我的 Node.js 应用程序,该应用程序应该将 Base64 数据发送到 google 语音到文本 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)
已定义
最佳答案
将 wav 导出到 blob,然后将其发送到 NodeJS 并将其保存到 DB 以供进一步使用。 (以我为例,Mongo)
function sendToBackEnd(blob){
var blob = blob;
var reader = new FileReader();
reader.readAsDataURL(blob);
reader.onloadend = function() {
blob = reader.result.toString();
console.log(blob)
var fd = new FormData();
fd.append('fname', 'test.wav');
fd.append('data', blob);
// fd.append('data', blob);
$.ajax({
url: '/recordings',
type: 'POST',
data: fd,
processData: false,
contentType: false
})
}
}
然后在 NodeJs 端:
app.post('/recordings',function(req,res){
var form = new multiparty.Form();
form.parse(req, function(err, file) {
if (err){
console.log(err)
}
var data=file.data;
newRecording={content:data}
Recording.create(newRecording,function(err,Recording){
if (err){
console.log(err)
}else{
console.log(Recording)
}
});
});
});
关于javascript - 如何处理编码的base64音频并重新发送到谷歌?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51623300/