太原理工大学语音信号实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

太原理工大学现代科技学院
语音信号处理课程实验报告
太原理工大学现代科技学院实验报告
实验名称 语音短时平均能量的实现 同组人 专业班级 学号 姓名 成绩
一、实验目的 1、熟悉Matlab 基本程序的运用。

2、充分理解取不同窗长时的语音短时平均能量的变化情况。

3、熟悉Matlab 编程语言在语音信号处理中的作用。

4、能够实现程序的重新编制。

二、实验要求 1、实验前自己用Cool Edit 音频编辑软件录制声音“我到北京去”,并把它保存为.txt 文件。

2、编程实现不同矩形窗长N=50、100、400、800的短时平均能量。

3、用Matlab 画出不同窗长的短时平均能量的图形。

4、写出实验报告,分析实验结果。

三、实验步骤 1、用Cool Edit 读入语音“我到北京去”。

设置采样率为8kHz,16位,单声道。

2、将读入的语音wav 文件保存为txt 文件。

3、把保存的文件speech.txt 读入Matlab 。

四、程序及运行成果 fid=fopen('zxq.txt','rt');
x=fscanf(fid,'%f'); fclose(fid); s=fra(50,25,x) s2=s.^2; energy=sum(s2,2) subplot(2,2,1) plot(energy) xlabel('帧数') ylabel('短时能量 E') legend('N=50') axis([0,1000,0,4* 10^8]) s=fra(100,50,x) s2=s.^2; energy=sum(s2,2) subplot(2,2,2) plot(energy) xlabel('帧数') ylabel('短时能量 E') legend('N=100') axis([0,500,0,8* 10^8]) s=fra(400,200,x) s2=s.^2; ……………………………………装………………………………………订…………………………………………线………………………………………
太原理工大学现代科技学院实验报告
energy=sum(s2,2) subplot(2,2,3) plot(energy) xlabel('帧数') ylabel('短时能量 E') legend('N=400') axis([0,150,0,3* 10^9]) s=fra(800,400,x) s2=s.^2; energy=sum(s2,2) subplot(2,2,4) plot(energy) xlabel('帧数') ylabel('短时能量 E') legend('N=800') axis([0,75,0,6* 10^9])
五、思考题 1、通过改动不同的窗长和窗移,观看短时平均能量的变化。

……………………………………装………………………………………订…………………………………………线………………………………………
太原理工大学现代科技学院实验报告
答:窗长越小短时平均能量越小,细节越多,随着窗长的增大短时平均能量越大,曲线越光滑,个别细节被平滑掉了。

2、在相同的实验环境下,把本文中的矩形窗改成hamming 窗,来实现语音短时平均能量。

……………………………………装………………………………………订…………………………………………线………………………………………
太原理工大学现代科技学院实验报告
实验名称 语音修正的短时自相关的实现 同组人 专业班级 学号 姓名 成绩
一、实验目的
1、熟悉语言修正自相关的意义。

2、充分理解取不同窗长时的语言的修正自相关的变化情况。

3、熟悉Matlab 编程语言在语言信号处理中的作用。

4、 能够实现程序的重新编制。

二、实验要求 1、实验前自己用Cool Edit 音频编辑软件录制声音,并把它保存为.txt 文件。

2、编程实现不同矩形窗长N=320,160,70的短时修正自相关。

3、用Matlab 画出短时修正自相关的图形。

4、写出实验报告,分析实验结果。

三、实验步骤 1、用Cool Edit 读入浊音语音,设置采样率为8kHz ,16位,单声道。

2、将读入的语音wav 文件保存为txt 文件。

3、读入Matlab 中,并且对照取不同矩形窗长N 的短时修正自相关函数,画出图形。

