语音实验一端点检测
一种语音端点检测的方法及改进

4 语音端点检测方法
语音端点检测的算法步骤如下: (1)语音信号分成相邻有重叠的语音段, 称为语音帧; (2)每一语音帧, 采取一种特征向量; (3)采用 一 种 判 决 准 则 , 例 如 双 门 限 判 定 , 来 检 测 语 音 帧 与 非语音帧; (4)对上述结果进行后处理, 得到语音的全部区间; 4.1 短时能量和过零率相结合的双门限语音端点检测技术 进行端点检测之前, 首先为短时能量和过零率分别确定两 个门限, 一个是数值比较小的低门限, 对信号的变化比较敏感, 很容易就会被超过。另一个是数值比较大的高门限, 信号必须 达到一定的强度, 该门限才可能被超过。低门限被超过未必就 是语音的开始, 有可能是时间很短的噪声引起的。高门限被超 过则可以基本确信是由于语音信号引起的。 语 音 信 号 的 端 点 检 测 可 以 分 为 四 个 过 程:静 音 、过 渡 段 、语 音段 、结 束 。在静 音 段 , 如果 能 量 或过 零 率 超越 了 低 门限 , 就 应 该开始标记起始点, 进入过渡段。在过渡段中, 由于参数的数值 比较小, 不能确信是否处于真正的语音段, 因此只要两个参数
在 语 音 识 别 中,通 常 是 先 根 据 一 定 的 端 点 检 测 算 法,对 语 音 信号中的有声片段和无声片段进行分割,而后再针对有声片段, 依据语音的某些特征进行识别。研究表明, 即使在安静的环境 中, 语音识别系统一半以上的识别错误来自于端点检测器。因 此,作为语音识别系统的第一步,端点检测的关键性不容忽视,尤 其是噪声环境下语音的端点检测, 它的准确性很大程度上直接 影 响 着 后 续 的 工 作 能 否 有 效 进 行 。可 以 说 ,语 音 信 号 的 端 点 检 测 至今为止仍是有待进一步深入研究的课题。
语音端点检测

对于强干扰非平稳噪声和快速变化的噪声环境,如何找到更好的端点检测方法是进一步研究的主要方向。提取人耳听觉特性可以更加有效地区分语音和噪声,从而更加准确的检测语音端点。预先未知噪声统计信息条件下的语音端点检测算法已经出现,但仍出去萌芽阶段。虽然预先未知噪声统计信息条件下的端点检测是未来语音端点检测技术的发展方向,但在理论方法和技术参数等方面还有待进一步突破[17]。
经过几十年的努力,语音信号处理在语音识别、语音增强、语音编码、说话人识别、说话人情感识别、语音合成等方面取得了巨大的进步,然而,一旦这些技术应用在实际环境中,由于环境噪声、信道、说话人自身因素等方面的影响,性能急剧下降,因为在实际环境中没有完全纯净的语音信号,一般都会伴有噪声或其它干扰[4]。例如,办公室环境下,电脑风扇转动的声音,键盘敲打的声音等都是噪声,而语音信号处理系统的处理对象是有效语音信号,即排除了纯噪声段的语音信号段。语音端点检测的任务就是判断待处理信号是语音还是非语音,从输入信号中找到语音部分的起止点。端点检测是语音识别、语音增强以及语音编码等中的一个重要环节。有效的端点检测技术不仅能减少系统的处理时间、提高系统的处理实时性,而且能排除无声段的噪声干扰,从而使后续工作的性能得以较大提高[5],[6]。
第1章 绪论
1.1
语音端点检测在语音识别中占有十分重要的地位。语音信号处理中的端点检测技术,是指从包含语音的一段信号中确定出语音信号的起始点及结束点。是进行其它语音信号处理(如语音识别、讲话人识别等)重要且关键的第一步。进行有效的端点检测能够对语音信号更好的进行分析和训练,这样语音识别才能有好的识别率[1]。实际运用中,通常要求首先对系统的输入信号进行判断,准确地找出语音信号的起始点和终止点。这样才能采集真正的语音数据,减少数据量和运算量,并减少处理时间。
语音端点检测方法探析

