推荐太原理工大学数字语音处理实验报告 精品.docx
《推荐太原理工大学数字语音处理实验报告 精品.docx》由会员分享,可在线阅读,更多相关《推荐太原理工大学数字语音处理实验报告 精品.docx(17页珍藏版)》请在冰豆网上搜索。
推荐太原理工大学数字语音处理实验报告精品
本科实验报告
课程名称:
数字语音处理
实验项目:
语音短时平均能量的实现
实验地点:
跨越机房
专业班级:
学号:
学生姓名:
指导教师:
年月
实验一语音短时平均能量的实现
一、实验目的
1.熟悉Matlab基本程序的运用。
2.充分理解取不同窗长时的语音短时平均能量的变化情况。
3.熟悉Matlab编程语言在语音信号处理中的作用。
4.能够实现程序的重新编制。
二、实验原理
定义n时刻某语音信号的短时平均能量
为:
式中N为窗长,可见短时平均能量为为一帧样点值的甲醛平方和。
特殊地,当窗函数为矩形窗时,有
三、实验要求
1.实验前自己用CoolEdit音频编辑软件录制声音“我到北京去”,并把它保存为.txt文件。
2.编程实现不同矩形窗长N=50、100、200、800的短时平均能量。
3.用Matlab画出不同窗长的短时平均能量的图形。
4.写出实验报告,分析实验结果。
四、实验难点
对采集到的语音阳电只进行分帧。
五、实验条件
计算机,Matlab软件,2学时
六、实验步骤
1.用Cooledit读入语音“我到北京去”。
设置采样率为8kHz,16位,单声道。
2.将读入的语音wav文件保存为txt文件。
3.把保存的文件speech.txt读入Matlab。
fid=fopen('speech.txt','rt');
x=fscanf(fid,'%f');
fclose(fid);
4.对采集到得语音样点值进行分帧。
分帧子程序为fra.m
functionf=fra(len,inc,x)
fh=fix(((size(x,1)-len)/inc)+1)
f=zeros(fh,len);
i=1;n=1;
whilei<=fh
j=1;
whilej<=len
f(i,j)=x(n);
j=j+1;n=n+1;
end
n=n-len+inc;
i=i+1;
end
5.对照取不同矩形窗N的短时平均能量,画出图形。
取不同窗长N时的短时能量对照程序energy.m
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,1500,0,10*10^5]);
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,750,0,2*10^6]);
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,190,0,7*10^6]);
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,95,0,14*10^6]);
七、实验结果
本科实验报告
课程名称:
数字语音处理
实验项目:
语音修正的短时自相关的实现
实验地点:
跨越机房
专业班级:
学号:
学生姓名:
指导教师:
年月
实验二语音修正的短时自相关的实现
一、实验目的
1、熟悉语音修正自相关的意义。
2、充分理解取不同窗长时的语音的修正自相关的变化情况。
3、熟悉Matlab编程语音在语音信号处理中的作用。
4、能够实现程序的重新编制。
二、实验原理
对于语音来说,采用短时分析方法,语音短时自相关函数为
但是,在计算短时自相关时,窗选语音段为有限长度N,而求和上限为N-1-k,因此当k增加时可用于计算的数据就越来越少了,从而导致k增加时自相关函数的幅度减小。
为了解决这个问题,提出了语音修正的短时自相关。
修正的短时自相关函数,其定义如下:
三、实验要求
1、实验前自己用CoolEdit音频编辑软件录制声音,并把它保存为.txt文件。
2、编程时间不同矩形窗长N=320,160,70的短时修正自相关。
3、用Matlab画出短时修正自相关的图形。
4、写出实验报告,分析实验结果。
四、实验难点
熟悉Matlab编程语言实现取不同窗长时的语音修正自相关的变化情况,为下一个实验做好准备。
五、实验条件
计算机,Matlab软件,2学时
六、实验步骤
1.用Cooledit读入浊音语音。
设置采样率为8kHz,16位,单声道。
2.将读入的语音wav文件保存为txt文件。
3.读入Matlab中,并且对照取不同矩形窗长N的短时修正自相关函数,并画出图形。
fid=fopen('voice.txt','rt')
b=fscanf(fid,'%f');
b1=b(1:
640);
N=320;
A=[];
fork=1:
320;
sum=0;
form=1:
N;
sum=sum+b1(m)*b1(m+k-1);
end
A(k)=sum;
end
fork=1:
320;
A1(k)=A(k)/A
(1);
end
figure
(1)
subplot(3,1,1)
plot(A1);
ylabel('R(k)')
legend('N=320')
axis([0,320,-1,1]);
b2=b(1:
320);
N=160;
B=[];
fork=1:
160;
sum=0;
form=1:
N;
sum=sum+b2(m)*b2(m+k-1);
end
B(k)=sum;
end
fork=1:
160;
B1(k)=B(k)/B
(1);
end
figure
(1)
subplot(3,1,2)
plot(B1);
ylabel('R(k)')
legend('N=160')
axis([0,320,-1,1]);
L=1;
b3=b(1:
140);
N=70;
C=[];
fork=1:
70;
sum=0;
form=1:
N;
sum=sum+b3(m)*b3(m+k-1);
end
C(k)=sum;
end
fork=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.熟悉前一个实验程序以及中心削波的意义。
.
2.用Matlab实现用修正的短时自相关检测语音的基音周期。
3.分析修正的短时自相关在基音周期检测中的应用。
4.能够对程序进行重新编制。
二、实验原理
如果x(n)是一个周期为P的信号,则其自相关函数也是周期为P的信号,且在信号周期的整数倍处,自相关函数取最大值。
语音的浊音信号具有准周期性,其自相关函数在基音周期的整数倍处取最大值。
计算两相邻最大峰值间的距离,就可以估计出基音周期。
观察浊音信号的自相关函数图,其中真正反映基音周期的只有少数几个峰,而其余大多数峰都是由于声道的共振特性引起的。
因此为了突出反映基音周期的信息,同时压缩其他无关信息,减小运算量,有必要对语音信号进行适当预处理后再进行自相关计算以获得基音周期。
第一种方法是先对语音信号进行低通滤波,再进行自相关计算,因为语音信号包括十分丰富的谐波分量,基音频率的范围分布宰0~500Hz左右,即使女高音升c调最高也不会超过1Kz,所以采用1Kz的低通滤波器先对语音信号进行滤波,保留基音频率,再用2Kz采样频率进行采样;最后用2~20ms的滞后时间计算短时自相关,帧长取10~20ms,即可估计出基音周期。
且中心削波函数如式(3-1)
x-xL(x>xL)
f(x)=0(-xL≤x≤xL)
x+xL(x一般削波电平X
取本帧语音幅度的60%~70%。
将削波后的序列f(x)用短时自相关函数估计基音周期,在基音周期位置的峰值更加尖锐,可以有效减少倍频或半频错误。
三、实验要求
1.实验前自己用CoolEdit音频编辑软件录制浊音部分,并把它保存为.txt文件。
2.分别取长度N=160和N’=N+K的矩形窗函数作用于语音信号上,首先对其进行中心削波,比较削波前和削波后语音信号波形,并使得削波后的信号进行乘积并求和,计算延迟为03.写出实验报告,分析实验结果。
四、实验条件
计算机,Matlab软件,2学时
五、实验步骤
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);
fori=1:
L
a(i)=a(i)/m;
end
m=max(a);
n=min(a);
ht=(m+n)/2;
fori=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;
fork=1:
L;
ifa(k)>=th0
a(k)=a(k)-th0;
elseifa(k)<=(-th0);
a(k)=a(k)+th0;
else
a(k)=0;
end
end
m=max(a);
fori=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=[];
fork=1:
320;
sum=0;
form=1:
N;
sum=sum+b(m)*b(m+k-1);
end
A(k)=sum;
end
fork=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=[];
fork=1:
320;
sum=0;
form=1:
N;
sum=sum+a(m)*a(m+k-1);
end
A(k)=sum;
end
fork=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]);
六、实验结果