网站大量收购独家精品文档,联系QQ:2885784924

华工语音信号处理实验端点检测.doc

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
华工语音信号处理实验端点检测

语音信号处理实验报告 实验一:语音信号的端点检测 学院:电子与信息学院 专业:11级信息工程 姓名: 学号: 提交日期:2014.4.23 实验一:语音信号的端点检测 实验内容 语音信号端点检测技术其目的就是从包含语音的一段信号中准确地确定语音的起始点和终止点,区分语音和非语音信号,它是语音处理技术中的一个重要方面。本实验的目的就是要掌握基于MATLAB编程实现带噪语音信号端点检测,利用MATLAB对信号进行分析和处理,学会利用短时过零率和短时能量,对语音信号的端点进行检测。 实验方法 本实验中,端点检测的方法有两种:短时能量和短时过零率。 2.1.1、短时能量? 语音和噪声的区别可以体现在它们的能量上,语音段的能量比噪声段能量大,语音段的能量是噪声段能量叠加语音声波能量的和。在信噪比很高时,那么只要计算输入信号的短时能量或短时平均幅度就能够把语音段和噪声背景区分开。这是仅基于短时能量的端点检测方法。 信号{x(n)}的短时能量定义为:? 2.1.2、短时平均过零率? 短时过零表示一帧语音信号波形穿过横轴(零电平)的次数。过零分析是语音时域分析中最简单的一种。对于连续语音信号,过零意味着时域波形通过时间轴;而对于离散信号,如果相邻的取样值的改变符号称为过零。过零率就是样本改变符号次数。 信号{x(n)}的短时平均过零率定义为: 2.2、检测方法? 利用过零率检测清音,用短时能量检测浊音,两者配合。首先为短时能量和过零率分别确定两个门限,一个是较低的门限数值较小,对信号的变化比较敏感,很容易超过;另一个是比较高的门限,数值较大。低门限被超过未必是语音的开始,有可能是很短的噪声引起的,高门限被超过并且接下来的自定义时间段内的语音超过低门限,意味着信号开始。? 此时整个端点检测可分为四段:静音段、过渡段、语音段、结束。实验时使用一个变量表示当前状态。静音段,如果能量或过零率超过低门限,就开始标记起始点,进入过渡段。过渡段当两个参数值都回落到低门限以下,就将当前状态恢复到静音状态。而如果过渡段中两个参数中的任一个超过高门限,即被认为进入语音段。处于语音段时,如果两参数降低到门限以下,而且总的计时长度小于最短时间门限,则认为是一段噪音,继续扫描以后的语音数据,否则标一记结束端点。 2.3、实验过程 1、录取一段录音,采样率8K,单声道 2、用MATLAB的wavread函数把录音都进来并进行归一化处理 3、对语音信号进行预加重,分帧处理 4、对每帧分别计算短时能量和短时门限过零率 5、进行短时能量阈值、过零率阈值等参数 6、编写程序实现语音检测端点并绘出检测图 3、实验结果 4、实验分析 4.1结果分析 从结果图可知,本次实验是成功的,语音信号的端点基本都检测出来了。短时能量和短时过零率的检测结果和信号的端点分布一致。语音段的能量值比过渡段和静音段的能量都大,语音的过零率比过渡段和静音段的也都大。 4.2实验总结 这次实验利用MATLAB对信号进行分析和处理,利用短时过零率和短时能量,对语音信号的端点进行检测。由于知识储备的不足,在实验过程中还是遇到比较大的困难,端点检测代码是参考网上的,在理解的基础上加以修改和改进。但是预处理、加窗分帧、短时能量、短时过零率的代码都是我自己根据原理编写的,所有总的来说收获还是很大的。 代码如下: function point_check() s1=wavread(1_1.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,1); %计算短时能量幅度差 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));%计算短时能量幅度差

文档评论(0)

xjj2017 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档