数字音频处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数字语音实验
吕佩壕 10024134
一、实验要求
1.编程实现一句话语音的短时能量曲线,并比较窗长、窗口形状(以直 角窗和和哈明窗为例)对短时平均能量的影响 ;
2. 编程分析语音信号的短时谱特性,并比较窗长、窗口形状(以直角窗 和和哈明窗为例)对语音短时谱的影响 ;
3. 运用低通滤波器、中心削波和自相关技术估计一段男性和女性语音信 号的基音周期,画出基音轨迹曲线,给出估计准确率。
二、实验原理及实验结果
1.窗口的选择
通过对发声机理的认识,语音信号可以认为是短时平稳的。在5~50ms 的范围内,语音频谱特性和一些物理特性参数基本保持不变。我们将每个短时的语音称为一个分析帧。一般帧长取10~30ms 。我们采用一个长度有限的窗函数来截取语音信号形成分析帧。通常会采用矩形窗和汉明窗。图1.1给出了这两种窗函数在窗长N=50时的时域波形。
图1.1 矩形窗和hamming 窗的时域波形
矩形窗的定义:一个N 点的矩形窗函数定义为如下:
{1,00,()n N
w n ≤<=其他
Hamming 窗的定义:一个N 点的hamming 窗函数定义为如下:
0.540.46cos(2),010,()n n N N w n π-≤<-⎧⎨⎩
其他
=
这两种窗函数都有低通特性,通过分析这两种窗的频率响应幅度特性可以发
0.2
0.40.60.811.2
1.41.61.82矩形窗
sample
w (n )
0.1
0.20.30.40.50.6
0.70.80.91hanming 窗
sample
w (n )
现(如图1.2):矩形窗的主瓣宽度小(4*pi/N ),具有较高的频率分辨率,旁瓣峰值大(-13.3dB ),会导致泄漏现象;汉明窗的主瓣宽8*pi/N ,旁瓣峰值低(-42.7dB ),可以有效的克服泄漏现象,具有更平滑的低通特性。因此在语音频谱分析时常使用汉明窗,在计算短时能量和平均幅度时通常用矩形窗。表1.1对比了这两种窗函数的主瓣宽度和旁瓣峰值。
图1.2 矩形窗和Hamming 窗的频率响应
2.短时能量
由于语音信号的能量随时间变化,清音和浊音之间的能量差别相当显著。因此对语音的短时能量进行分析,可以描述语音的这种特征变化情况。定义短时能量为:
2
2
1
[()()]
[()()]n
n m m n N E x m w n m x m w n m ∞
=-∞
=-+=
-=
-∑∑
,其中N 为窗长
特殊地,当采用矩形窗时,可简化为:
2
()
n m E x
m ∞
=-∞
=
∑
图2.1和图2.2给出了不同矩形窗和hamming 窗长,对所录的语音“我是吕佩壕”的短时能量函数:
(1)矩形窗(从上至下依次为“我是吕佩壕”波形图,窗长分别为32,64,128,256,512的矩形窗的短时能量函数):
00.10.20.3
0.40.50.60.70.80.91
-80
-60-40-20
0矩形窗频率响应
归一化频率(f/fs)幅度/d B
00.10.20.3
0.40.50.60.70.80.91
-100
-50
Hamming 窗频率响应
归一化频率(f/fs)
幅度/d B
图2.1矩形窗
(2)hamming窗(从上至下依次为“我是吕佩壕”波形图,窗长分别为32,64,128,256,512的hamming窗的短时能量函数):
图2.2 hamming窗
我们发现:在用短时能量反映语音信号的幅度变化时,不同的窗函数以及相应窗的长短均有影响。hamming窗的效果比矩形窗略好。但是,窗的长短影响起决定性作用。窗过大(N 很大),等效于很窄的低通滤波器,不能反映幅度En 的变化;窗过小( N 很小),短时能量随时间急剧变化,不能得到平滑的能量函数。在11.025kHz左右的采样频率下,N 选为100~200比较合适。
短时能量函数的应用:1)可用于区分清音段与浊音段。En值大对应于浊音段,En值小对应于清音段。2)可用于区分浊音变为清音或清音变为浊音的时间(根据En值的变化趋势)。3)对高信噪比的语音信号,也可以用来区分有无语音(语音信号的开始点或终止点)。无信号(或仅有噪声能量)时,En值很小,有语音信号时,能量显著增大。
Matlab程序:
figure(3);
a=wavread('C:\audio.wav');
subplot(6,1,1),plot(a);
N=32;
for i=2:6
h=rectwin(2.^(i-2)*N);
b=a.*a;
En=conv2(h,b); % 求短时能量函数En
subplot(6,1,i),plot(En);
i=i+1;
if(i==2) legend('N=32');
elseif(i==3) legend('N=64');
elseif(i==4) legend('N=128');
elseif(i==5) legend('N=256');
elseif(i==6) legend('N=512');
end
end
figure(4);
a=wavread('C:\audio.wav');
subplot(6,1,1),plot(a);
N=32;
for i=2:6
h=hamming(2.^(i-2)*N); %形成一个汉明窗,长度为2.^(i-2)*N b=a.*a;
En=conv2(h,b); % 求短时能量函数En
subplot(6,1,i),plot(En);
i=i+1;
if(i==2) legend('N=32');
elseif(i==3) legend('N=64');
elseif(i==4) legend('N=128');
elseif(i==5) legend('N=256');
elseif(i==6) legend('N=512');
end
end