gpt4 book ai didi

c - 如何在 C 中使用 FFTW 从 PortAudio 的样本中提取频率信息

转载 作者:太空狗 更新时间:2023-10-29 16:34:03 26 4
gpt4 key购买 nike

我想制作一个使用 PortAudio 录制音频数据的程序(我已经完成了这部分),然后显示录制音频的频率信息(现在,我想显示每个音频的平均频率样本组)。

根据我所做的一些研究,我知道我需要进行 FFT。所以我用 C 语言搜索了一个库来做这件事,然后找到了 FFTW。

但是,现在我有点迷茫了。我应该如何处理我录制的样本以从中提取一些频率信息?我应该使用哪种 FFT(我假设我需要一个真实的一维数据?)?

一旦我进行了 FFT,我如何从它提供给我的数据中获取频率信息?

编辑:我现在也找到了自相关算法。好点吗?更简单?

在此先感谢您,抱歉,我完全没有这方面的经验。我希望它至少有一点意义。

最佳答案

将音频样本转换为功率谱:

  • 如果您的音频数据是整数数据,则将其转换为 float
  • 选择 FFT 大小(例如 N=1024)
  • 申请window function到 N 个数据样本(例如 Hanning )
  • 使用大小为 N 的实数到复数 FFT 生成频域数据
  • 计算复杂频域数据的幅度 (magnitude = sqrt(re^2 + im^2))
  • 可选择将幅度转换为对数刻度 (dB) (magnitude_dB = 20*log10(magnitude))

关于c - 如何在 C 中使用 FFTW 从 PortAudio 的样本中提取频率信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3058236/

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