用修正的短时自相关检测语音的基因周期
- 格式:doc
- 大小:213.50 KB
- 文档页数:7
太原理工大学
语音信号处理课程实验报告
专业班级
学号
姓名
指导教师
实验名称用修正的短时自相关检测语音的基因周期同组人
专业班级学号姓名成绩
一、实验目的
1.熟悉前一个实验程序以及中心削波的意义。
2.用Matlab实现用修正的短时自相关检测语音的基音周期。
3.分析修正的短时自相关在基音周期检测中的应用。
4.能够对程序进行重新编制。
二、实验原理
如果x(n) 是一个周期为P 的信号,则其自相关函数也是周期为P的信号,且在信号周期的整数倍处,自相关函数取最大值。
语音的浊音信号具有准周期性,其自相关函数在基音周期的整数倍处取最大值。
计算两相邻最大峰值间的距离,就可以估计出基音周期。
观察浊音信号的自相关函数图,其中真正反映基音周期的只有少数几个峰,而其余大多数峰都是由于声道的共振特性引起的。
因此为了突出反映基音周期的信息,同时压缩其他无关信息,减小运算量,有必要对语音信号进行适当预处理后再进行自相关计算以获得基音周期。
第一种方法是先对语音信号进行低通滤波,再进行自相关计算,因为语音信号包括十分丰富的谐波分量,基音频率的范围分布宰0~500Hz左右,即使女高音升c调最高也不会超过1Kz,所以采用1Kz的低通滤波器先对语音信号进行滤波,保留基音频率,再用2Kz采样频率进行采样;最后用2~20ms的滞后时间计算短时自相关,帧长取10~20ms,即可估计出基音周期。
且中心削波函数如式(3-1)
一般削波电平 X
取本帧语音幅度的60%~70%。
将削波后的序列 f(x) 用短时自相关
L
函数估计基音周期,在基音周期位置的峰值更加尖锐,可以有效减少倍频或半频错误。
三、实验要求
1.实验前自己用Cool Edit 音频编辑软件录制浊音部分,并把它保存为.txt文件。
2.分别取长度N=160和N’=N+K的矩形窗函数作用于语音信号上,首先对其进行中心削
迟为0<K<160时的相关值,并且用得到的相关值来检测语音信号的基音周期,用MATLAB
画出图形。
3.写出实验报告,分析实验结果。
四、实验步骤
1、用Cool Edit 读入浊音语音,设置采样率为8kHz,16位,单声道。
2、将读入的语音wav文件保存为txt文件。
3、编程实现中心削波前后的语音波形。
五、实验程序
fid=fopen('qingyin.txt','rt'); [a,count]=fscanf(fid,'%f',[1,inf]); L=length(a); m=max(a); for i=1:L a(i)=a(i)/m;
end m=max(a); n=min(a); ht=(m+n)/2; for i=1:L a(i)=a(i)-ht; end figure(1); subplot(2,1,1); plot(a,'k'); axis([0,350,-1,1]); title('中心削波前语音波形'); xlabel('样点数'); ylabel('幅度值'); coeff=0.7;
th0=max(a)*coeff;
for k=1:L if a(k)>=th0
a(k)=a(k)-th0; elseif a(k)<=(-th0)
a(k)=a(k)+th0; else a(k)=0; end end m=max(a); for i=1:L a(i)=a(i)/m; End subplot(2,1,2); plot(a,'k'); axis([0,350,-1,1]); title('中心削波后语音波形'); xlabel('样点数'); ylabel('幅度值'); fclose(fid); fid=fopen('zhuoyin.txt','rt'); [b,count]=fscanf(fid,'%f',[1,inf]); fclose(fid); N=160; A=[]; for k=1:160 sum=0; for m=1:N
sum=sum+b(m)*b(m+k-1); end A(k)=sum; end for k=1:160
B(k)=A(k)/A(1);
end figure(2); subplot(2,1,1); plot(B,'k'); title('中心削波修正自相关'); xlabel('延时k'); ylabel('幅度值'); axis([0,160,-1,2]); N=160; A=[]; for k=1:160 sum=0; for m=1:N sum=sum+a(m)*a(m+k-1); end
A(k)=sum; end for k=1:160 C(k)=A(k)/A(1); end subplot(2,1,2); plot(C,'k')
title('中心削波修正自相关');
xlabel('延时k'); ylabel('幅度值'); axis([0,160,-1,2]);
六、实验结果
浊音的修正短时自相关如下图
清音的修正短时自相关如下图
七、思考题
1、在相同的实验环境下,用Matlab程序实现程序短时自相关检测语音的基音周期的图形,并与修正的短时自相关进行比较。
答:修正自相关使得在基音周期位置的峰值更加尖锐,使得由于声道共振特性引起的峰值有效减少,从而减少倍频或半频错误。
2、用Matlab程序实现语音信号的三电平削波,再对它进行修正的短时自相关。
并与中心削波进行对比。
分析它们在语音信号处理中的应用。
答:为了克服短时自相关函数计算量大的问题,在中心削波法的基础上,可以采用三电平削波法,这种信号的短时自相关函数的计算实际上是不需要乘法运算的,这就大大节省了计算时间。
八、实验心得
在修正的短时自相观检测语音的基音周期实验中,进一步了解了语音修正短时自相关以及中心削波的意义,分析了解修正的短时自相关在基音周期检测中的应用。
让我们学到了很多东西,动手能力增强。
在做实验的过程中最重要的是程序的正确编写,尤其是MATLAB必须不能有丝毫偏差,实验全程都必须细心认真,我们学习、生活中也必须这样做所不能缺少的。
通过这次实验也让我认识到了合作交流的重要性,当遇到问题时要学会与老师和同学们交流,找到最好最有效的方法。