- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
实 验 报 告
实验课程名称: 语音信号处理实验
姓名: 班级: 学号:
实验序号 实验名称 实验过程 实验结果 实验成绩 实验一 语音信号的端点检测 实验二 语音信号的特征提取 实验三 语音信号的基频提取
指导教师 张磊
实验教室 21B#293
实验时间 2015年4月12日
实验成绩
实验一 语音信号的端点检测
一、实验目的
1、掌握短时能量的求解方法
2、掌握短时平均过零率的求解方法
3、掌握利用短时平均过零率和短时能量等特征,对输入的语音信号进行端点检测。
二、实验设备
HP计算机、Matlab软件
三、实验原理
1、短时能量
语音信号的短时能量分析给出了反应这些幅度变化的一个合适的描述方法。对于信号,短时能量的定义如下:
2、短时平均过零率
短时平均过零率是指每帧内信号通过零值的次数。对于连续语音信号,可以考察其时域波形通过时间轴的情况。对于离散信号,实质上就是信号采样点符号变化的次数。过零率在一定程度上可以反映出频率的信息。短时平均过零率的公式为:
其中,是符号函数,即
3、端点检测原理
能够实现这些判决的依据在于,不同性质语音的各种短时参数具有不同的概率密度函数,以及相邻的若干帧语音应具有一致的语音特性,它们不会在S、U、V之间随机地跳来跳去。要正确判断每个输入语音的起点和终点,利用短时平均幅度参数和短时平均过零率可以做到这一点。
首先,根据浊音情况下的短时能量参数的概率密度函数确定一个阈值参数,值一般定的较高。当一帧输入信号的短时平均幅度参数超过时,就可以判定该帧语音信号不是无声,而有相当大的可能是浊音。根据可判定输入语音的前后两个点和。在和之间的部分肯定是语音段,但语音的精确起点、终点还要在之前和之后仔细查找,如图1所示。
图1 端点检测原理示意图
为此,再设定一个较低的阈值参数,由点向前找,当短时能量由大到小减至可以确定点。类似地,可以由点向后找,确定点。在和之间的仍能肯定是语音段。然后由向前和向后,利用短时平均过零率进行搜索。根据无声情况下的短时平均过零率,设置一个参数,如果由向前搜索时,短时平均过零率大于的3倍,则认为这些信号仍属于语音段,直到短时平均过零率下降到低于3倍的,这时的点就是语音的精确的起点。对于终点也做类似的处理,可以确定终点。采用短时平均过零率的原因在于,点以前可能是一段清辅音,它的能量相当弱,依靠能量不可能将它们与无声段分开。而对于清辅音来说,它们的过零率明显高于无声段,因而能用这个参数将二者区分开来。
存在噪声的情况下,正常的过零率计算会存在一定的误差,解决这个问题的一种方法是对上述过零率定义做一个简单的修改,即设立一个门限T,将过零率的含义修改为跨过正负门限的次数,如图2。
图2 门限短时平均过零率
于是,有:
这样计算的短时平均过零率就有一定的抗干扰能力。即使存在小的随机噪声,只要它不超过正负门限所构成的带,就不会产生虚假过零率。
四、实验步骤及程序
实验程序:
function point_check()
s1=wavread(man.wav);
s=s1/max(abs(s1));
s=filter([1 -0.9375],1,s);
plot(s);
len=length(s);
round=160;
repeat=80;
inc=round-repeat;%b_len-2*repeat;
ka=ceil((len-round)/(round-repeat))+1;
s=[s;zeros((round-repeat)*(ka-1)+round-len,1)];
len=length(s);
w=zeros(round,ka);
for i=1:ka
for k=1:round
w(k,i)=s(k+(i-1)*(round-repeat),1);
end
end
ST=0.01;
F=zeros(ka,round);
for i=1:ka
for k=0:round-1
for j=1:round-k
F(ka,k+1)=F(ka,k+1)+abs(w(j,i)-w(j+k,i));
end
if(kround-1)
if(w(k+1,i)0w(k+2,i)0)
z=sign(w
文档评论(0)