首页 > 编程知识 正文

频谱分析法基本原理,基频峰数计算

时间:2023-05-06 11:34:44 阅读:225675 作者:2081

来自《Pitch Extraction and Fundamental Frequency》 David Gerhard

* 找声音基频确实是难的,人类已经研究50多年了,还没有真正准确和强壮的通用方法。
* 学术上通常称声音的pitch detection(音高检测),但实际上说的是基频检测。
* 越接近正余弦振动的信号,高点越不明显
* 在某个测试环境下作的基频检测往往换到另一个环境就不能用了
* 谐振越强,谱峰越明显
* 时域算法
  [基于事件发生率]
    - Zero-crossing rate,过零线率。缺陷:零线附近的毛刺。
    - Peak rate,峰值率。缺陷:需要指定高点的范围
    - Slope event rate,利用坡度变向等事件,比上面两个好点
    小结:时域算法简单易懂。峰值率因其电路简单,多年来一直在硬件实现中很普遍。
  [基于自相关]
    自相关计算的是信号延迟后于原信号的相似程度。自相关计算的结果自己就是周期性的。缺陷在于,当两组峰很近时分组会出问题。
    - YIN Estimator
    - 相位空间
  [基于频域]
    - Componnet Frequency Ratios,把频域分块了计算。
    - 基于滤波器的方法
      。梳式滤波器:当梳式滤波器的频率和基频吻合时,输出的能量最大。缺陷:对计算资源耗费相当大。
      。可调IIR滤波器:
    - 倒谱分析,对幅度谱进行log后再反FFT出来的就是倒谱。适合在谱峰较多且相间较疏的信号,如讲话。http://en.wikipedia.org/wiki/Cepstrum中对各项参数的意义和用法做了说明。
    - 多分辨率。在不同的分辨率下对信号进行分析,如果出来的基频都是差不多的结果那就可以确认了。
  [频域统计的方法]
    - 神经网络,缺陷在于结果是黑盒出来的,不知道计算过程的具体信息。
    - Maximum Likelihood Estimators
* 改善处理结果的方法
  - 可以通过处理输入信号来改善,比如增强输入信号分辨率
  - 在处理听觉系统信号的时候,可以用节省计算资源的constant-Q频谱变换来替代傅里叶变换。
  - Frequency Estimator Tracking,倾向于认为上个时间片计算出来的基频为这次的基频,这样可以节省计算资源。可以用到马科夫链(HMM)。

* 常见的基频评估器的问题:当基频频率低的时候,较高频的谐振经常会被当成基频。YIN算法在这方面比较成功。

* 文中后面对几种现成的分析器进行了测试比较。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。