我在node:https://www.npmjs.com/package/fft-js中使用了快速傅里叶变换实现。
我使用wav读取器,它读取我的wav文件,该文件被编码为8位PCM,并将数据输出为一个8位无符号整数数组。
我看到fft-js期望信号值从-1到1,如它的用法示例所示:
var fft = require('fft-js').fft,
signal = [1,0,1,0];
var phasors = fft(signal);
console.log(phasors);我该怎么办?我是否应该将wav文件的8位pcm表示形式转换为-1到1之间的值,如果是这样的话?
发布于 2016-03-12 15:50:59
根据维基百科上的这个文章,您应该能够获取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
})https://stackoverflow.com/questions/35959607
复制相似问题