【 关键词 】复 杂噪声环境 语音端点检测 方法
1端点检测系统结构框架
端 点检 测系 统结 构框 架主 要是 由 噪声估
—
- 一 语 音 激 活 喇 决
J L
哭 箔 果
吾音激活检测
计模块 、包 络确 定延时模块、和端点检测模块 这三个模块 构成 ,而前端处理和 门限过零率这 两个模块是辅助 ,模块 。如图 l 所示为端点检
均指用 来表示 ,均方差用 。来表 示 ),其 归 化 的均 方差可 以用 p来表示 , 那么 f ( )
估计就可 以确定阈值 。该模块的计算步骤是 : 要充 分利 用滤波 器 组把每 一帧 的信 号进 行分 频,最终分成很多个子带 ,这样就可 以在每一
个子带上分别计算信号的能量、估计噪声能量 和子带信躁 比的计算 ,然后再分别将噪声 的估 计值和 自带信噪 比求和,这样就可 以根据噪声
=
【 l , ( √
) ] e x p [ 一 ( E / | l ・ 1 ) 2 / 2 ,由 此公 以后的每个分析 窗内都要对 模型进行校正 。将 按照一定的时长对输入信号进行分帧 ,并且还
式可 知,能量分布随着 的变小会分布 的更加 集 中,也就是说能量序列的波动就会变得 更加 平缓 。 E p ( i ) 是E x( i )中仅有 的一个 稳定因素,
即
图2 :端点检测模 块框图
s 。 = ( 1 善 r i ) - £ I 】 2 } , 在 初 始 化
而E 订的分 布也 在进 行着十 分缓慢 地变 化,
因此 ,为 了更好 地跟踪 E n ( i ) 的分布 状况 ,在 第i 个分 析窗作 为例子进 行分析 ,将 前 r 帧的 归一 化均 方差 和信 号 的能量 均值 £ i 计算 出 来 ,下面我们就将 } l 和 在两种不同的情况在
语音端点检测比例法 -回复

语音端点检测比例法-回复什么是语音端点检测比例法?语音端点检测比例法是一种常用的语音处理技术,旨在识别连续音频中的语音和非语音部分,并确定语音起始和终止点。
在许多语音处理应用中,如语音识别、语音合成和语音增强等,准确确定语音的位置非常重要。
而语音端点检测比例法就是为了完成这项任务而设计的。
语音端点检测比例法的基本原理是通过对连续音频信号的能量变化进行分析,找出能量显著增加的区域,即语音开始的位置。
当信号内的相对能量大于某个阈值时,可以认为该区域为语音。
而当连续一段时间内的相对能量小于阈值时,可以认为语音结束。
一般来说,语音信号的能量变化较为平缓,而非语音信号(如静音、噪声等)的能量变化较小。
因此,通过设置合适的阈值,语音端点检测比例法可以有效地区分语音和非语音部分。
以下是语音端点检测比例法的一般步骤:1. 预处理:首先,对原始音频进行预处理,如去除噪声、滤波、标准化等。
这一步旨在提高语音信号的质量,使后续的分析更加准确。
2. 分帧:将预处理后的音频信号分成多个帧,通常每帧长度为20-30毫秒。
这样可以保证每个帧内的信号基本稳定,便于后续能量计算。
3. 能量计算:对每个帧内的信号进行能量计算,可以采用能量计算公式:E = ∑x(n) ^2,其中x(n)代表第n个样本点的振幅。
通过累加每个样本点的平方值,得到该帧的能量。
4. 确定阈值:根据经验或统计分析,确定能量阈值。
阈值的设置要综合考虑语音信号的特性以及实际应用的要求。
通常可以通过计算整个语音信号的能量平均值和标准差,以及考虑到信号的动态变化,适当设置一个合适的能量阈值。
5. 端点判断:对于每一帧的能量值,与阈值进行比较。
如果能量值大于阈值,可以认为该帧内含有语音;如果能量值小于阈值,可以认为该帧为非语音。
根据相邻帧的语音非语音情况,可以进一步确定语音的起始和终止点。
6. 后处理:对端点进行后处理,如去除短时静音区域、合并相邻的语音段等。
这一步旨在优化端点的准确性和平滑性,以提高后续语音处理算法的性能。
本科毕业论文-—语音端点检测算法的研究及matla程序仿真与实现

