“Winamp风格”频谱​​分析仪

时间:2010-01-04 06:51:27

标签: audio signal-processing fft spectrum

我有一个程序可以绘制信号的频谱分析(Amp / Freq),这很可能是DFT转换为极性的。然而,这并不完全是那种图形,例如winamp(位于左上角),或者实际上是任何其他音频软件图。我不确定这种图形叫什么(如果它有一个不同的名称),所以我不确定要寻找什么。

关于频率轴是基数两个指数,我很正面,但振幅轴让我很困惑。

任何指针?

4 个答案:

答案 0 :(得分:3)

实际上是一个有趣的问题。我知道你在说什么;频率轴肯定是对数的。但振幅怎么样?作为对另一张海报的回应,幅度不能仅以dB为单位,因为dB没有零概念。这引入了量化误差,SNR和动态范围的概念。

假设接收的数字化(即离散时间和离散幅度)时域信号x [n]等于s [n] + e [n],其中s [n]是发送的离散信号 - 时间信号(即连续幅度)和e [n]是量化误差。假设x [n]用b位表示,为简单起见,取[0,1]中的值。那么e [n]的最大峰峰值幅度是一个量化电平,即2 ^ { - b}。

动态范围定义为,以分贝为单位,20 log10(最大峰 - 峰| s [n] |)/(最大峰 - 峰| e [n] |)= 20 log10 1 /(2 ^ { - b})= 20b log10 2 = 6.02b dB。对于16位音频,动态范围为96 dB。对于8位音频,动态范围为48 dB。

那么Winamp的幅度如何?我的猜测:

  1. 假设最小幅度为-6.02b dB,最大幅度为0 dB。在视觉上,Winamp在考虑这些门槛的情况下绘制了窗口。

  2. 使用另一个非线性映射,例如log(1 + X)。此函数始终为非负,当X很大时,它近似于log(X)。

  3. 那里有谁知道其他专家?让我知道你的想法。我也很感兴趣,这是如何实现的。

答案 1 :(得分:2)

要生成功率谱,您需要执行以下步骤:

  • 将窗口函数应用于时域数据(例如汉宁窗口)
  • 计算FFT
  • 计算FFT的N / 2点(通常为10 * log10(re * re + im * im)
  • 的FFT bin幅度的对数

这给出了对数幅度(即dB)与线性频率的对比。

如果您还想要一个对数频率刻度,那么您需要从适当的二进制范围累加幅度(并且您需要一个相当大的FFT开始)。

答案 2 :(得分:0)

嗯,我不是百分之百确定你的意思,但肯定只是从FFT中剔除数据?

如果你想得到的数据是(你的44Khz文件)频率点为22Khz,11Khz 5.5Khz等,你可以使用小波分解,我猜......

这个帖子可能有点帮助......

Converting an FFT to a spectogram

与我猜测的频谱图相同的信息......

答案 3 :(得分:0)

您需要的是功率谱图。您必须计算信号当前窗口的DFT。然后平方每个值。