实验一语音信号端点检测最终报告
- 格式:doc
- 大小:67.86 KB
- 文档页数:6
藏语单音节的语音端点检测作者:王振东黄鹤鸣来源:《山东工业技术》2015年第10期摘要:预处理过程在语音识别中起着至关重要的作用。
对于藏语语音识别的预处理研究借鉴的是英语单音节的语音处理方法,在语音识别系统中正确的判定输入语音的起点、终点对于提高识别率是非常重要的。
在高信噪比情况下,滤除噪声是很容易的,用短时能量幅度就可以获得较好的检测结果。
但在低信噪比情况下要想有效的去噪就必须采用短时能量幅度和短时平均过零率结合的方法。
这篇文章采用两种方法的结合来处理藏语单音节,可以做到准确率较高的确认语音的端点,并能在低信噪比情况下滤除噪声,识别清浊音。
实验证明了此种方法不仅正确,而且提高了检测的准确度。
关键词:语音识别;端点检测;预处理1 引言端点检测就是把给出的一段语音找出该信号的起点和终点。
预处理在语音识别系统中起着至关重要的作用,决定着识别率的高低,其中端点检测的作用是对不必要的噪声直接除去,减少存储空间,提高计算机运算的效率以及减少运算量。
更重要的是端点检测可以增加语音识别的精确度,对语音段噪声进行特征识别,进而除去噪声所占有的能量尽量确保语音识别过程不受噪声的干扰。
对于藏语语音的端点检测采用传统的方法即短时平均过零率和短时能量。
在背景噪声较小的情况下,短时能量比较准确,但当背景噪声较大时,短时平均过零率可以获得较好的检测结果。
因此一般的识别系统,其前端的端点检测过程都是将这两个参数结合用于检测语音的。
2 语音系统中端点检测的方法语音信号是时域上的非平稳信号,所以处理平稳信号的数字信号处理技术是不能直接使用了。
但是在一段较短时间范围内(10ms-30ms)语音信号的特性基本相对稳定,即语音信号具有短时平稳性,也就是短时性。
2.1 预加重(1)在处理不同的对象时,语音识别系统就会有相应的处理方法,语音信号的特性决定了处理方法和模式基本相同,因此对于所有藏语语音单音节的处理就具有了解决方案,本文以单音节‘’为例进行端点检测。
华南理工大学《语音信号处理》实验报告实验名称:DTW算法实现及语音模板匹配姓名:学号:班级:10级电信5班日期:2013年6 月17日一、实验目的运用课堂上所学知识以及matlab工具,利用DTW(Dynamic Time Warping,动态时间规整)算法,进行说话者的语音识别。
二、实验原理1、语音识别系统概述一个完整特定人语音识别系统的方案框图如图1所示。
输入的模拟语音信号首先要进行预处理,包括预滤波、采样和量化、加窗、端点检测、预加重等,然后是参数特征量的提取。
提取的特征参数满足如下要求:(1)特征参数能有效地代表语音特征,具有很好的区分性;(2)参数间有良好的独立性;(3)特征参数要计算方便,要考虑到语音识别的实时实现。
图1 语音识别系统方案框图语音识别的过程可以被看作模式匹配的过程,模式匹配是指根据一定的准则,使未知模式与模型库中的某一个模型获得最佳匹配的过程。
模式匹配中需要用到的参考模板通过模板训练获得。
在训练阶段,将特征参数进行一定的处理后,为每个词条建立一个模型,保存为模板库。
在识别阶段,语音信号经过相同的通道得到语音特征参数,生成测试模板,与参考模板进行匹配,将匹配分数最高的参考模板作为识别结果。
2、语音信号的处理1、语音识别的DTW算法本设计中,采用DTW算法,该算法基于动态规划(DP)的思想解决了发音长短不一的模板匹配问题,在训练和建立模板以及识别阶段,都先采用端点检测算法确定语音的起点和终点。
在本设计当中,我们建立的参考模板,m为训练语音帧的时序标号,M为该模板所包含的语音帧总数,R(m)为第m帧的语音特征矢量。
所要识别的输入词条语音称为测试模板,n为测试语音帧的时序标号,N为该模板所包含的语音帧总数,T(n)为第n帧的语音特征矢量。
参考模板和测试模板一般都采用相同类型的特征矢量(如LPCC系数)、相同的帧长、相同的窗函数和相同的帧移。
考虑到语音中各段在不同的情况下持续时间会产生或长或短的变化,因而更多地是采用动态规划DP的方法。
基于多尺度样本熵与阈值的语音端点检测王波;于凤芹【摘要】In order to overcome the defect that sample entropy can be falsely detected due to its sensitivity to the suddenly changing noise,this paper proposes a speech endpoint detection algorithm.This algorithm does the multi-scale transform for the speech signal in the time domain.The sample entropy and threshold of different scales can be calculated.The number of the sample entropy which is greater than the threshold of corresponding scale is counted and compared with the number of total scale to realize speech endpoint detection.Experimental results show that this algorithm can eliminate the mutation noise sensitivity of the sample entropy,and the detection accuracy is well improved in the low Signal Noise Ratio(SNR)conditions,compared with approximate entropy and sample entropy detection algorithms.%针对样本熵对突变噪声敏感导致的误检问题,提出一种改进的语音端点检测算法.该算法在时域采用尺度因子对语音信号进行多尺度变换,计算各尺度下的样本熵和阈值,统计样本熵大于门限阈值的尺度个数并与总尺度个数进行比较,实现语音端点检测.实验结果表明,该算法能够较好地消除样本熵对突变噪声的敏感性,并且与近似熵和样本熵检测算法相比,在低信噪比条件下具有更高的检测准确率.【期刊名称】《计算机工程》【年(卷),期】2016(042)012【总页数】4页(P268-271)【关键词】多尺度样本熵;多尺度变换;语音端点检测;阈值;近似熵【作者】王波;于凤芹【作者单位】江南大学物联网工程学院,江苏无锡 214122;江南大学物联网工程学院,江苏无锡 214122【正文语种】中文【中图分类】TP37语音端点检测是计算机通过语音的声学特征将带噪语音区分为语音段和非语音段的方法,它被广泛应用于语音识别[1]、语音编码[2]、语音传输[3]和语音增强[4]等领域,是语音处理领域的基础。
在设计一个成功的端点检测模块时,会遇到下列一些实际困难:⑴信号取样时,由于电平的变化,难于设置对各次试验都适用的阀值。
⑵在发音时,人的咂嘴声或其他某些杂音会使语音波形产生一个很小的尖峰,并可能超过所设计的门限值。
此外,人呼吸时的气流也会产生电平较高的噪声。
⑶取样数据中,有时存在突发性干扰,使短时参数变得很大,持续很短时间后又恢复为寂静特性。
应该将其计入寂静段中。
⑷弱摩擦音时或终点处是鼻音时,语音的特性与噪声极为接近,其中鼻韵往往还拖得很长。
⑸如果输入信号中有50Hz工频干扰或者A/D变换点的工作点偏移时,用短时过零率区分无声和清音就变的不可靠。
一种解决方法是算出每一帧的直流分量予以减除,但是这无疑加大了运算量,不利于端点检测算法的实时执行;另一种解决方法是采用一个修正短时参数,它是一帧语音波形穿越某个非零电平的次数,可以恰当地设置参数为一个接近于零的值,使得过零率对于清音仍具有很高的值,而对于无声段值却很低。
但事实上,由于无声段以及各种清音的电平分布情况变化很大,在有些情况下,二者的幅度甚至可以相比拟,这给这个参数的选取带来了极大的困难[5]。
由上可见,一个优秀的端点检测算法应该能满足:⑴门限值应该可以对背景噪声的变化有一定的适应。
⑵将短时冲击噪声和人的咂嘴等瞬间超过门限值的信号纳入无声段而不是有声段。
⑶对于爆破音的寂静段,应将其纳入语音的范围而不是无声段。
⑷应该尽可能避免在检测中丢失鼻韵和弱摩擦音等与噪声特性相似、短时参数较少的语音。
⑸应该避免使用过零率作为判决标准而带来的负面影响。
在做本课题时,端点检测方法是将语音信号的短时能量与过零率相结合加以判断的。
但这种端点检测算法如果运用不好,将会发生漏检或虚检的情况。
语音信号大致可以分为浊音和清音两部分,在语音激活期的开始往往是电平较低的清音,当背景噪声较大时,清音电平与噪声电平相差无几。
采用传统的语音端点检测方法很容易造成语音激活的漏检。
而语音信号的清音段,对于语音的质量起着非常重要的作用。
基于双门限两级判决的语音端点检测方法路青起;白燕燕【摘要】Endpoint detection of speech signal processing is a very important step, which directly affects the accura- cy of the speed and results in voice signal processing. The research on endpoint detection, especially in noisy environ- ments, has always been the hot spots in voice signal processing. Aiming at the front-end detection, which is made for the voice recognition system, this paper compares the use of short-term energy with the use of short-term average zero-crossing rate for endpoint detection. It achieves a double-threshold method of endpoint detection programming and simulation by Matlab. Simulation results show that an accuracv of as high as 93% for endDoint detection can be achieved.%端点检测是语音信号处理过程中的重要步骤,其准确性直接影响语音信号处理的速度和结果。
因此对于端点检测方法,特别是在噪声环境下的端点检测研究,一直是语音信号处理中的热点。
第一章绪论Matlab是矩阵实验室(Matrix Laboratory)的简称,是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括Matlab和Simulink两大部分。
1.1 Matlab简介MATLAB是英文MATrix LABoratory(矩阵实验室)的缩写。
早期的MATLAB 是用FORTRAN语言编写的,尽管功能十分简单,但作为免费软件,还是吸引了大批使用者。
经过几年的校际流传,在John Little。
Cleve Moler和Steve Banger 合作,于1984年成立MathWorks公司,并正式推出MATLAB第一版版。
从这时起,MATLAB的核心采用C语言编写,功能越来越强大,除原有的数值计算功能外,还新增了图形处理功能。
MathWorks公司于1992年推出了具有划时代意义的4.0版;1994年推出了4.2版扩充了4.0版的功能,尤其在图形界面设计方面提供了新方法;1997年春5.0版问世,5.0版支持了更多的数据结构,使其成为一种更方便、更完善的编程语言;1999年初推出的MATLAB5.3版在很多方面又进一步改进了MATLAB语言的功能,随之推出的全新版本的最优化工具箱和Simulink3.0达到了很高水平;2000年10月,MATLAB6.0版问世,在操作页面上有了很大改观,为用户的使用提供了很大方便,在计算机性能方面,速度变的更快,性能也更好,在图形界面设计上更趋合理,与C语言接口及转换的兼容性更强,与之配套的Simulink4.0版的新功能也特别引人注目;2001年6月推出的MATLAB6.1版及Simulink4.1版,功能已经十分强大;2002年6月推出的MATLAB6.5版及Simulink5.0版,在计算方法、图形功能、用户界面设计、编程手段和工具等方面都有了重大改进;2004年,MathWorks公司推出了最新的MA TLAB7.0版,其中集成了最新的MATLAB7编译器、Simumlink6.0仿真软件以及很多工具箱。
实验一语音信号端点检测 一、实验目的 1.学会MATLAB的使用,掌握MATLAB的程序设计方法; 2.掌握语音处理的基本概念、基本理论和基本方法; 3.掌握基于MATLAB编程实现带噪语音信号端点检测; 4.学会用MATLAB对信号进行分析和处理。 5. 学会利用短时过零率和短时能量,对语音信号的端点进行检测。 二、实验仪器设备及软件 HP D538、MATLAB 三、实验原理 端点检测是语音信号处理过程中非常重要的一步,它的准确性直接影响到语音信号处理的速度和结果。本次实验利用短时过零率和短时能量相结合的语音端点检测算法利用短时过零率来检测清音,用短时能量来检测浊音,两者相配合便实现了信号信噪比较大情况下的端点检测。 算法对于输入信号的检测过程可分为短时能量检测和短时过零率检测两个部分。算法以短时能量检测为主,短时过零率检测为辅。根据语音的统计特性,可以把语音段分为清音、浊音以及静音(包括背景噪声)三种。在本算法中,短时能量检测可以较好地区分出浊音和静音。对于清音,由于其能量较小,在短时能量检测中会因为低于能量门限而被误判为静音;短时过零率则可以从语音中区分出静音和清音。将两种检测结合起来,就可以检测出语音段(清音和浊音)及静音段 1、短时能量计算 定义n时刻某语言信号的短时平均能量En为:
nNnmmnwmxmnwmxEn)1(22
)]()([)]()([
式中N为窗长,可见短时平均能量为一帧样点值的平方和。特殊地,当窗函数为矩形窗时,有nNnmmxEn)1(2)( 2、短时过零率 过零就是指信号通过零值。过零率就是每秒内信号值通过零值的次数。 对于离散时间序列,过零则是指序列取样值改变符号,过零率则是每个样本的改变符号的次数。对于语音信号,则是指在一帧语音中语音信号波形穿过横轴(零电平)的次数。可以用相邻两个取样改变符号的次数来计算。 如果窗的起点是n=0,短时过零率Z为 波形穿过横轴(零电平)的次数
|))1(())((|21100NnwwnSSgnnSSgnZ 00,1,1)sgn(x
xx
短时过零可以看作信号频率的简单度量 浊音的短时平均幅度最大,无声的短时平均幅度最小,清音的短时过零率最大,无声居中,浊音的短时过零率最小。 3、短时自相关函数
10)()()(kNnwwwknsnskR
①是偶函数; ②s(n)是周期的,那么R(k)也是周期的; ③可用于基音周期估计和线性预测分析 4、判断语音信号的起点和终点 利用短时平均幅度和短时过零率可以判断语音信号的起点和终点。语音端点检测方法可采用测试信号的短时能量或短时对数能量、联合过零率等特征参数,并采用双门限判定法来检测语音端点,即利用过零率检测清音,用短时能量检测浊音,两者配合。首先为短时能量和过零率分别确定两个门限,一个是较低的门限数值较小,对信号的变化比较敏感,很容易超过;另一个是比较高的门限,数值较大。低门限被超过未必是语音 的开始,有可能是很短的噪声引起的,高门限被超过并且接下来的自定义时间段内的语音。
四、实验步骤及程序 (1) 实验步骤: 1、取一段录音作为音频样本。 2、利用公式分别编程计算这段语音信号的短时能量和短时过零率,然后分别画出它们的曲线。 3、调整能量门限。 4、进行幅度归一化并设置帧长、短时能量阈值、过零率阈值等参数。 5、编写程序实现语音端点检测。 6、最后得到语音端点检测图像。
(2) 语音信号的端点检测程序流程图:
图 1.1 语音信号的端点检测程序流程图 (3) 语音信号的端点检测实验源程序: [x,fs,nbits]=wavread('1.wav');%语音信号的端点检测matlab实现 x = x / max(abs(x));%幅度归一化到[-1,1] %参数设置 FrameLen = 256; %帧长 inc = 90; %未重叠部分
amp1 = 10; %短时能量阈值 amp2 = 2; zcr1 = 10; %过零率阈值 zcr2 = 5;
输入语音信号 幅度归一化
设置参数 计算短时能量和过零率 调整能量门限 开始端点检测 输出样本端点检测图像 minsilence = 6; %用无声的长度来判断语音是否结束 minlen = 15; %判断是语音的最小长度 status = 0; %记录语音段的状态 count = 0; %语音序列的长度 silence = 0; %无声的长度
%计算过零率 tmp1 = enframe(x(1:end-1), FrameLen,inc); tmp2 = enframe(x(2:end) , FrameLen,inc); signs = (tmp1.*tmp2)<0; diffs = (tmp1 -tmp2)>0.02; zcr = sum(signs.*diffs,2);
%计算短时能量 amp = sum((abs(enframe(filter([1 -0.9375], 1, x), FrameLen, inc))).^2, 2);
%调整能量门限 amp1 = min(amp1, max(amp)/4); amp2 = min(amp2, max(amp)/8);
%开始端点检测 for n=1:length(zcr) goto = 0; switch status case {0,1} % 0 = 静音, 1 = 可能开始 if amp(n) > amp1 % 确信进入语音段 x1 = max(n-count-1,1); % 记录语音段的起始点 status = 2; silence = 0; count = count + 1; elseif amp(n) > amp2 || zcr(n) > zcr2 % 可能处于语音段 status = 1; count = count + 1; else % 静音状态 status = 0; count = 0; end case 2, % 2 = 语音段 if amp(n) > amp2 ||zcr(n) > zcr2 % 保持在语音段
count = count + 1; else % 语音将结束 silence = silence+1; if silence < minsilence % 静音还不够长,尚未结束 count = count + 1; elseif count < minlen % 语音长度太短,认为是噪声 status = 0; silence = 0; count = 0; else % 语音结束 status = 3; end end case 3, break; end end
count = count-silence/2; x2 = x1 + count -1; %记录语音段结束点
subplot(3,1,1) plot(x) axis([1 length(x) -1 1]) xlabel('帧数');ylabel('Speech'); line([x1*inc x1*inc], [-1 1], 'Color', 'red'); line([x2*inc x2*inc], [-1 1], 'Color', 'red');
subplot(3,1,2) plot(amp); axis([1 length(amp) 0 max(amp)]) xlabel('帧数');ylabel('Energy'); line([x1 x1], [min(amp),max(amp)], 'Color', 'red'); line([x2 x2], [min(amp),max(amp)], 'Color', 'red');
subplot(3,1,3) plot(zcr); axis([1 length(zcr) 0 max(zcr)]) xlabel('帧数');ylabel('ZCR'); line([x1 x1], [min(zcr),max(zcr)], 'Color', 'red'); line([x2 x2], [min(zcr),max(zcr)], 'Color', 'red');
五、实验结果与分析 图1.2语音信号的端点检测实验结果输出图像 (1)从图中可以明显看出,浊音的短时能量大、短时过零率低。清音的短时能量小、短时过零率高。 (2)门限的选取对语音检测结果有很大影响。 (3)仅仅根据能量判断是比较粗糙的,还需要根据过零率进行判断。因为清音和噪声的短时平均过零率比背景噪声的平均过零率要高出好几倍。
六、实验体会 这次的实验,,给我最大的收获就是培养了独立思考和动手的能力,还有就是实验的灵活性,总得来说就是在独立与创新这二个环节,我更加掌握MATLAB的程序设计方法,进一步的了解了掌握基于MATLAB编程实现带噪语音信号端点检测的原理,这充分锻炼了我们独立的动手能力和独立的解决所遇到的问题,让我对这门课程又有了新的理解。