在node.js中读取WAV卷数据

时间:2014-01-22 14:11:27

标签: javascript node.js

我迫切需要帮助了解如何读取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(我很确定它取决于我想要的结果如何“微调”。而且我知道我必须以某种方式平均每个块中的数据,而且我尝试取平均值等但似乎无法得到任何有用的数据..

任何帮助将不胜感激!

1 个答案:

答案 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文件的标题块中提取数据块的大小和数量。