我迫切需要帮助了解如何读取WAV文件的音量级别。基本上,我需要一种方法来计算音频文件中特定时间的音量(例如0.01秒),以便找到特定的“峰值”。
我正在使用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(我很确定它取决于我想要的结果如何“微调”。而且我知道我必须以某种方式平均每个块中的数据,而且我尝试取平均值等但似乎无法得到任何有用的数据..
任何帮助将不胜感激!
答案 0 :(得分:1)
我认为您不需要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 file format,可以从WAV文件的标题块中提取数据块的大小和数量。