摘要摘要语音端点检测是指从一段语音信号中准确的找出语音信号的起始点和结束点,它的目的是为了使有效的语音信号和无用的噪声信号得以分离,因此在语音识别、语音增强、语音编码、回声抵消等系统中得到广泛应用。
目前端点检测方法大体上可以分成两类,一类是基于阈值的方法,该方法根据语音信号和噪声信号的不同特征,提取每一段语音信号的特征,然后把这些特征值与设定的阈值进行比较,从而达到语音端点检测的目的,该方法原理简单,运算方便,所以被人们广泛使用,本文主要对基于阀值的方法进行研究。
另一类方法是基于模式识别的方法,需要估计语音信号和噪声信号的模型参数来进行检测。
由于基于模式识别的方法自身复杂度高,运算量大,因此很难被人们应用到实时语音信号系统中去。
端点检测在语音信号处理中占有十分重要的地位,直接影响着系统的性能。
本文首先对语音信号进行简单的时域分析,其次利用短时能量和过零率算法、倒谱算法、谱熵算法进行语音端点检测,并对这几种算法进行端点检测,并进行实验分析。
本文首先分别用各算法对原始语音信号进行端点检测,并对各算法检测结果进行分析和比较。
其次再对语音信号加噪,对不同信噪比值进行端点检测,分析比较各算法在不同信噪比下的端点检测结果,实验结果表明谱熵算法语音端点检测结果比其他两种方法好。
关键词语音端点检测;语音信号处理;短时能量和过零率;倒谱;谱熵IAbstractEndpoint detection is a voice signal from the accurate speech signal to the identify start and the end points, the purpose is to enable to separated the effective voice signals and un-useful noise. So, in the speech recognition system, speech enhancement, speech coding, echo cancellation and other systems are widely used.In Current the endpoint detection can be roughly divided into two categories, one is based on the threshold method based on the different characteristics of speech signal and the noise signals, a voice signal for each extracted feature, and then set the values of these thresholds compare with the values to achieve the endpoint detection purposes, This method is simple, it convenient operation, it is widely used, the main in this paper is based on the method of threshold method. Another method is based on the method of pattern recognition , it needs to estimate the speech signal and the noise signal model parameters were detected. Because is based on the method of pattern recognition and high self-complexity, a large amount of computation, so it is difficult to be use in real-time voice signal system for people.The Endpoint detection is take a very important position in the speech recognition, it directly affects the performance of the system. In this article first domain analysis in simple speech signal time, than dual threshold algorithm, cepstrum algorithm, spectral entropy algorithm for endpoint detection, and these types of endpoint detection algorithms, and experimental analysis points. Firstly, the algorithm were used to the original speech signal detection, and the algorithm to analyze and compare results. Secondly, the speech signal and then adding noise, SNR values for different endpoint detection, analysis and comparison of various algorithms under different SNR endpoint detection results, experimental results show that the spectral entropy of speech endpoint detectionIIalgorithm results better than the other two methods.Keywords voice activity detection;Signal processing; Average energy use of short-term and short-time average zero-crossing rat; cepstrum; spectral entropyIII毕业设计(论文)原创性声明和使用授权说明原创性声明本人郑重承诺:所呈交的毕业设计(论文),是我个人在指导教师的指导下进行的研究工作及取得的成果。
端点检测

