首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在计算共振峰频率特征时,如何确定线性预测系数( LPC )中的滤波器阶数?

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

Stack Overflow用户
提问于 2020-04-30 09:10:15
回答 1查看 1.3K关注 0票数 1

我是新的信号处理和试图计算不同的.wav文件的共振峰频率特征。

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

  • 线性预测系数
  • 根部
  • 夹角

我试图在python中使用librosa.core.lpc计算线性预测系数。它需要两个参数:

代码语言:javascript
复制
librosa.core.lpc(y, order)

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

接下来的两件事--根和角度--可以像这样简单地计算出来:

代码语言:javascript
复制
 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)))

提前谢谢你!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-04-30 16:34:05

LPC的使用顺序没有确切的科学依据,尽管有两条经验法则:

  1. 是一个人期望找到的数量的两倍,再加上两个。如稳态元音共振峰分析中的系统误差中所提供的解释:每个共振峰对应于一个阻尼正弦波,它可以被一对具有正确频率和阻尼的根捕获(其中一个根部是另一个根的复杂共轭)。这两个额外的系数是“以防万一”,以吸收信号中的剩余能量。
  2. kHz中的采样频率。如果Fs=1600016kHz,则将顺序设置为16。

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

关于优化的说明

与这个问题无关,但我忍不住对代码进行了两个小的修改,使其变得更加粗俗:

代码语言:javascript
复制
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()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61519826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档