【问题标题】:How to properly nomalisation an array to plot spectrogram如何正确规范化数组以绘制频谱图
【发布时间】:2016-09-02 00:39:47
【问题描述】:

我已经获得了每个时间和频率的二维幅度数组。但是,要绘制频谱图,像素强度应根据幅度级别(例如红色最高绿色最低)。

(我从 FFT 和 sqrt(real^2+img^2) 得到幅度)

首先我将其转换为对数刻度 10*log10(amplitude^2) (*我不知道当amp为0时如何管理,没有错误出现)

然后,我只需找到 Mix_amp 并将所有元素缩放到 0-1 之间的值。

问题是。当从无噪声声音生成频谱图时,例如计算机生成 20-20kHz 的扫频声音,我得到了一条很好的向上直线。但是,对于实际歌曲,频谱图的特征似乎不够明显,因此当我想在后期应用峰值查找时会很困难。

我是否做了不适合流程的事情?

【问题讨论】:

    标签: signal-processing spectrogram


    【解决方案1】:

    您可能在真实歌曲中找不到单峰。

    即,一个和弦具有 3 个或更多基音 + 每个基音的泛音。

    此外,多种乐器可能会以不同的强度演奏不同的音调。

    通过窗口内的总功率进行标准化,而不是 Max Amp。如果频率包含超过该功率的 x%,则您已找到峰值。

    如果您的音调接近,则需要处理频谱泄漏问题。使用适当的窗口和/或更大的 FFT 可能有助于区分。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-25
      • 2013-05-07
      • 1970-01-01
      • 1970-01-01
      • 2018-06-05
      • 2019-04-30
      • 1970-01-01
      • 2015-02-26
      相关资源
      最近更新 更多