,即得
至此,求得了x1(n),即规则部分时间序列。 (4)利用公式
求得复杂度C0 。
不同语音端点检测方法的实验结果 对比
实验条件
(1)英文数据库
(2)中文数据库
中文数据库的采集由学生,都说普通话,个别人略带地方色彩。因 语音信号主要集中在300一3400Hz,所以采用44100Hz的采样率,采样位 数16位,采样通道选用立体声,每人读5次,每次通读十个词语一遍。共 有250个有效测试session共有830MB的数据量。说话内容选择的词语考虑 到了汉语中各个元音、辅音、摩擦音、爆破音和鼻音等各个不同的汉语 因素。
式中,sgn为符号函数,即:
过零率有两类重要的应用:第一,用于粗略地描述信号的频谱特 性;第二,用于判别清音和浊音、有话和无话。从上面提到的定义出 发计算过零率容易受低频干扰,特别是50Hz交流干扰的影响。解决这 个问题的办法,一个是做高通滤波器或带通滤波,减小随机噪声的影 响;另一个有效方法是对上述定义做一点修改,设一个门限T,将过 零率的含义修改为跨过正负门限。 于是,有定义:
根据Lmapel和Ziv的研究,对几乎所有的x属于[0,1]区间的c(n) 都会趋向一个定值:
其中b(n)是随机序列的渐进行为,用它来使c(n)归一化,称为 “相对复杂度”。 定义相对复杂度:
通常就是用这个函数来表达时间序列的复杂性变化。从这种算法 可以看出,完全随机的序列C(n)值趋向于1,而有规律的周期运动的 C(n)值则趋向于0。
式中,Cn与C’n分别代表谱密度函数S(w)与S’(w)的倒谱系数。
方法: 倒谱距离的测量法步骤类似于基于能量的端点检测,只是将倒谱 距离代替短时能量来作为特征参数。首先,假定前几帧信号是背景噪 声,计算这些帧的倒谱系数,利用前几帧倒谱系数的平均值可估计背 景噪声的倒谱系数,噪声倒谱系数的近似值可按下述规则进行更新, 即当前帧被认为是非语音帧:
语音信号处理实验报告1

实验目的:理解和掌握基于能量和过零率的语音端点检测的方法和原理实验原理:语音端点检测就是指从包含语音的一段信号中确定出语音地起始点和结束点。
基于能量和过零率的语音端点检测方法采用两级判决法。
第一级:先根据语音短时能量选取较高门限T1,进行一次粗判,得AB点;然后由背景噪声的平均能量确定一个较低门限T2,并从A点往左、B点往右分别找到短时能量包络与门限T2相交点C与D。
第二级:以短时平均过零率为标准,从C往左、D往右找到短时平均过零率低于门限T3(由背景噪声的平均过零率所确定)的两点E、F,即为语音段的起止点。
实验内容:主程序:clear all;S=wavread('song.wav');%¶ÁÈëÉùÒôÎļþfigure(1);subplot(4,1,1);plot(S);title('Ô-ʼÓïºÅÐźÅ');N=wavread('noise.wav');%¶ÁÈë±³¾°ÔëÉùplot(N);s=fra(100,45,S);%fen zhenLs=length(s);s2=s.^2;soundenergy=sum(s2,2)%ÇóÒ»Ö¡µÄÄÜÁ¿;subplot(4,1,2);plot(soundenergy);title('Ô-ʼÓïÒô¶ÌʱÄÜÁ¿');averagesoundenergy=sum(soundenergy)/Ls;soundzcr=zcro(s);%Çó¹ýÁãÂÊsubplot(4,1,3);plot(soundzcr);title('Ô-ʼÓïÒô¹ýÁãÂÊ');averagesoundzcr=sum(soundzcr)/Ls;n=fra(100,45,N);Ln=length(n);n2=n.^2;noiseenergy=sum(n2,2);averagenoiseenergy=sum(soundenergy)/Ln;noisezcr=zcro(n);averagenoisezcr=sum(noisezcr)/Ln;A=1;B=1;for i=1:Lsif (soundenergy(i)>10*averagenoiseenergy) T1=i;break;endendfor i=Ls:-1:1if (soundenergy(i)>A*averagenoiseenergy) T2=i;break;endendfor i=1:T1if(soundzcr(i)>B*averagenoisezcr)E=i;break;endendfor i=Ls:-1:1if(soundzcr(i)>B*averagenoisezcr)F=i;break;endendE=45*E;F=45*F;duandianjianche=S(E:F,:);subplot(4,1,4);plot(duandianjianche);求过零率函数:function f=zcro(x)f=zeros(size(x,1),1);for i=1:size(x,1)z=x(i,:);for j=1:(length(z)-1);if z(j)*z(j+1)<0f(i)=f(i)+1;endendend分帧函数:function f=fra(len,inc,x)fh=fix(((size(x,1)-len)/inc)+1); f=zeros(fh,len);i=1;n=1;while i<=fhj=1;while j<=lenf(i,j)=x(n);j=j+1;n=n+1;endn=n-len+inc;i=i+1;end实验结果:结果为:实验总结:。
机器语音中的语音端点检测算法研究

