实验一语音信号端点检测最终报告
- 格式: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]等领域,是语音处理领域的基础。
实验一语音信号端点检测 一、实验目的 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编程实现带噪语音信号端点检测的原理,这充分锻炼了我们独立的动手能力和独立的解决所遇到的问题,让我对这门课程又有了新的理解。