为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

芜湖不芜 2022-11-01 17:11:43
我是信号处理的新手,并试图计算不同 .wav 文件的共振峰频率特征。为了计算共振峰频率,我需要三个参数值:线性预测系数 (LPC)根角度我正在尝试在 python 中使用 librosa.core.lpc 计算线性预测系数( LPC )。它需要两个参数:librosa.core.lpc(y, order)我有 Y 但我不知道如何计算顺序,我有很多 .wav 文件,我必须设置顺序才能从所有文件中提取特征。如何确定所有wav文件计算LPC的顺序?接下来的两件事根和角度可以像这样轻松计算: 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)))先感谢您!
查看完整描述

1 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

应该使用的 LPC 顺序背后没有精确的科学,但有两条经验法则:

  1. 一个期望找到的共振峰数量的两倍,再加上两个。稳态元音共振峰分析中的系统误差中提供的解释:每个共振峰对应于一个阻尼正弦曲线,可以由一对具有正确频率和阻尼的根捕获(其中一个根是其他)。两个额外的系数“以防万一”以吸收信号中的任何剩余能量

  2. 以 kHz 为单位的采样频率。如果Fs=16000ie 16kHz,将 order 设置为 16。

第一种方法似乎更流行一些,例如在Mathworks 页面上进行了描述。

优化注意事项

与问题无关,但我忍不住对代码提出了两个小调整,以使其更加麻木:

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()


查看完整回答
反对 回复 2022-11-01
  • 1 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信