文档

LPC系数的共振峰估计

此示例显示了如何使用线性预测编码(LPC)估算元音赋量频率。通过找到预测多项式的根来获得共振峰频率。

This example uses the speech samplemtlb.mat,这是信号处理工具箱™的一部分。演讲是低通过滤的。由于采样频率较低,因此该示例的语音样本不是最佳的。低采样频率限制了您可以适合数据的自回旋模型的顺序。尽管有这种限制,但该示例说明了使用LPC系数来确定元音实扣的技术。

加载语音信号。录音是一个女人说“Matlab®”。采样频率为7418 Hz。

加载MTLB

垫子文件包含语音波形,MTLB,以及采样频率,Fs

使用频谱图函数以识别有声段以进行分析。

分段= 100;noverlap = 90;NFFT = 128;频谱图(MTLB,分段,Noverlap,nfft,fs,'yaxis') 标题(“信号谱图”

Extract the segment from 0.1 to 0.25 seconds for analysis. The extracted segment corresponds roughly to the first vowel, /ae/, in "MATLAB".

dt = 1/fs;i0 =圆形(0.1/dt);iend =圆形(0.25/dt);x = mtlb(i0:iend);

在线性预测编码之前,将两个常见的预处理步骤应用于语音波形,是窗口和前强调(高通)过滤。

Window the speech segment using a Hamming window.

x1 = x。*hamming(长度(x));

应用前重点过滤器。预先强调过滤器是高通通滤(AR(1))滤波器。

preemph = [1 0.63];x1 =滤波器(1,premph,x1);

获得线性预测系数。要指定模型顺序,请使用一般规则,即订单是实式的预期数量加2​​的两倍。在频率范围[0,| fs |/2]中,您期望三个共振体。因此,将模型顺序设置为等于8的模型顺序LPC

A = lpc(x1,8); rts = roots(A);

由于LPC系数是实现的,因此根部出现在复杂的共轭对中。仅保留一个符号的根部,并确定与根相对应的角度。

rts = rts(imag(rts)> = 0);angz = atan2(imag(rts),real(rts));

在RAD/样品中转换成角度的角频率,以赫兹的角度表示,并计算共振峰的带宽。

The bandwidths of the formants are represented by the distance of the prediction polynomial zeros from the unit circle.

[frqs,indices] = stort(angz。*(fs/(2*pi)));bw = -1/2*(fs/(2*pi))*log(abs(rts(indices)));

使用以下标准,即强义频率应大于90 Hz,带宽小于400 Hz来确定共振峰。

nn = 1;为了kk = 1:长度(FRQ)如果(FRQS(kk)> 90 && bw(kk)<400)formants(nn)= frqs(kk);nn = nn+1;endend实力
实扣=1×3103×0.8697 2.0265 2.7380

前三个实力为869.70、2026.49和2737.95 Hz。

References

[1] Snell,Roy C.和Fausto Milinazzo。“从LPC分析数据中的共振体位置”。IEEE®交易有关语音和音频处理。卷。1,第2卷,1993年,第129-134页。

[2] Loizou, Philipos C. "COLEA: A MATLAB Software Tool for Speech Analysis."