javascript - 如何处理编码的base64音频并重新发送到谷歌?

标签 javascript node.js express base64

我使用麦克风从浏览器录制音频,编码为 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/

相关文章:

node.js - 提取过期的 jwt token 的有效负载

node.js - 为什么 .find() 显示快速的 MongoDB 事务时间和慢的 node.js 事务时间,而 .findOne() 显示完全相反的情况?

javascript - 在express中使用返回值发送到ajax成功

node.js - 如何在 sequelize 中进行多个查询?

javascript - 使用 jQuery 进行按键传递

javascript - 设置将使用javascript在新窗口中打开的链接的宽度和高度参数?

node.js - 一段时间后 Node 停止响应

node.js - 如何在 Codeship 的部署 Hook 中运行 Node npm 脚本

javascript 添加迄今为止的天数,但它显示旧日期月份

javascript - 如果子文档值不存在,Mongodb 将插入到子文档中