- 1、本文档共21页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
语音信号处理实验报告
实验一
1 用Matlab读取一段话音(自己录制一段,最好其中含有汉语四种声调变化, 该段话音作为本课实验原始材料),绘制原始语音波形图。
2. 用Matlab计算这段语音的短时平均过零率、短时平均能量和短时平均幅度,并将多个波形同步显示绘图。
3.观察各波形在不同音情况下的参数特点,并归纳总结其中的规律。
clc clc;
[x,fs]=wavread(benpao.wav);
figure
plot(x);
axis([0 length(x) min(x) max(x)]);
title(原始语音波形)
xlabel(时间)
f=enframe(x,300,100);
[m,n]=size(f);
for i=1:m
energy(i)=sum(f(i,1:n).^2);
mn(i)=sum(abs(f(i,1:n)));
end
figure
plot(energy);
axis([0 length(energy) min(energy) max(energy)]);
title(短时能量)
figure
plot(mn);
axis([0 length(mn) min(mn) max(mn)]);
title(短时幅度)
lingd=zeros(m);
for x=1:m
for y=1:n-1
temp=f(x,y)*f(x,y+1) ;
if temp= 0
lingd(x)=lingd(x)+1;
end
end
%temp1=num(x,1)/300;
%count(x)=temp1;
end
figure
plot(lingd);
%axis([0 length(lingd) min(lingd) max(lingd)]);
title(短时过零率)
子函数:
function f=enframe(x,win,inc)%定义函数。
nx=length(x(:));%x(:)的作用是把x给弄成一个向量,x为一行,则变成一列,如果为矩阵,则按每一列的顺序排成一列。得出的nx为序列的数据个数。
nwin=length(win);
if(nwin==1)
len=win;%如果win中就一个数,则len就=该数,此例中为256个点。即每帧长
else
len=nwin;%如果有多个数,则len=个数。
end
if(nargin3)%nargin返回的是函数输入的个数,如果中间有变量,返回的是负值。
inc=len;%也就是说,如果函数enframe的输入只有两个的话,系统就自动赋inc
end
nf=fix((nx-len+inc)/inc);
%这个比较关键,nf为分帧的组数
f=zeros(nf,len);%构成以组数为行,帧长为列的矩阵。
indf=inc*(0:(nf-1)).;%indf为一列nf个数据,即0到nf-1的inc倍,即分好了每幀起点。
inds=(1:len);%构成了长度为len的一行。
f(:)=x(indf(:,ones(1,len))+inds(ones(nf,1),:));
if(nwin1)%nwin大于1的情况就不说了。
w=win(:);
f=f.*w(ones(nf,1),:);
end
结论:
浊音能量集中与较低频段中,所以具有较低的过零率;相反,清音能量集中于较高频率中,所以有较高的过零率。
浊音短时的平均幅度比清音的要高,所以可以从图中区别浊音和清音。
可以从边缘区别声母和韵母的分界、无声和有声的分界。
实验二要求:
1.分别选定浊音段和清音段一帧语音信号,计算其自相关函数和平均幅度差函数,并同步绘制两参数波形,总结在不同音情况下,这两参数表现的特点。
2.利用三电平中心削波自相关法实现清、浊音判定,并提取一段话音的基频参数,绘制基频曲线,并将该参数曲线合并到前面提取的短时过零率和短时能量参数曲线图中,以示比较。
3.加入3点或5点中值平滑处理后再绘制上述基频曲线与未平滑曲线比较,观测完整一段话音的基频包络变化情况。
[Y,Fs,bits]=wavread(benpao.wav);
%浊音,取13270--13510个点
%短时自相关函数
temp=Y(13271:13510);
Rn1=zeros(1,240);
for nn=[1:240],
for ii=[1:240-nn],
Rn1(nn) =Rn1(nn)+ temp(ii)*temp(nn+ii);
end
end
figure(1)
subplot(4,1,1);
jj=[1:240];
plot(jj, Rn1,b);title(浊音-自相关函数
文档评论(0)