Audio &引用;“Winamp风格”;频谱分析仪

Audio &引用;“Winamp风格”;频谱分析仪,audio,signal-processing,fft,spectrum,Audio,Signal Processing,Fft,Spectrum,我有一个程序,可以绘制信号的频谱分析(Amp/Freq),这在很大程度上是DFT转换为极坐标的结果。然而,这并不完全是winamp(左上角的右侧)或任何其他音频软件绘图的图形。我真的不确定这种图叫什么(如果它有一个独特的名字的话),所以我不确定要找什么 我对频率轴是以两个指数为基数的看法是肯定的,但振幅轴让我困惑 有什么指示吗?我不是100%确定你的意思,但肯定只是从FFT中提取数据 如果你想得到这样的数据,你有(对于一个44Khz的文件)在22Khz,11Khz,5.5Khz等频率点,那么你可

我有一个程序,可以绘制信号的频谱分析(Amp/Freq),这在很大程度上是DFT转换为极坐标的结果。然而,这并不完全是winamp(左上角的右侧)或任何其他音频软件绘图的图形。我真的不确定这种图叫什么(如果它有一个独特的名字的话),所以我不确定要找什么

我对频率轴是以两个指数为基数的看法是肯定的,但振幅轴让我困惑


有什么指示吗?

我不是100%确定你的意思,但肯定只是从FFT中提取数据

如果你想得到这样的数据,你有(对于一个44Khz的文件)在22Khz,11Khz,5.5Khz等频率点,那么你可以使用小波分解,我猜

这条线可能对你有点帮助


与光谱图相同的信息我猜…

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

  • 对时域数据应用窗口功能(例如汉宁窗口)
  • 计算FFT
  • 计算N/2个FFT点的FFT箱震级对数(通常
    10*log10(re*re+im*im)
这给出了对数幅度(即dB)与线性频率的关系


如果您还需要对数频率标度,那么您需要从适当范围的容器中累积幅值(并且您需要一个相当大的FFT来开始)。

实际上是一个有趣的问题。我知道你在说什么;频率轴当然是对数的。但是振幅呢?在另一张海报上,振幅不能仅仅以dB为单位,因为dB没有零的概念。本文介绍了量化误差、信噪比和动态范围的概念

假设接收的数字化(即,离散时间和离散幅度)时域信号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如何绘制振幅呢?我猜:

  • 假设最小振幅为-6.02b dB,最大振幅为0 dB。从视觉上看,Winamp在绘制窗口时考虑了这些阈值

  • 使用另一个非线性映射,如log(1+X),该函数总是非负的,当X较大时,它近似于log(X)


  • 还有其他专家知道吗?让我知道你的想法。我也很感兴趣,这到底是如何实现的。

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

    这可能很有意思:。