基于Matlab的语音端点检测实验研究

合集下载

实验二基于MATLAB分析语音信号频域特征

实验二基于MATLAB分析语音信号频域特征

实验二 基于MATLAB 分析语音信号频域特征一、实验目的信号的傅立叶表示在信号的分析与处理中起着重要的作用。

因为对于线性系统来说,可以很方便地确定其对正弦或复指数和的响应,所以傅立叶分析方法能完善地解决许多信号分析和处理问题。

另外,傅立叶表示使信号的某些特性变得更明显,因此,它能更深入地说明信号的各项物理现象。

由于语音信号是随着时间变化的,通常认为,语音是一个受准周期脉冲或随机噪声源激励的线性系统的输出。

输出频谱是声道系统频率响应与激励源频谱的乘积。

声道系统的频率响应及激励源都是随时间变化的,因此一般标准的傅立叶表示虽然适用于周期及平稳随机信号的表示,但不能直接用于语音信号。

由于语音信号可以认为在短时间内,近似不变,因而可以采用短时分析法。

本实验要求掌握傅里叶分析原理,会利用已学的知识,编写程序估计短时谱、倒谱,画出语谱图,并分析实验结果,在此基础上,借助频域分析方法所求得的参数分析语音信号的基音周期或共振峰。

二、实验原理1、短时傅立叶变换由于语音信号是短时平稳的随机信号,某一语音信号帧的短时傅立叶变换的定义为:()()()jwjwmn m X e x m w n m e∞-=-∞=-∑ (1.1)其中w(n-m)是实窗口函数序列,n 表示某一语音信号帧。

