基于MATLAB的语音信号检测分析及处理
n则X的熵为 H???pilogpi (2-11)
i?12、线性预测法
线性预测分析的基本思想是:由于语音样点之间存在相关性,所以可以用过去的样点值来预测现在或未来的样点值,即一个语音的抽样能够用过去若干个语音抽样或它们的线性组合来逼近。通过使实际语音抽样和线性预测抽样之间的误差在某个准则下达到最小值来决定唯一的一组预测系数。而这组预测系数就反映了语音信号的特征,可以作为语音信号特征参数用与语音识别、语音合成等。
将线性预测应用与语音信号处理,不仅是因为它的预测功能,而且更重要的是因为它能提供一个非常好的声道模型及模型参数估计方法。线性预测的基本原理和语音信号数字模型密切相关。
11
基于MATLAB的语音信号检测分析及处理
第三章 语音信号检测
3.1清音浊音检测
3.1.1信号采集
该设计以本人的声音为分析样本。。可得出声音的采样频率为11025Hz,且声音是单通道的。利用sound函数,可清晰地听到读音为:“电子信息”的音频信号。采集数据并画出波形图如下所示,fs 为采样频率,x为采样数据,接下来对采样数据作傅里叶变换y=fft(x)并画出频谱图如图1所示,程序如下:
fs=11025; %抽样频率 x=wavread('yin.wav');
sound(x1,11025); %读取语音信号“电子信息” figure(1) subplot(211)
plot(x) %做原始语音信号的时域图形 title('原始语音信号波形');
xlabel('样点数'); %x轴的名字是“样点数” ylabel('幅值 '); %y轴名字是“幅值” grid on; N=128; n=0:N-1;
y=fft(x); %对x进行傅里叶变换 mag=abs(y); %求幅值
f=(0:length(y)-1)'*fs/length(y); %进行对应的频率转换 figure(1) subplot(212)
plot(f,mag); %做原始语音信号的频谱图 xlabel('频率(Hz)'); ylabel('幅值');
title('原始信号频谱图'); grid on;
12
基于MATLAB的语音信号检测分析及处理
图1 原始语音信号波形及频谱图
由频谱图可清楚地看到样本声音主要以低频为主。人的语音信号频率一般集中在200 kHz到4.5 kHz之间,从声音频谱的包络来看,样本声音的能量集中在0.1(1102.5Hz)以内,0.4以外的高频部分很少。所以信号宽度近似取为1.1kHz,由采样定理可得
fs?2fo?2*1102.5?2205HZ。
3.1.2短时能量和短时平均幅度
能量是语音的一个重要特性,由于语音信号的能量随时间变化,清音和浊音之间的能量差别相当显著,清音的能量较小,浊音的能量较大。因此对语音的短时能量进行分析,可以描述语音的这种特征变化情况。短时能量定义为:
En?m????[x(m)w(n?m)]??2?m?n?N?1?n[x(m)w(n?m)]2 (3-1)
其中,W(n)是窗函数,N是窗长。特殊地,当采用矩形窗时,可简化为:
En?m????x(m)2 (3-2)
由此表明,窗口加权短时平均能量En 相当于将“语音平方”信号通过一个单位函数响应为h( n) 的线性滤波器的输出。
本次语音信号的短时平均能量和短时平均幅度如下图2所示及程序如下:
N=240;
Y=wavread('yin.wav');
L=length(Y);
13
基于MATLAB的语音信号检测分析及处理 LL=length(Y)/N; figure(2)
Em=zeros(1,(LL-1)*240); for ii=1:(LL-1)*240, temp=Y(ii:ii+240);
Em(ii)=sum(temp.*temp); end
jj=[1:(LL-1)*240]; subplot(211)
plot(jj, Em,'b'); xlabel('帧数'); ylabel('短时能量'); title('短时平均能量'); grid on;
%短时平均幅度Mn=sum(abs(Y))/N Mn=zeros(1,(LL-1)*240); for ii=1:(LL-1)*240, temp=Y(ii:ii+240); Mn(ii)=sum(abs(temp))/N; end figure(2)
jj=[1:(LL-1)*240]; subplot(212)
plot(jj, Mn,'b'); xlabel('帧数'); ylabel('短时平均幅度'); title('短时平均幅度'); grid on;
%绘制短时平均能量曲线 %绘制短时平均幅度曲线 14
基于MATLAB的语音信号检测分析及处理
图2 短时平均能量和短时平均幅度
由上图发现,语音浊音段的短时平均能量远远大于清音段的短时平均能量。因此,短时平均能量En 的计算给出了区分清音段与浊音段的依据,即En (浊) > En (清)。根据En 由高到低的跳变可定出浊音变为清音语音的时刻, En 由低向高的跳变可定出清音变为浊音语音的时刻,而只有浊音才有基音周期,清音的基音周期为零。故清浊音判断是基音检测的第一步。
该算法中窗口选择汉明窗,选择汉明窗的理由是窗函数的选取原则为窗函数截取后的x ( n) 尽量是中间大两头小的光滑函数,冲激响应对应的滤波器具有低通特性。从汉明窗的构成及频率响应特性上看, 汉明窗具有这种特性, 而矩形窗及汉宁窗则稍逊之。汉明窗虽然主瓣最高(带宽大) ,但旁瓣最低(通带外的衰减大) , 可以有效地克服泄露现象,具有更好的低通特性。故选择汉明窗而不选择别的窗函数,能使短时平均能量En 更能反映语音信号的幅度变化。
短时能量函数的应用:
1)可用于区分清音段与浊音段。En值大对应于浊音段,En值小对应于清音段。
2)可用于区分浊音变为清音或清音变为浊音的时间(根据En值的变化趋势)。
3)对高信噪比的语音信号,也可以用来区分有无语音(语音信号的开始点
15