语音信号处理(3)使用LPC系数估计共振峰频率


前言

这个例子展示了如何使用线性预测编码(LPC)来估计元音共振峰频率。共振峰频率通过求解预测多项式的根来获得。

一、共振峰频率(Formant Frequencies):

共振峰(Formant)是指在声音的频谱中,由于声道形状的变化而产生的频率上的峰值。这些峰值对应于声音在声道中的共振频率,它们是语音信号中的主要谐波成分,对语音的识别和理解至关重要。

1.共振峰频率的定义

共振峰频率是指在声音频谱中,由于声道的共振作用而增强的特定频率。它们是语音信号的频谱包络上的局部极大值。

2.声道的影响

声道的形状和大小决定了哪些频率会被增强。不同的发音位置和方式会导致不同的共振峰频率。

3.主要共振峰

F1(第一共振峰):通常对应于喉部到嘴唇的声道长度,影响元音的“开放性”(openness)。
F2(第二共振峰):与舌头的位置有关,影响元音的前后位置。
F3(第三共振峰):与舌根的位置有关,对元音的识别也有一定的影响。
F4及以上:这些更高的共振峰对语音的细微差异也有贡献,但不如前三个共振峰显著。

4.元音识别

不同的元音主要通过它们的共振峰频率来区分。例如,英语中的元音 /i/(如“see”)通常有较高的F1和F2,而元音 /u/(如“too”)则有较低的F1和F2。

5.共振峰频率的测量

共振峰频率可以通过频谱分析来测量。常见的方法包括:
线性预测编码(Linear Predictive Coding, LPC):通过分析语音信号的频谱来估计共振峰。

倒谱分析(Cepstral Analysis):利用倒谱来提取共振峰信息。

频谱峰值检测:直接在频谱上寻找峰值来确定共振峰频率。

6.应用

共振峰频率的分析在语音合成、语音识别和语音转换等领域中都有重要应用。例如,在语音合成中,通过调整共振峰频率可以模拟不同的元音和语音特征。

共振峰是语音信号中非常重要的特征,因为它们携带了关于发音方式和内容的大部分信息。理解和分析共振峰对于语音技术的研发和应用至关重要。

二、使用LPC系数估计共振峰频率MATLAB仿真

加载语音信号。采样频率为7418Hz。

load mtlb;

MAT文件包含语音波形mtlb和采样频率Fs。
使用频谱图识别一个用于分析的有声段。

segmentlen = 100;
noverlap = 90;
NFFT = 128;
[y,f,t,p] = spectrogram(mtlb,segmentlen,noverlap,NFFT,Fs);
surf(t,f,10*log10(abs(p)),'EdgeColor','none');
axis xy; axis tight; colormap(jet); view(0,90);
xlabel('时间');
ylabel('频率 (Hz)');

从0.1到0.25秒提取一个段用于分析。提取的段大致对应于“MATLAB”中的第一个元音/ae/。

dt = 1/Fs;
I0 = round(0.1/dt);
Iend = round(0.25/dt);
x = mtlb(I0:Iend);

在应用线性预测编码之前,通常会对语音波形进行两个预处理步骤:加窗和预加重(高通)滤波。
使用汉明窗对语音段进行加窗。

x1 = x.*hamming(length(x));

应用预加重滤波器。预加重滤波器是一个高通全极点(AR(1))滤波器。

preemph = [1 0.63];
x1 = filter(1,preemph,x1);

获取线性预测系数。为了指定模型阶数,使用的一般规则是阶数是预期共振峰数的两倍再加2。在频率范围[0,Fs/2]内,你预期有3个共振峰。因此,将模型阶数设置为8。找到由lpc返回的预测多项式的根。

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

因为LPC系数是实值的,所以根以复共轭对的形式出现。只保留虚部为正的根,并确定与根相对应的角度。

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

将角度表示的弧度/样本的角频率转换为赫兹,并计算共振峰的带宽[1]。
共振峰的带宽由预测多项式零点与单位圆的距离表示。

 [frqs,indices] = sort(angz.*(Fs/(2*pi)));
bw = -1/2*(Fs/(2*pi))*log(abs(rts(indices)));

使用共振峰频率应大于90 Hz且带宽小于400 Hz的标准来确定共振峰[2]。

nn = 1;
for kk = 1:length(frqs)
    if (frqs(kk) > 90 && bw(kk) <400)
        formants(nn) = frqs(kk);
        nn = nn+1;
    end
end
formants

前三个共振峰分别是869.70, 2026.49, 和 2737.95 Hz。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值