机器语音中的语音端点检测算法研究近年来,机器语音技术发展迅猛,已经逐渐渗透到我们日常生活的各个领域中。
例如语音交互、智能家居、语音识别等等领域中,机器语音的应用正在不断增多。
然而在机器语音技术的应用中,一个重要的问题就是语音的端点检测。
本文将围绕机器语音中的语音端点检测算法进行研究,分析其基本原理和现状。
一、语音端点检测的基本原理语音信号是一种时间序列信号,在应用中,我们需要找到有意义的语音部分而忽略掉无意义的部分,从而进行后续的处理。
语音端点检测就是将语音信号分割成有意义的部分和无意义的部分。
在语音信号中,一段连续的语音信号通常由语音信号模板(speech model)和音频背景模板(noise model)混合组成,语音端点检测算法的主要任务就是找到这些分割点。
通常,语音端点检测算法的流程包含以下几个步骤:1、特征提取 - 通过信号处理方法从音频信号中提取有代表性的特征。
特征通常是一些频率特征,用于区分语音信号和非语音信号。
2、特征处理 - 对提取到的特征进行处理,以便更好地区分语音信号和非语音信号。
3、检测算法 - 通过特定算法对特征进行分析和检测,以找出语音信号的起始和终止点。
二、语音端点检测算法的现状语音端点检测算法近年来已经取得了很好的进展,并且应用领域广泛。
在实际应用中,我们经常会面临源自噪音、强唱、机器干扰等各种各样的问题。
为了解决这些问题,研究人员提出了很多不同的语音端点检测算法。
1、基于能量方法的语音端点检测算法最简单的端点检测算法就是能量检测法。
这种检测法通过计算语音信号的平均功率、放大声音强度或计算总体能量等方式来达到分辨语音信号和噪音的效果。
不过,这种算法很容易出现误判。
2、基于短时帧能量的语音端点检测算法为了能够更准确地检测语音端点,研究人员提出了基于短时帧能量的方法。
这种方法分析语音信号中的每一帧并计算每帧的平均功率,根据信号幅值阈值来启动信号检测。
这种方法常用于识别口语较清晰的场景。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验一语音信号端点检测一、实验目的1.学会MATLAB 的使用,掌握MATLAB 的程序设计方法;2.掌握语音处理的基本概念、基本理论和基本方法;3.掌握基于MATLAB 编程实现带噪语音信号端点检测;4.学会用MATLAB 对信号进行分析和处理。
5. 学会利用短时过零率和短时能量,对语音信号的端点进行检测。
二、实验仪器设备及软件HP D538、MATLAB三、实验原理端点检测是语音信号处理过程中非常重要的一步,它的准确性直接影响到语音信号处理的速度和结果。
本次实验利用短时过零率和短时能量相结合的语音端点检测算法利用短时过零率来检测清音,用短时能量来检测浊音,两者相配合便实现了信号信噪比较大情况下的端点检测。
算法对于输入信号的检测过程可分为短时能量检测和短时过零率检测两个部分。
算法以短时能量检测为主,短时过零率检测为辅。
根据语音的统计特性,可以把语音段分为清音、浊音以及静音(包括背景噪声)三种。
在本算法中,短时能量检测可以较好地区分出浊音和静音。
对于清音,由于其能量较小,在短时能量检测中会因为低于能量门限而被误判为静音;短时过零率则可以从语音中区分出静音和清音。
将两种检测结合起来,就可以检测出语音段(清音和浊音)及静音段1、短时能量计算定义n 时刻某语言信号的短时平均能量En 为:∑∑--=+∞∞--=-=nN n m m n w m x m n w m x En )1(22)]()([)]()([ 式中N 为窗长,可见短时平均能量为一帧样点值的平方和。
特殊地,当窗函数为矩形窗时,有∑--==nN n m m x En )1(2)( 2、短时过零率过零就是指信号通过零值。
过零率就是每秒内信号值通过零值的次数。
对于离散时间序列,过零则是指序列取样值改变符号,过零率则是每个样本的改变符号的次数。
对于语音信号,则是指在一帧语音中语音信号波形穿过横轴(零电平)的次数。
可以用相邻两个取样改变符号的次数来计算。
如果窗的起点是n=0,短时过零率Z 为波形穿过横轴(零电平)的次数|))1(())((|2110∑-=--=N n w w n S Sgn n S Sgn Z {00,1,1)sgn(≥<-=x x x短时过零可以看作信号频率的简单度量浊音的短时平均幅度最大,无声的短时平均幅度最小,清音的短时过零率最大,无声居中,浊音的短时过零率最小。
3、短时自相关函数∑--=+=1)()()(k N n ww w k n s n s k R ①是偶函数;②s(n)是周期的,那么R (k )也是周期的;③可用于基音周期估计和线性预测分析4、判断语音信号的起点和终点利用短时平均幅度和短时过零率可以判断语音信号的起点和终点。
语音端点检测方法可采用测试信号的短时能量或短时对数能量、联合过零率等特征参数,并采用双门限判定法来检测语音端点,即利用过零率检测清音,用短时能量检测浊音,两者配合。
首先为短时能量和过零率分别确定两个门限,一个是较低的门限数值较小,对信号的变化比较敏感,很容易超过;另一个是比较高的门限,数值较大。
低门限被超过未必是语音 的开始,有可能是很短的噪声引起的,高门限被超过并且接下来的自定义时间段内的语音。
四、实验步骤及程序(1) 实验步骤:1、取一段录音作为音频样本。
2、利用公式分别编程计算这段语音信号的短时能量和短时过零率,然后分别画出它们的曲线。
3、调整能量门限。
4、进行幅度归一化并设置帧长、短时能量阈值、过零率阈值等参数。
5、编写程序实现语音端点检测。
6、最后得到语音端点检测图像。
(2) 语音信号的端点检测程序流程图:图 1.1 语音信号的端点检测程序流程图(3) 语音信号的端点检测实验源程序:clc;clear;[x,fs]=wavread('2.wav');%%[y] = end_point(x);%%% [f0] = pitch_sift(x,0.38,fs);% plot(f0);%%e_x=(frame(x,'lpc_spectrum',fs));%plot(e_x(2,:));%某一维随时间变化plot(e_x(:,89));%一帧信号各维之间变化hold on;c=melcepst(x,fs);plot(c(89,:),'k');frame定义% function [y] = frame(x,func,SAMP_FREQ,l,step)% where y is output on a frame by frame basis, x is input speech,% and l is the window size. l and step are optional parameters,% by default SAMP_FREQ is 8000, l is 200, and step is 100.% func is a string e.g. 'pitch' that determines a function that you want% to apply to x on a short-time basis.%% Written by: Levent Arslan Apr. 11, 1994%function [yy] = frame(x,func,SAMP_FREQ,l,step)[m,n]=size(x);if m>nn=m;elsen=n;x=x';endif nargin < 3, SAMP_FREQ=16000; end;if nargin < 4, l=SAMP_FREQ/40; end;if nargin < 5, step=l/2; end;num_frames=ceil(n/step); %NUMBER OF FRAMESx(n+1:n+2*l)=zeros(2*l,1); %ADD ZEROS AT THE END OF THE SPEECH SIGNALi=[0:step:num_frames*step]';%i is the arithmetical proportion series by step j=i*ones(1,l);i=j+ones(num_frames+1,1)*[1:l];y=reshape(x(i),num_frames+1,l)';y=(hanning(l)*ones(1,num_frames+1)).*y;for i=1:num_framescmd=sprintf('yy(:,i)=%s(y(:,i));',func);eval(cmd);endmelcepst定义function c=melcepst(s,fs,w,nc,p,n,inc,fl,fh)%MELCEPST Calculate the mel cepstrum of a signal C=(S,FS,W,NC,P,N,INC,FL,FH)%%% Simple use: c=melcepst(s,fs) % calculate mel cepstrum with 12 coefs, 256 sample frames % c=melcepst(s,fs,'e0dD') % include log energy, 0th cepstral coef, delta and delta-delta coefs%% Inputs:% s speech signal% fs sample rate in Hz (default 11025)% nc number of cepstral coefficients excluding 0'th coefficient (default 12) % n length of frame (default power of 2 <30 ms))% p number of filters in filterbank (default floor(3*log(fs)) )% inc frame increment (default n/2)% fl low end of the lowest filter as a fraction of fs (default = 0)% fh high end of highest filter as a fraction of fs (default = 0.5)%% w any sensible combination of the following:%% 'R' rectangular window in time domain% 'N' Hanning window in time domain% 'M' Hamming window in time domain (default)%% 't' triangular shaped filters in mel domain (default)% 'n' hanning shaped filters in mel domain% 'm' hamming shaped filters in mel domain%% 'p' filters act in the power domain% 'a' filters act in the absolute magnitude domain (default)%% '0' include 0'th order cepstral coefficient% 'e' include log energy% 'd' include delta coefficients (dc/dt)% 'D' include delta-delta coefficients (d^2c/dt^2)%% 'z' highest and lowest filters taper down to zero (default)% 'y' lowest filter remains at 1 down to 0 frequency and% highest filter remains at 1 up to nyquist freqency%% If 'ty' or 'ny' is specified, the total power in the fft is preserved. %% Outputs: c mel cepstrum output: one frame per row%% Copyright (C) Mike Brookes 1997%% Last modified Thu Jun 15 09:14:48 2000%% VOICEBOX is a MATLAB toolbox for speech processing. Home page is at% /hp/staff/dmb/voicebox/voicebox.html% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % This program is free software; you can redistribute it and/or modify% it under the terms of the GNU General Public License as published by% the Free Software Foundation; either version 2 of the License, or% (at your option) any later version.%% This program is distributed in the hope that it will be useful,% but WITHOUT ANY WARRANTY; without even the implied warranty of% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the% GNU General Public License for more details.%% You can obtain a copy of the GNU General Public License from% ftp:///pub/gnu/COPYING-2.0 or by writing to% Free Software Foundation, Inc.,675 Mass Ave, Cambridge, MA 02139, USA. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%if nargin<2 fs=11025; endif nargin<3 w='M'; endif nargin<4 nc=12; endif nargin<5 p=floor(3*log(fs)); endif nargin<6 n=pow2(floor(log2(0.03*fs))); endif nargin<9fh=0.5;if nargin<8fl=0;if nargin<7inc=floor(n/2);endendendif any(w=='R')z=enframe(s,n,inc);elseif any (w=='N')z=enframe(s,hanning(n),inc); elsez=enframe(s,hamming(n),inc);endf=rfft(z.');[m,a,b]=melbankm(p,n,fs,fl,fh,w); pw=f(a:b,:).*conj(f(a:b,:));pth=max(pw(:))*1E-6;if any(w=='p')y=log(max(m*pw,pth));elseath=sqrt(pth);y=log(max(m*abs(f(a:b,:)),ath)); endc=rdct(y).';nf=size(c,1);nc=nc+1;if p>ncc(:,nc+1:end)=[];elseif p<ncc=[c zeros(nf,nc-p)];endif ~any(w=='0')c(:,1)=[];endif any(w=='e')c=[log(sum(pw)).' c];end% calculate derivativeif any(w=='D')vf=(4:-1:-4)/60;af=(1:-1:-1)/2;ww=ones(5,1);cx=[c(ww,:); c; c(nf*ww,:)];vx=reshape(filter(vf,1,cx(:)),nf+10,nc); vx(1:8,:)=[];ax=reshape(filter(af,1,vx(:)),nf+2,nc); ax(1:2,:)=[];vx([1 nf+2],:)=[];if any(w=='d')c=[c vx ax];elsec=[c ax];endelseif any(w=='d')vf=(4:-1:-4)/60;ww=ones(4,1);cx=[c(ww,:); c; c(nf*ww,:)];vx=reshape(filter(vf,1,cx(:)),nf+8,nc); vx(1:8,:)=[];c=[c vx];endif nargout<1[nf,nc]=size(c);t=((0:nf-1)*inc+(n-1)/2)/fs;ci=(1:nc)-any(w=='0')-any(w=='e');imh = imagesc(t,ci,c.');axis('xy');xlabel('Time (s)');ylabel('Mel-cepstrum coefficient');map = (0:63)'/63;colormap([map map map]);colorbar;end五、实验结果与分析六、实验体会这次的实验,,给我最大的收获就是培养了独立思考的能力,通过读程序,我更加了解MATLAB 的程序设计方法,进一步的了解了掌握基于MATLAB 编程实现带噪语音信号端点检测的原理,让我对这门课程又有了新的理解。