欢迎来到天天文库
浏览记录
ID:28019276
大小:188.35 KB
页数:7页
时间:2018-12-07
《哈工程matlab实验四》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、科学计算与数据处理实验报告学号S314060054姓名王鸿运实验名称语音活性检测噪声估计算法实验实验目的1、深入研究MATLAB在计算机相关的某一专业领域的综合应用2、熟悉MATLAB中专业级Toolbox或Simulink的功能和用法3、学会综合运用MATLAB解决本领域科学计算与数据处理的实际问题实验方案人们在相互交流时最常使用、最自然、最基本的方式就是通过语音进行信息交流,因此语音是人们日常生活中最重要的信息载体。而随着光纤通信技术的出现,语音作为信息载体进行传播有了更好的发展。利用光纤来传输携带语音信息的光波以达到相互通信的目的。因
2、此,如今语音信号信息也广泛的采用光纤通信的形式来广泛的传播,可以说语音通信与光纤通信如今己经紧密不可分离。作为一门发展至今不过40余年的新兴技术,光纤通信的历史并不是太长,但其发展是十分迅猛的。到目前为止,光纤通信已经改变了当今的世界通信技术的格局,但坚信随着光纤通信的进一步发展,其对世界通信技术发展的格局的影响将会超出人们的想象。在曰常的生活中,有用的语咅信号总能受到各种外界或者内部的无用信号的影响和干扰,诸如像工程机械噪声这种很强的背景噪声,周围其他无关人员说话的声音等都会在很大的程度上影响想采用的有用语音信号的质量。电缆传输时的电磁干
3、扰会对电缆中传输的•咅信号带来大量的噪声,这是语音信号传输系统产生的信号,会对需要传输的语音信号带来很大的影响。但采用光纤传输语音信号就可以大幅度的减少在传输过程中再增加的噪音,因为光纤中的光信号是干扰很小,因此基本不会产生噪音的。这样使得咅信号经过光纤传输系统后到达接收端的信号所携带的噪咅能与发射出时基本相同。所以这也是现如今光纤传输应用十分广泛的且发展迅速原因之一。因此,光纤声信号屮的降噪处理主要针对语音信号屮的背景噪音进行降噪。随着数字语音信号处理技术的发展,IT前己经有了多种降噪方法,但经过多年的发展,数字语音降噪处理方法而临着提岛
4、性能的问题。针对不同的噪音类型与降噪要求,各种降噪方式的性能各有优劣,但共同的的问题是当背景噪音特别大且复杂时,降噪方式都会有性能下降的问题。因此研宄如何从复杂的背景噪音环境屮将带噪语音屮的噪音信号消除,获得纯净语音是十分必要的,这其中就离不开对噪音新号的估计。通过直观的听取带噪光纤声信号,可以了解到光纤声信号中的噪声基本是平稳的,因此采用谱减法进行降噪处理是合适的。要估计噪声的功率,就必须要找到噪声所在的区间段。又因为噪咅信号可以是局部平稳的,因此可以假设在光纤声信号屮的有用语音信号发音之前的噪音信号与光纤语咅信号中有用语咅信号区间的噪咅
5、信号功率谱相同。闪此,可以利用有用语音信号之前的信号段来估计噪音信号并做出其功率谱。要对噪咅信号的进行估计,可以采用基于语咅活性检测(VoiceActivityDetector)的噪声估计算法。语音激活检测(VAD)是在带噪的语音信号巾检测出有效语音的起始点,因此又被称为端点检测(EndingDetection)。通过语咅激活检测,可以在被噪咅蒗盖的诘咅信号中提取出所需要的有用的语音信号。通过语音活性检测法来对带噪光纤声信号进行噪音估计在实际屮也有很多应用。判断有无语►加樹分帧特征提取与阀值比较语音激活检测框图语音激活检测是通过检测语音帧来
6、实现的,一般以10〜30ms之间不等的时长来取语音帧。语音活性检测的步骤为:从待处理的光纤声信号中设置一个或一系列的对比特征参数,然后将其和一个或一系列的门限阈值进行比较,如图所示。当检测的信号比设罝的门限阈值高时,表示为有用语音信号,反之则为无意义段。语音激活检测的方法是基于信号的短时能量进行检测的算法,该算法通过对背景噪声能量的统计,计算出能量门限,利用能量门限來确定行用语咅信号的起始点。算法流程如下:1、计算每一帧的语音能量;2、计算前20帧平均噪声能量EMN;3、求能量最大值和能量最小值EMAX,EMIN;4、根据上一步所得结果计算
7、并确定门限。实验记录%语咅激活检测VAD(端点检测)设计[x,fs,nbits]=wavread(Ttest1.wavT);X=x/max(abs(x)>;%幅度归—化到[-1,1]%参数设置FrameLen=256;%中贞长inc=10;%未重叠部分ampl=10;%短时能量阈值amp2=2;zcrl=10;%过零率阈值zcr2=5;minsilence>=6;%用无声的长度來判断语音是否结柬minlen=15;%判断是语音的最小长度status=0;录语音段的状态count=0;%语音序列的长度silence=0;%无声的长度%计算过零
8、率tmpl=enframe(x(1:end-1),FrameLen,inc);tmp2=enframe(x(2:end),FrameLen,inc);signs=(tmpl.*t
此文档下载收益归作者所有