读取node.js中的WAV卷数据

我迫切需要帮助理解如何读取WAV文件的音量级别。 基本上,我需要一种方法来确定audio文件中特定时间的音量(例如0.01秒),以便find特定的“峰值”。

我正在使用node-wav( https://github.com/TooTallNate/node-wav )和下面的代码:

var file = fs.createReadStream('test.wav'), reader = new wav.Reader(), bufSize = 4410; reader.on('readable', function() { while (null !== (chunk = reader.read(bufSize))) { // I'M TOTALLY LOST HERE } }); 

基本上,我不知道什么bufSize使用(我非常确定这取决于如何“微调”我想要的结果..此外,我知道我必须平均在每个块的数据不知何故,我试图采取平均值等,但似乎无法得到任何有用的数据..

任何帮助,将不胜感激!

我不认为你需要在这里bufSize ,只是按照wav.Reader的例子:

 var fs = require('fs'); var wav = require('wav'); var file = fs.createReadStream('track01.wav'); var reader = new wav.Reader(); // the "format" event gets emitted at the end of the WAVE header reader.on('format', function (format) { // do your calculation here, using format }); // pipe the WAVE file to the Reader instance file.pipe(reader); 

无论如何,根据WAV文件格式 ,可以从WAV文件的标题块中提取数据块的大小和数量。