javascript - webaudio 的 AnalyserNode 的 FFT 值超出范围

标签 javascript fft web-audio-api

我正在尝试使用 Web-Audio 的分析器节点并不断从中得到奇怪的结果。

代码:

var self = this;
var bufferSize = 512;
var spectrum = new Float32Array(bufferSize/2);

self.analyser = audioContext.createAnalyser();
self.analyser.fftSize = bufferSize;
self.analyser.smoothingTimeConstant = 0;
self.analyser.minDecibels = -120;
self.analyser.maxDecibels = 0;
self.analyser.getFloatFrequencyData(spectrum);
source.connect(self.analyser);

即使我明确设置了最大和最小分贝的值,我仍然得到小于 -120 的值,例如 -180。

此外,当我console.log 分析器时,我发现值确实发生了变化,但 FFT 给出的值仍然低于预期。

我正在使用立体声 mp3 文件对其进行测试,这可能是个问题吗?

有什么想法吗?

最佳答案

最小和最大分贝仅影响 getByteFrequencyData 值,而不影响 getFloatFrequencyData 值。 “用于转换为无符号字节值的 FFT 分析数据的缩放范围内的最小/最大功率值。”

关于javascript - webaudio 的 AnalyserNode 的 FFT 值超出范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26241430/

相关文章:

javascript - Web Audio API createMediaElementSource 破坏音频标签

javascript - 两个ajax表单不能同时工作

javascript - 我应该为 JS 事件触发器使用哪个 HTML5 标签

javascript - 单击复选框时保留 Google map 缩放到 kml 图层

ios - 从录制的声音中消除已知音频,通过反卷积估计背景声级

matlab - 时域/频谱/DSP

javascript - 单击不同元素时更改元素的背景颜色

python - 返回Numpys FFT数据并在音频文件中查找每秒的幅度和频率

javascript - 在源节点上调用 stop() 是否会触发结束事件?

javascript - 在 iOS 浏览器上将商品添加到购物车时播放声音