audio - "Winamp style"频谱分析仪

标签 audio signal-processing fft spectrum

我有一个程序可以绘制信号的频谱分析(Amp/Freq),这几乎是将 DFT 转换为极坐标。然而,这并不是 winamp(右上角)或任何其他音频软件绘制的那种图表。我不太确定这种图叫什么(如果它有一个不同的名称),所以我不确定要寻找什么。

我对频率轴以 2 指数为基数持肯定态度,但幅度轴让我感到困惑。

任何指针?

最佳答案

其实是个有趣的问题。我知道你在说什么;频率轴肯定是对数的。但是幅度呢?回应另一张海报,幅度不能简单地以 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如何绘制幅度呢?我的猜测:

  • 假设最小幅度为 -6.02b dB,最大幅度为 0 dB。在视觉上,Winamp 会根据这些阈值绘制窗口。
  • 使用另一个非线性映射,例如 log(1+X)。这个函数总是非负的,当 X 很大时,它近似于 log(X)。

  • 有其他高手知道吗?让我知道你的想法。我也很感兴趣,具体是如何实现的。

    关于audio - "Winamp style"频谱分析仪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1997896/

    相关文章:

    c# - 识别字节数组naudio中的静默数据包

    wordpress - 如何在表格中显示WordPress音频播放器

    ios - 与ExtAudioFileRead播放.caf音频文件不同步

    c - 并行应用音频过滤器并合并结果缓冲区

    filtering - DSP - 通过 FFT 在频域中进行滤波

    c - 采样率转换函数中的段错误

    python - FFT - 滤波 - 逆 FFT - 剩余偏移

    html - 有没有办法在 rails/web/html5 上使用 ruby​​ 在 mp4 中录制音频

    algorithm - 如何找到数据的周期性?

    c++ - CUFFT 输出与 FFTW 输出不对齐