令n-m=k',则得到(')'()(')(')jwjw n k n k X e w k x n k e∞--=-∞=-∑ (1.2)于是可以得到()()()jw jwnjwkn k X e ew k x n k e∞-=-∞=-∑ (1.3)假定()()()jwjwkn k X e w k x n k e∞=-∞=-∑ (1.4)则可以得到()()jw jwn jw n n X e e X e -= (1.5)同样,不同的窗口函数,将得到不同的傅立叶变换式的结果。

由上式可见,短时傅立叶变换有两个变量:n 和ω,所以它既是时序n 的离散函数,又是角频率ω的连续函数。

基于MATLAB的语音信号分析与处理的实验报告

基于MATLAB的语音信号分析与处理的实验报告

基于MA TLAB的语音信号分析与处理的实验报告数字信号课程设计,屌丝们有福了一.实验目的数字信号课程设计,屌丝们有福了综合计运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应的结论,培养发现问题、分析问题和解决问题的能力。

并利用MATLAB作为工具进行实现,从而复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力,并从实践上初步实现对数字信号的处理。

此外,还系统的学习和实现对语音信号处理的整体过程,从语音信号的采集到分析、处理、频谱分析、显示和储存。

二.实验的基本要求数字信号课程设计,屌丝们有福了1.进一步学习和巩固MATLAB的使用,掌握MATLAB的程序设计方法。

2.掌握在windows环境下语音信号采集的方法。

3.掌握数字信号处理的基本概念、基本理论、原理和基本方法。

4.掌握MATLAB设计FIR和IIR数字滤波器的方法。

5.学会用MATLAB对信号进行分析和处理。

三.实验内容录制一段自己的语音信号,(语音信号声音可以理解成由振幅和相位随时间缓慢变化的正弦波构成。

人的听觉对声音的感觉特征主要包含在振幅信息中,相位信息一般不起作用。

在研究声音的性质时,往往把时域信息(波形图)变换得到它的频域信息(频谱),通过研究频谱和与频谱相关联的特征获得声音的特性。

)并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法或者双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号发生的变化;回放语音信号。

数字信号课程设计,屌丝们有福了四.实验的实现(1).语音信号的采集采用windows下的录音机或者手机、其他的软件,录制一段自己的话音,时间控制在一分钟左右;然后在MATLAB软件平台下,利用函数wavread对自己的话音进行采样,记住采样的频率和采样的点数。

基于MATLAB语音信号检测分析及处理

基于MATLAB语音信号检测分析及处理

基于MATLAB语音信号检测分析及处理目录一、内容概述 (2)1. 研究背景与意义 (3)2. MATLAB在语音信号处理中的应用 (4)3. 论文研究内容及结构 (5)二、语音信号基础 (6)1. 语音信号概述 (8)2. 语音信号的特性 (9)3. 语音信号的表示方法 (10)三、MATLAB语音信号处理工具 (11)1. MATLAB语音工具箱介绍 (12)2. 常用函数及其功能介绍 (13)四、语音信号检测与分析 (15)1. 语音信号检测原理及方法 (16)2. 语音信号的频谱分析 (18)3. 语音信号的时频分析 (19)4. 语音信号的端点检测 (20)五、语音信号处理算法研究 (21)1. 预加重处理算法 (22)2. 分帧与加窗处理算法 (23)3. 预处理算法 (24)4. 特征提取算法 (25)5. 模式识别与分类算法 (26)六、语音信号处理实验设计与实现 (27)1. 实验目的与要求 (28)2. 实验环境与工具配置 (29)3. 实验内容与步骤 (30)4. 实验结果分析与讨论 (31)七、语音信号处理应用案例 (32)1. 语音识别系统应用案例 (33)2. 语音合成系统应用案例 (34)3. 语音情感识别应用案例 (35)4. 其他领域应用案例 (36)八、总结与展望 (38)1. 研究成果总结 (39)2. 研究不足与问题剖析 (40)3. 未来研究方向与展望 (41)一、内容概述语音信号捕捉与预处理:介绍如何使用MATLAB捕捉语音信号,包括从麦克风等输入设备获取原始语音数据,并对信号进行预处理,如去除噪声、增强语音质量等。

特征提取:详述如何从预处理后的语音信号中提取关键特征,如梅尔频率倒谱系数(MFCC)、线性预测编码(LPC)等,以便进行后续的模型训练或识别。

语音信号检测分析:探讨基于MATLAB的语音信号检测分析方法,包括端点检测、语音活动等检测算法的实现,以及基于统计模型、机器学习模型的语音信号分析。

matlab高级编程与应用-语音处理实验报告

matlab高级编程与应用-语音处理实验报告

语音处理实验报告自03 张驰昱2010012028一、语音预测模型(1)给定e(n) = s(n) -a1s(n -1) -a2s(n -2)假设e(n)是输入信号,s(n)是输出信号,上述滤波器的传递函数是什么?如果a1 = 1.3789,a2 = -0.9506 ,上述合成模型的共振峰频率是多少?用zplane,freqz,impz分别绘出零极点图,频率响应和单位样值响应。

用filter绘出单位样值响应,比较和impz的是否相同。

问题分析:本问题主要练习传递函数到零极点的转化,零极点的绘制,频率响应的绘制,单位响应的绘制,复习filter数字滤波器的使用。

具体实现:clear;clc;a = [1, -1.3789, 0.9506];sys=tf(1,a,-1,'variable','z^-1')[z,p]=tf2zp(1,a);%[r,p,k]=residuez(1,a);也能求出零点omg=abs(angle(p(1)));fs=8000;%数字采样频率f=omg*fs/2/pi%弧度转化为频率n=[0:49]';x=(n==0);figure(1);zplane(1,a);figure(2);freqz(1,a);figure(3);subplot(2,1,1),stem(n,filter(1,a,x));figure(3);subplot(2,1,2),impz(1,a,50);(2)理解speechproc的主要流程我认为主要的部分是以下程序段:(个人理解写在了注释中)%先要统一初始化所用到的向量,这样可以提高执行效率for n = 3:FN%汉明窗取到了帧长的三倍,所以n从3开始s_w = s(n*FL-WL+1:n*FL).*hw; %加窗方便用lpc处理[A E] = lpc(s_w, P); %用lpc技术得到传递函数系数As_f = s((n-1)*FL+1:n*FL); %待处理的本帧语音,即激励响应%需要推算本帧语音的激励,只有得到了激励才能做接下来的变声处理s_Pitch = exc(n*FL-222:n*FL);PT= findpitch(s_Pitch); %刚才算出的激励信号是有高斯白噪声的,需要找%出基音周期和能量,为重新合成激励信号做准备 G = sqrt(E*PT(n));(3)在27帧处观察零极点图问题分析:主要让我们对语音传函的共轭极点有一个更直观的认识具体实现:if n == 27figure(n);zplane(1,A);end(4)用filter计算每帧的激励信号问题分析:已经求出了传函系数和激励相应,只要传函的分子分母互换把激励相应当激励,得到的相应就是原激励具体实现:%前输出状态作为后输入状态即前后状态不变[temp1,zi_pre]=filter(A,1,s_f,zi_pre);exc((n-1)*FL+1:n*FL)=temp1;(5)利用刚才得到的激励信号,继续用filter重建语音问题分析:相当于对于之前求出的激励的验算。

基于Matlab编写的语音端点检测

基于Matlab编写的语音端点检测

基于Matlab编写的语音端点检测专业:班级:姓名:指导教师:2011 年 6月 18 日一、实验目的1.学会MATLAB的使用,掌握MATLAB的程序设计方法;3.掌握语音处理的基本概念、基本理论和基本方法;4.掌握基于MATLAB编程实现带噪语音信号端点检测;5.学会用MATLAB对信号进行分析和处理。

二、实验内容简介:可利用时域分析(短时能量、短时过零率、短时自相关)方法的某一个特征或某几个特征的结合,判定某一语音信号的端点,尤其在有噪声干扰时,如何准确检测语音信号的端点,这在语音处理中是富有挑战性的一个课题。

要求:(1)录制语音,读入文件,绘制波形(2)分帧,绘制能量曲线和短时过零率曲线(3)根据上述端点检测原理,实现端点检测(4)界面三.课程设计原理端点检测是语音信号处理过程中非常重要的一步,它的准确性直接影响到语音信号处理的速度和结果,因此端点检测方法的研究一直是语音信号处理中的热点。

本设计使用传统的短时能量和过零率相结合的语音端点检测算法利用短时过零率来检测清音.用短时能量来检测浊音,两者相配合便实现了信号信噪比较大情况下的端点检测。

算法对于输入信号的检测过程可分为短时能量检测和短时过零率检测两个部分。

算法以短时能量检测为主,短时过零率检测为辅。

根据语音的统计特性,可以把语音段分为清音、浊音以及静音(包括背景噪声)三种。

在本算法中,短时能量检测可以较好地区分出浊音和静音。

对于清音,由于其能量较小,在短时能量检测中会因为低于能量门限而被误判为静音;短时过零率则可以从语音中区分出静音和清音。

将两种检测结合起来,就可以检测出语音段(清音和浊音)及静音段1、短时能量计算定义n 时刻某语音信号的短时平均能量n E 为:∑∑--=+∞-∞=-=-=n N n m m n m n w m x m n w m x E )1(22)]()([)]()([式中N 为窗长,可见短时平均能量为为一帧样点值的甲醛平方和。

基于MATLAB的语音信号时域特性分析_语音信号处理实验报告

基于MATLAB的语音信号时域特性分析_语音信号处理实验报告

南京信息工程大学 实验(实习)报告实验(实习)名称 基于MATLAB 的语音信号时域特性分析 实验(实习)日期 2013.4.18 得分 ___指导教师院电子与信息工程专业电子信息工程年级 班次 姓名 学号一、实验目的语音信号是一种非平稳的时变信号,它携带着各种信息。

在语音编码、语音合成、语音识别和语音增强等语音处理中无一例外需要提取语音中包含的各种信息。

语音信号分析的目的就在与方便有效的提取并表示语音信号所携带的信息。

语音信号分析可以分为时域和变换域等处理方法,其中时域分析是最简单的方法,直接对语音信号的时域波形进行分析,提取的特征参数主要有语音的短时能量,短时平均过零率,短时自相关函数等。

本实验要求掌握时域特征分析原理,并利用已学知识,编写程序求解语音信号的短时过零率、短时能量、短时自相关特征,分析实验结果,并能掌握借助时域分析方法所求得的参数分析语音信号的基音周期及共振峰。

二、实验原理及实验结果1.窗口的选择通过对发声机理的认识,语音信号可以认为是短时平稳的。

在5~50ms 的范围内,语音频谱特性和一些物理特性参数基本保持不变。

我们将每个短时的语音称为一个分析帧。

一般帧长取10~30ms 。

我们采用一个长度有限的窗函数来截取语音信号形成分析帧。

通常会采用矩形窗和汉明窗。

图1.1给出了这两种窗函数在帧长N=50时的时域波形。

0.20.40.60.811.21.41.61.82矩形窗samplew (n )0.10.20.30.40.50.60.70.80.91hanming 窗samplew (n )图1.1 矩形窗和Hamming 窗的时域波形矩形窗的定义:一个N 点的矩形窗函数定义为如下{1,00,()n Nw n ≤<=其他hamming 窗的定义:一个N 点的hamming 窗函数定义为如下0.540.46cos(2),010,()n n NN w n π-≤<-⎧⎨⎩其他=这两种窗函数都有低通特性,通过分析这两种窗的频率响应幅度特性可以发现(如图1.2):矩形窗的主瓣宽度小(4*pi/N ),具有较高的频率分辨率,旁瓣峰值大(-13.3dB ),会导致泄漏现象;汉明窗的主瓣宽8*pi/N ,旁瓣峰值低(-42.7dB ),可以有效的克服泄漏现象,具有更平滑的低通特性。

使用Matlab进行实时语音处理与语音识别的实践指南

使用Matlab进行实时语音处理与语音识别的实践指南

使用Matlab进行实时语音处理与语音识别的实践指南实时语音处理与语音识别是人工智能领域一个重要而复杂的研究方向。

而Matlab作为一种强大的科学计算软件,提供了丰富的工具箱和函数库,为语音处理与语音识别的研究和实践提供了极大的便利。

本文将介绍如何使用Matlab进行实时语音处理与语音识别并给出一些实践指南。

一、Matlab的语音处理工具箱Matlab的语音处理工具箱(Speech Processing Toolbox)是Matlab中专门用于语音信号的处理和分析的工具箱。

它提供了一系列函数和工具,包括语音信号的录制和播放、声音特征提取、声音增强和去噪、语音识别等。

在进行实时语音处理与语音识别之前,我们需要先安装并激活语音处理工具箱。

二、实时语音处理的基本步骤实时语音处理通常由以下几个基本步骤组成:声音录制、语音信号分帧、对每帧信号进行加窗处理、进行傅里叶变换得到频谱信息、对频谱信息进行处理和特征提取、进行语音识别。

1. 声音录制Matlab提供了`audiorecorder`函数来实现声音的录制功能。

下面是一个简单的示例代码:```fs = 44100; % 采样率nBits = 16; % 采样精度nChannels = 1; % 声道数recorder = audiorecorder(fs, nBits, nChannels);record(recorder);pause(5); % 录制5秒stop(recorder);y = getaudiodata(recorder); % 获取录音数据```2. 语音信号分帧语音信号在进行处理之前需要进行分帧处理,将连续的语音信号分成若干个小的时间窗口。

分帧的目的是提取局部语音特征,常用的窗口函数包括矩形窗、汉明窗等。

Matlab提供了`buffer`函数用于分帧处理。

示例代码如下:```frameSize = 256; % 窗口大小overlap = 128; % 帧之间的重叠部分frames = buffer(y, frameSize, overlap);```3. 加窗处理加窗处理是对每一帧信号进行加窗操作,以减少频谱泄漏。

语音端点检测及其在Matlab中的实现

语音端点检测及其在Matlab中的实现

描述它们的定义和检测方法。
2.1短时能量


1—1.1
E=艺Ix(n)I或E=乞xZ(n)
n=l
n=1
式中x(n)为信号幅度,N为语音帧长。
检测过程:将短时能量与给定能量门限Gl相比,若大于它 并能在一定时问内达到门限G2并维持给定帧数(防止把短时 脉冲误判为语音),则认为是语音起点,否则继续向下找。判定 起点后,继续将短时能量与给定门限G3比较,当小于它并能在 一定时间内降到门限G4并维持给定帧数(防止将语音中的小 停顿误判为语音结束),认为是终点,否则继续向下找。 2.2过零率
英文刊名: 年,卷(期): 被引用次数:
刘羽 桂林工学院科技处,广西,桂林,541004
计算机时代 COMPUTER ERA 2005(8) 8次
参考文献(4条) 1.李强;赵伟 MATLAB数据处理与应用 2001
2.果永振;何遵文 一种多特征语音端点检测算法及实现[期刊论文]-通讯技术 2003(1)
出版社,1983.
【2】何强,何英.Matlab扩展编程.清华大学出版社,2002.
【3】果采振,何遵文.一种多特征语音端点枪测算法反实现.通讯技术,
2003.1.
[41李强,赵伟·M妣文据处理与应用·国防工业出版社,2001· 豳
万方数据
语音端点检测及其在Matlab中的实现
作者: 作者单位: 刊名:
以方便地进行一些语音的处理工作。例如:

(1)语音采样可以用以下命令实现:
x=wavrecord(k+fs,fs,‘dtype’):
其中x为语音采样信号,fs为采样率,k为采样秒数,。dtype’为
采样数据类型。
(2)语音数据也可以用以下命令从语音文件中读取:
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

浙江科技学院学报,第19卷第3期,2007年9月Jo ur na l of Zhejiang U niv ersity of Science and T echnolog y Vo l.19No.3,Sep.2007收稿日期:2007 04 23作者简介:张震宇(1976 ),男,浙江兰溪人,讲师,硕士,主要从事电子技术和语音信号处理的研究。

基于Matlab 的语音端点检测实验研究张震宇(浙江科技学院自动化与电气工程学院,杭州310023)摘 要:端点检测在语音识别中占有十分重要的地位,直接影响着系统的性能。

今借助于M atlab 这一功能强大的工具,成功地开展了语音端点检测的实验研究。

首先简介端点检测涉及的几个基本概念,然后分析端点检测的基本方法,最后分别进行孤立字、孤立词的语音检测实验;重点阐述实验开展的具体过程,并给出部分关键源代码。

实验取得了良好的效果。

关键词:端点检测;短时能量;过零率;M atlab中图分类号:T P391.42 文献标识码:A 文章编号:1671 8798(2007)03 0197 05Expe rime ntal Study on Speec h Endpoint Detection Base d on MatlabZH ANG Zhen y u(Schoo l o f Automat ion and Electr ical Engineer ing,Zhejiang U niv ersity ofScience and T echnolog y,H angzhou,310023,China)Abstract:Endpoint detection plays an important ro le in speech recog nition,w hich dir ectly af fects perform ance of the speech system.With M atlab,exper im ents to detect speech endpoint are developed successfully.Firstly ,several basic concepts are introduced briefly.T hen,the basic method for endpoint detection is analyzed.At last,2experiments for isolated wo rd are car ried out.T he detailed ex perim ent procedure is focused on and par t of key source codes is given,w hich gains favourable effect.Key words:endpo int detection;short term energy ;zer o crossing r ate(ZCR);M atlab所谓端点检测,就是从一段给定的语音信号中找出语音的起始点和结束点。

在语音识别系统中,正确、有效地进行端点检测不仅可以减少计算量和缩短处理时间,而且能排除无声段的噪声干扰、提高语音识别的正确率。

研究表明,即使是在安静的环境下,语音识别系统一半以上的错误可能主要来自端点检测[1]。

除此之外,在语音合成、编码等系统中,高效的端点检测也直接影响甚至决定着系统的主要性能。

因此,端点检测的效率、质量在语音处理系统中显得至关重要,广泛开展端点检测实现手段方面的研究,有一定的现实意义。

笔者查阅了大量关于端点检测的文献资料,典型的如文献[2 5]等,发现大部分文献把重点放在理论分析层面上,集中研究了如何较好地改进检测方法;在利用M atlab工具实现时,大部分现有资料缺少详细的底层过程描述(如给出关键源代码),更多的是结果展示,这对于推广Matlab工具在语音信号处理领域的应用,显得较为欠缺。

正是基于此,笔者利用M atlab进行了端点检测的基础实验,具体阐述了实验开展的过程,直接给出了部分关键的源代码,期望通过这些基础性的工作,能促进Matlab在包含端点检测在内的语音处理领域的普及应用。

1 几个基本概念[6]1.1 短时性从整体来看,语音信号的本质特征参数是随时间而变化的,所以它是一个非平稳态过程,不能用处理平稳信号的数字信号处理技术对其进行分析处理。

从另一方面来看,虽然语音信号具有时变特性,但是在一个短时间范围内(一般认为在10~30m s 短时间内),其特性基本保持不变(即相对稳定),因而可将其看作是一个准稳态过程,即语音信号具有短时平稳性,这种特性称为语音信号的短时性!。

1.2 短时能量(Short Term Energy)由于语音信号的短时性,因此对数字化后的语音信号一般需进行分帧处理,并认为1帧内信号的频谱特性和某些物理特征参量可近似看作不变。

1帧内的信号能量值称为短时能量!。

设第n帧语音信号x n(m)的短时能量用E n表示,则其计算公式为:E n=∀N-1m=0x2n(m)式中,N为信号帧长。

1.3 过零率(Zero C rossing Rate,ZCR)1帧语音信号中,信号波形穿过横轴(零电平)的次数,称为语音信号的过零率!。

定义语音信号x n(m)的过零率Z n为:Z n=12∀N-1m=0|sgn[x n(m)]-sg n[x n(m-1)]|其中,sg n[]是符号函数,即:sgn[x]=1,(x#0) -1,(x<0)为尽可能减少低频的干扰,在实际应用中往往对过零率做出简单的修正,即设定一个门限T,将过零率的定义修改为穿越该门限的次数,即:Z n=12∀N-1m=0{|sgn[x n(m)-T]-sgn[x n(m-1)-T]|+|sgn[x n(m)+T]-sgn[x n(m-1)+T]|}2 端点检测的基本方法语音信号一般可分为无声段、清音段和浊音段。

无声段是背景噪声段,平均能量最低;浊音段为声带振动发出对应的语音信号段,平均能量最高;清音段是空气在口腔中的摩擦、冲击或爆破而发出的语音信号段,平均能量居于前两者之间。

清音段和无声段的波形特点有明显的不同,无声段信号变化较为缓慢,而清音段信号在幅度上变化剧烈,穿越零电平次数也多。

经验表明,通常清音段过零率最大[7]。

端点检测就是首先判断有声!还是无声!,如果有声,则还要判断是清音!还是浊音!。

为正确地实现端点检测,一般综合利用短时能量和过零率两个特征,采用双门限检测法!。

现以孤立字检!的发音为例,说明双门限检测法的原理,如图1所示。

该方法需做出两级判断:首先利用浊音的短时能量最大的特点,由能量定位语音的大致位置。

根据语音短时能量设定一个较高的门限T H,若信号的能量大于T H,则可确定2个端点A、B,并可认为这2个端点之间是语音信号,这样相当于完成初判。

再根据背景噪声的平均能量设定一个比T H稍低的门限T L,如果信号的能量大于T L,则所对应的端点C、D之间仍是语音信号,至此完成了第一级判断。

接下来进行第二级判断,由于语音的起点很可能是能量很弱的清音,此时还采用短时能量来区分清音和无声显然已不合适,应采用过零率。

根据短时过零率设定一个新的较低门限T,求越过该门限的过零率,从C、D两点分别向前、向后搜索,找到短时平均过零率与门限T的2个交点E、F,这2个点就是语音的真正起点和终点[8]。

图1 双门限检测法原理示意图198浙江科技学院学报第19卷3 实 验3.1 实验条件的准备硬件上,PC 机配置为:815主板、Celeron 1.0GH z CPU 、384M B 内存、40GB 硬盘、集成AC97声卡。

软件上,为Window s XP SP1操作系统、Matlab 6.5版本。

利用Window s 系统自带的 录音机!程序,由麦克风输入笔者的原始语音,格式统一为 PCM 8kH z,8位,单声道!,保存为.w av 文件。

3.2 程序设计建立工作目录后,为完成实验任务,共编制14个程序(包括函数),其中最重要、最关键的是系统的界面设计和双门限算法设计。

3.2.1 界面设计 利用M atlab 软件的图形界面设计工具Guide,可以较容易地完成界面设计[9]。

程序名为epd_gui.m,菜单设计通过调用3个函数实现,即:fig=cr eatem adfig ('e pd');fig=cr eatem adloadmenu(fig );fig=cr eatem admenus(fig );按钮 显示曲线! 显示门限! 显示端点检测结果!等的部分设计代码在附录1中给出。

3.2.2 双门限算法设计 算法设计是端点检测的核心部分,根据上述的方法进行编程,程序名为epdstats.m,其检测过程如图2所示。

关键的部分代码在附录2中给出。

图2 双门限检测法检测过程示意图3.3 实验结果笔者进行了大量孤立字和孤立词的语音实验工作,选取部分实验结果示于图3、4。

可以看出,相比较于图3,图4中语音信号波形有较明显的随机噪声,笔者认为,这可能是由于简陋的实验条件引起的:一是头戴式麦克风的质量较差,接收信号时不够稳定,和专业语音输入设备不能相提并论;二是室内无隔音等设备,实验室环境也不能做到完全的噪声限制。

上述实验结果较好地展示了 双门限检测法!的工作原理:首先利用短时平均能量门限值(先高后低)定位语音端点的大致位置,之后再利用短时过零率门限寻找端点的精确位置,从中可看出实验效果还是基本让人满意的。

限于实验条件,图3中信号的前段的短时过零率较大,使得程序在检测语音的前端时出现稍偏前的情况;图4中则出现信号后端稍偏后的情况。

在一定程度上,可通过适当修改短时能量和短时过零率门限值来处理上述情况,但最本质的还是采用更优化的端点检测算法,以及改善实验条件等,这也是笔者在后续研究工作中值得继续深入的地方。

图3 普通话发音,孤立字 九!的实验结果图4 普通话发音,孤立词 浙江!的实验结果4 结 语本文详细阐述了基于M atlab 工具进行孤立词语音端点检测的实验过程,并直接给出了部分关键199第3期张震宇:基于M atlab 的语音端点检测实验研究的源代码,实验中取得了较好的效果。

因此,利用Matlab软件强大的运算能力和方便的编程风格,实现语音信号的端点检测是完全可行的。

附录1:按钮设计代码ud.plotsT ogg le=uicontrol('P ar ent',fig,...'Units','n ormalized',...'Callback','e pd sho w Plots',...'Listbox T op',0,...'Position',[0.80.830.170.05],...'String','显示曲线',...'Sty le','to gglebutton');ud.thresholdT og gle=uicontrol('P arent',fig,...'Units','n ormalized',...'Callback','e pd sho w Thresholds',...'Listbox T op',0,...'Position',[0.80.770.170.05],...'String','显示门限',...'Sty le','to gglebutton');ud.cursorT ogg le=uicontrol('P ar ent',fig,...'Units','n ormalized',...'Callback','e pd sho wEnds',...'Listbox T op',0,...'Position',[0.80.70.170.05],...'String','显示端点检测结果',...'Sty le','to gglebutton');ud.Instructions=uicontrol('Parent',fig,...'Units','n ormalized',...'Backgr oundCo lor',[0.80.80.8],...'Listbox T op',0,...'Position',[0.080.950.660.04],...'String','移动鼠标设定检测范围',...'Sty le','tex t');ud.play Check=uico ntro l('P arent',fig,...'Units','n ormalized',...'Backgr oundCo lor',[0.80.80.8],...'Listbox T op',0,...'Position',[0.80.640.180.04],...'String','点击播放',...'Sty le','checkbox',...'Value',1);附录2:算法设计代码function[ITL,ITU,IZCT,energ y,zc,N1,N2]= epdStats(signal,fs)w inSizeM s=10; %每帧设置为10msw inShiftM s=10;w inSize=millitosamples(w inSizeM s,fs);sig nedSig nal=sg n(signal);j=1;%计算短时能量和过零率for i=1:w inShift:leng th(signal)-w inSizeenergy(j)=(sum((abs(sig nal(i:i+w inSize-1)))));zc(j)=sum(abs(sig nedSig nal(i+1:i+w inSize) -sig nedSig nal(i:i+w inSize-1)));j=j+1;end%设置短时能量门限值IMX=m ax(ener gy);IMN=mean(energy(silenceRang e));I1=0.03*(IM X-IM N)+IM N;I2=4*IM N;IT L=min(I1,I2);ITU=5*IT L;N2=0;%function[N1,N2]=getEndPoints(IT L,ITU, IZCT,energy,zc)duration=length(energy);backoffLeng th=length(1:w inShift:m illitosamples (backoffM s,fs)-w inSize);done=0;%设置过零率门限值IF=(((25*w inSizeM s)/10)/10000)*fs;IZC=m ean(zc(silenceRange));zcstd=std(zc(silenceRange));IZCT=min(IF,IZC+2*zcstd);%开始端点检测for m=1:durationif and(energy(m)>=IT L,~done)for i=m:durationif ener gy(i)<IT Lbreakelseif energ y(i)>=ITU200浙江科技学院学报第19卷if~doneN1=i-(i==m);done=1;endbreakendendendendendstartID=m ax(N1-backoffLength,1); endID=N1;M1=sum(zc(startID:endID)>=IZCT); if M1>=3for i=startID:endIDif zc(i)>=IZCTN1=i;break;endendenddone=0;%结束端点检测fo r m=duration:-1:1if and(energ y(m)>=ITL,~done)for i=m:-1:1if energ y(i)<IT Lbreak;elseif ener gy(i)>=IT Uif~doneN2=i+(i==m);done=1;endbreakend endendendendstartID=max(1,N2);endID=m in(N2+backoffLeng th,length(zc));M2=sum(zc(startID:endID)>=IZCT);if M2>=3fo r i=m ax([1startID]):endID%max added by MPC to prevent neg indicesif zc(i)>=IZCTN2=i;break;endendend参考文献:[1] 刘庆升,徐霄鹏,黄文浩.一种语音端点检测方法的探究[J].计算机工程,2003,29(3):120 121,138.[2] 王朋,塔维娜,陈树中.带噪汉语语音识别的端点检测方法[J].计算机工程,2003,29(17):120 121,135. [3] 林波,吕明.基于DT W改进算法的孤立词识别系统的仿真与分析[J].信息技术,2006,30(4):56 59.[4] 刘羽.语音端点检测及其在M atlab中的实现[J].计算机时代,2005(8):25 26.[5] 郭继云,王守觉,刘学刚.一种改进的基于频能比的端点检测算法[J].计算机工程与应用,2005,41(29):91 93,103.[6] 赵力.语音信号处理[M].北京:机械工业出版社,2005:31 37.[7] 江官星,王建英.一种改进的检测语音端点的方法[J].微计算机信息,2006,22(5 1):138 139.[8] 张雄伟,陈亮,杨吉斌.现代语音处理技术及应用[M].北京:机械工业出版社,2003:30 31.[9] 张志涌.精通M at lab6[M].5版.北京:北京航空航天大学出版社,2003:238 242.201第3期张震宇:基于M atlab的语音端点检测实验研究。

相关文档
最新文档