如何在wav文件中添加标题?

问题描述 投票:0回答:1

我将存储为blob的音频数据发送到我的后端(node / express)。当我将文件保存为.wav并尝试在python中的SpeechRecogition包中使用时,它会抛出一个错误,指出“文件不以RIFF id开头”。那么在保存之前如何将标题添加到我的blob文件中,以便它是一个格式正确的.wav文件?如有必要,我可以提供代码。

node.js文件

var multer = require('multer');
var fs = require('fs'); //use the file system so we can save files
var uniqid = require('uniqid');
var spawn = require('child_process').spawn;
const storage = multer.memoryStorage()
var upload = multer({ storage: storage });

router.post('/api/test', upload.single('upl'), function (req, res) {

   console.log(req.file);
   console.log(req.file.buffer);

   var id = uniqid();
   fs.writeFileSync(id+".wav", Buffer.from(new Uint8Array(req.file.buffer))); //write file to server as .wav file

   const scriptPath = 'handleAudio.py'
   const process = spawn('python3', [__dirname+"/../"+scriptPath, "/home/bitnami/projects/sample/"+id+".wav", req.file.originalname, 'True']); //throws error about header in .wav

});

我也有同样的例子使用php端点,它只是将blob保存到扩展名为.wav且python文件接受它的文件中。在php中的move_uploaded_file和我在节点上做的事情有什么不同?

node.js express blob wav multer
1个回答
0
投票

每个.wav文件都需要一个WAVE文件格式指定的标头,可用here。虽然你可以自己构建标题,但使用适当的lib来为你完成工作要容易得多。

一个例子是node-wav,它有一个很好的API来从原始PCM数据中写入WAVE文件(你现在拥有的)。示例代码由node-wav文档提供。

© www.soinside.com 2019 - 2024. All rights reserved.