gpt4 book ai didi

python - 在计算共振峰频率特征时如何确定线性预测系数(LPC)中的滤波器阶数?

转载 作者:行者123 更新时间:2023-12-02 22:52:23 25 4
gpt4 key购买 nike

我是信号处理的新手,正在尝试为不同的.wav文件计算共振峰频率特征。

为了计算共振峰频率,我需要三个参数值:

  • 线性预测系数(LPC)
  • Angular

  • 我正在尝试在python中使用librosa.core.lpc计算线性预测系数(LPC)。它带有两个参数:
    librosa.core.lpc(y, order)

    我有Y,但我不知道如何计算顺序,我有很多.wav文件,我必须设置顺序以从所有文件中提取特征。如何确定所有wav文件计算LPC的顺序?

    接下来的两件事根和 Angular 可以很容易地像这样计算:
     rts = numpy.roots(A)
    rts = [r for r in rts if numpy.imag(r) >= 0]

    angz = numpy.arctan2(numpy.imag(rts), numpy.real(rts))

    # Get frequencies.
    Fs = spf.getframerate()
    frqs = sorted(angz * (Fs / (2 * math.pi)))

    先感谢您!

    最佳答案

    LPC的顺序背后没有确切的科学依据,尽管有两个经验法则:

  • 一个期望找到的共振峰数量加两倍,再加上两个。 Systematic errors in the formant analysis of steady-state vowels中提供的解释:每个共振峰对应于一个阻尼正弦曲线,可以用一对具有正确频率和阻尼的根来捕获(一个根是另一个的复共轭)。有两个额外的系数“以防万一”以吸收信号
  • 中的剩余能量
  • 采样频率(kHz)。如果Fs=1600016kHz,则将order设置为16。

  • 第一种方法似乎更受欢迎,并且例如在US专利No.4,235,235中描述。在 Mathworks page上。

    关于优化的注意事项

    与这个问题无关,但我无法抗拒对代码进行两次小的调整,以使其变得更加 NumPy :
    import numpy as np
    import librosa

    A = librosa.core.lpc(y, 12)
    rts = np.roots(A)
    rts = rts[np.imag(rts) >= 0]
    angz = np.arctan2(np.imag(rts), np.real(rts))
    frqs = angz * fs / (2 * np.pi)
    frqs.sort()

    关于python - 在计算共振峰频率特征时如何确定线性预测系数(LPC)中的滤波器阶数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61519826/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com