对8位PCM信号进行FFT

时间:2016-03-12 15:33:40

标签: javascript node.js audio signal-processing fft

我在node-js中使用这种快速傅里叶变换实现:https://www.npmjs.com/package/fft-js

我正在使用wav reader来读取我的wav文件,该文件被编码为8位PCM,并将数据输出为8位无符号整数数组。

我看到fft-js期望信号值从-1到1,如本例所示:

ells = [Ellipse(xy=rnd.rand(2)*10, width=rnd.rand(), height=rnd.rand(), angle=rnd.rand()*360) for i in range(250)]

我该怎么办?我应该将我的wav文件的8位pcm表示转换为介于-1和1之间的值,如果是,如何?

1 个答案:

答案 0 :(得分:2)

根据维基百科上的这个article,您应该能够获取8位uint数据并将其映射到介于-1和1之间的数字,其类似于:

let arrForFFT = uint8Array.map(num => (num - 128) / 128)

如果我的uint8Array看起来像这样:

[ 256, 192, 128, 64, 0]

然后arrForFFT看起来像这样:

[ 1, 0.5, 0, -0.5, -1]

修改:如果您未使用ES2015,代码将如下所示:

var arrForFFT = uint8Array.map(function(num) {
  return (num - 128) / 128
})