文章目录
前言
这个例子展示了如何使用线性预测编码(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。