四、程序及运行结果 fid=fopen('zhuoyin.txt','rt'); b=fscanf(fid,'%f'); b1=b(1:320); N=160; A=[];
for k=1:160; sum=0; for m=1:N; sum=sum+b1(m)*b1(m+k-1); end
A(k)=sum; end for k=1:160 A1(k)=A(k)/A(1); end figure(1) subplot(3,1,1) plot(A1); ylabel('R(k)') legend('N=160') axis([0,320,-1,1]); b2=b(1:200); N=100;
……………………………………装………………………………………订…………………………………………线………………………………………
太原理工大学现代科技学院实验报告
B=[]; for k=1:100; sum=0; for m=1:N; sum=sum+b2(m)*b2(m+k-1); end B(k)=sum; end for k=1:100 B1(k)=B(k)/B(1); end figure(1) subplot(3,1,2) plot(B1); ylabel('R(k)') legend('N=100') axis([0,320,-1,1]); L=1; b3=b(1:140); N=70; C=[]; for k=1:70; sum=0; for m=1:N; sum=sum+b3(m)*b3(m+k-1); end C(k)=sum; end for k=1:70 C1(k)=C(k)/C(1); end figure(1) subplot(3,1,3) plot(C1); ylabel('R(k)') legend('N=70') axis([0,320,-1,1]);
…………………………………装……………………………………订………………………………………线……………………………………………
太原理工大学现代科技学院实验报告
五、思考题
1、在相同的实验环境下,用Matlab程序实现语音的短时自相关的图形,并与修正自相关进行比较,加深对修正自相关的理解。

答:由于在计算短时自相关时,窗选语音段为有限长度N,而求和上限是N-1-k,因此当k增加时可用于计算的数据就越来越少了,从而导致k增加时自相关函数的幅度减小了。

采用修正的自相关函数可以避免这个问题。

2、通过实验的图形,试分析它在语音信号处理中的应用。

答:1)可以作为区分清音浊音的特征参数;
2)在信噪比较高的情况下,短时能量还可以作为区分有声和无声的依据;
3)可以作为辅助的特征参数用于语音识别中。

太原理工大学现代科技学院实验报告
实验名称 用修正的短时自相关检测语言的基音周期 同组人 专业班级 学号 姓名 成绩
一、实验目的
1、熟悉前一个实验程序以及中心削波的意义。

2、用Matlab 实现用修正的短时自相关检测语音的基音周期。

3、分析修正的短时自相关在基音周期检测中的应用。

4、能够对程序进行重新编制。

二、实验要求
1、实验前自己用Cool Edit 音频编辑软件录制浊音声音,并把它保存为.txt 文件。

2、分别取长度N=160和N'=N+K 的矩形窗函数作用于语音信号上,首先对其进行中心削波,比较削波前和削波后语音信号波形,并使得削波后的信号进行乘积并求和,计算延迟为0<K<160
时的相关值,并且用得到的相关值来检测语音信号的基音周期,用Matlab 画出图形。

3、写出实验报告,分析实验结果。

三、实验步骤
1、用Cool Edit 读入浊音语音。

设置采样率为8kHz ,16位,单声道。

2、将读入的语音wav 文件保存为txt 文件。

3、编程实现中心削波前后的语音波形。

四、程序及运行结果 1.用Cooledit 读入浊音语音。

设置采样率为8kHz ,16位,单声道。

2.将读入的语音wav 文件保存为txt 文件。

3.编程实现中心削波前后的语音波形。

fid=fopen('voice.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,1711,-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,1711,-1,1]); title('中心削波后语音波形'); xlabel('样点数'); ylabel('幅度值'); fclose(fid); 4.编程实现削波前后的修正自相关,并检测出基音周期。

fid=fopen('voice.txt','rt'); [b,count]=fscanf(fid,'%f',[1,inf]); fclose(fid); N=320; A=[]; for k=1:320; sum=0; for m=1:N; sum=sum+b(m)*b(m+k-1); end A(k)=sum; end for k=1:320 B(k)=A(k)/A(1); end figure(2); subplot(2,1,1);
……………………………………装………………………………………订…………………………………………线………………………………………
太原理工大学现代科技学院实验报告
plot(B,'k');
title('中心削波前修正自相关'); xlabel('延迟 k'); ylabel('幅度值'); axis([0,320,-1,1]); N=320; A=[]; for k=1:320; sum=0; for m=1:N; sum=sum+a(m)*a(m+k-1); end A(k)=sum; end for k=1:320 C(k)=A(k)/A(1); end subplot(2,1,2); plot(C,'k'); title('中心削波后修正自相关'); xlabel('延迟 k'); ylabel('幅度值'); axis([0,320,-1,1]);
四、思考题 1在相同的实验环境下,用Matlab 程序实现程序短时自相关检测语音的基音周期的图形,并与修正的短时自相关进行比较。

答:修正自相关使得在基音周期位置的峰值更加尖锐,使得由于声道共振特性引起的峰值有
……………………………………装………………………………………订…………………………………………线………………………………………
太原理工大学现代科技学院实验报告
效减少,从而减少倍频或半频错误。

2、分析清音的修正的短时自相关图形。

相关文档
最新文档