gpt4 book ai didi

javascript - 对 8 位 PCM 信号进行 FFT

转载 作者:行者123 更新时间:2023-12-02 14:54:09 25 4
gpt4 key购买 nike

我在node-js中使用这个快速傅里叶变换实现: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 之间的值吗?如果是,如何转换?

最佳答案

根据这个article在 Wikipedia 上,您应该能够获取 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
})

关于javascript - 对 8 位 PCM 信号进行 FFT,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35959607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com