我在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之间的值,如果是,如何?
答案 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
})