gpt4 book ai didi

Javascript Audio - createAnalyser 选择频率范围

转载 作者:行者123 更新时间:2023-12-03 10:22:11 26 4
gpt4 key购买 nike

我正在用 javascript 创建音频可视化工具,但我找不到解决方案来限制我正在收听的频率(从 20Hz 到 8K Hz)。这是代码示例:这是初始化函数:

var _context = new AudioContext();
var _analyser = _context.createAnalyser();
_analyser.fftSize = 512;

var _frequencyData = new Uint8Array( _analyser.frequencyBinCount );

这是代表频率增益的条形图。但考虑到我的声音在 8k Hz 之后不会发出任何东西(我认为),在图表的一半之后我什么也没有。

最佳答案

如果我正确理解你的问题,你想要可视化 FFT,但你不希望它显示任何高于 8kHz 的频率。有 2 个选项:

1) 您可以尝试将采样率设置为 16kHz,这将为您提供 8kHz 音频带宽。我不确定浏览器对此的支持。引用https://github.com/WebAudio/web-audio-api/issues/300了解更多详情。

2) 忽略任何超出您所需频率的频率档。可以通过将箱索引乘以箱总数的采样率的 1/2 来找到箱起始频率。例如,对于 48000 处的 512 点 FFT:

bin 0:   0 * 48000.0/2/512 = 0 Hz
bin 511: 511 * 48000.0/2/512 = 23953.125 Hz

通过一点代数,您可以求解包含任何所需频率的 bin #:

startFreq = binNum * sr/2/numBins

因此:

binNum = startFreq * numBins / (sr/2)

8000 * 512 / (48000/2) = 170.67

因此 8kHz 将出现在 48kHz 512 点 FFT 的 _analyzer.getFloatFrequencyData()[170] 中。

您可以从_context.sampleRate确定采样率

关于Javascript Audio - createAnalyser 选择频率范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29576431/

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