基于Matlab的语音端点检测实验研究
- 格式:pdf
- 大小:381.85 KB
- 文档页数:5
实验二 基于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 的离散函数,又是角频率ω的连续函数。
基于MA TLAB的语音信号分析与处理的实验报告数字信号课程设计,屌丝们有福了一.实验目的数字信号课程设计,屌丝们有福了综合计运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应的结论,培养发现问题、分析问题和解决问题的能力。
并利用MATLAB作为工具进行实现,从而复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力,并从实践上初步实现对数字信号的处理。
此外,还系统的学习和实现对语音信号处理的整体过程,从语音信号的采集到分析、处理、频谱分析、显示和储存。
二.实验的基本要求数字信号课程设计,屌丝们有福了1.进一步学习和巩固MATLAB的使用,掌握MATLAB的程序设计方法。
2.掌握在windows环境下语音信号采集的方法。
3.掌握数字信号处理的基本概念、基本理论、原理和基本方法。
4.掌握MATLAB设计FIR和IIR数字滤波器的方法。
5.学会用MATLAB对信号进行分析和处理。
三.实验内容录制一段自己的语音信号,(语音信号声音可以理解成由振幅和相位随时间缓慢变化的正弦波构成。
人的听觉对声音的感觉特征主要包含在振幅信息中,相位信息一般不起作用。
在研究声音的性质时,往往把时域信息(波形图)变换得到它的频域信息(频谱),通过研究频谱和与频谱相关联的特征获得声音的特性。
)并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法或者双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号发生的变化;回放语音信号。
数字信号课程设计,屌丝们有福了四.实验的实现(1).语音信号的采集采用windows下的录音机或者手机、其他的软件,录制一段自己的话音,时间控制在一分钟左右;然后在MATLAB软件平台下,利用函数wavread对自己的话音进行采样,记住采样的频率和采样的点数。
基于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的语音信号检测分析方法,包括端点检测、语音活动等检测算法的实现,以及基于统计模型、机器学习模型的语音信号分析。
语音处理实验报告自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编写的语音端点检测专业:班级:姓名:指导教师: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 的语音信号时域特性分析 实验(实习)日期 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的语音处理工具箱(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是矩阵实验室(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仿真软件以及很多工具箱。
基于MATLAB的语音信号的端点检测摘要:语音端点检测是指从一段语音信号中准确的找出语音信号的起始点和结束点,它的目的是为了使有效的语音信号和无用的噪声信号得以分离,因此在语音识别、语音增强、语音编码、回声抵消等系统中得到广泛应用。
目前端点检测方法大体上可以分成两类,一类是基于阈值的方法,另一类方法是基于模式识别的方法,本文主要对基于阀值的方法进行研究。
端点检测在语音识别中占有十分重要的地位,直接影响着系统的性能。
本文首先对语音信号进行简单的时域和频域分析及预处理,其次利用基于短时能量和短时过零率的双门限算法进行语音端点检测,并对这几种用这种算法进行端点检测,进行实验分析,分析此方法的优缺点。
关键词:语音信号处理;语音端点检测;双门限;短时能量;短时过零率Voice signal endpoint detection based on MATLABAbstract:Endpoint 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, another method is based on the method of pattern recognition , the main in this paper is based on the method of threshold method. 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 and analysis the advantages and disadvantages of this method.Key word:Signal processing; voice activity detection; double threshold; Short-time energy ;The rate of short-time zero-passing1.绪论语音,即语言的声音,是语言符号系统的载体。
MATLAB在语音处理中的应用实践语音是我们人类最基本的沟通方式之一,而语音处理技术则是对语音信号进行分析、处理和合成的一种方法。
在现代科技的发展中,MATLAB作为一种功能强大的计算工具,被广泛应用于语音处理领域。
本文将深入探讨MATLAB在语音处理中的应用实践,并介绍一些常用的语音处理算法。
一、语音信号的获取与基本处理语音信号的获取是语音处理的第一步,而在MATLAB中,可以利用其强大的信号处理函数和工具箱来获取语音信号。
一种常用的方法是利用麦克风和声卡进行录音,然后将录音文件导入到MATLAB中进行处理。
在导入语音数据后,可以进行一些基本的处理,如去除背景噪声、调整音量等。
二、语音信号的频域分析语音信号的频域分析是语音处理中的重要环节,它可以帮助我们理解语音的频谱特性和声学特性。
在MATLAB中,可以利用傅里叶变换来将时域信号转换为频域信号,从而得到语音信号的频谱信息。
另外,MATLAB还提供了一些常用的频域分析函数,如功率谱密度函数(psd)、频谱函数(spectrogram)等,可以方便地进行频域分析和可视化。
三、语音信号的特征提取语音信号的特征提取是语音处理的关键环节,它包括从语音信号中提取出与语音识别相关的特征。
在MATLAB中,有许多常用的特征提取方法,如短时能量、短时过零率、线性预测系数(LPC)等。
这些特征可以用来表示语音信号的时变特性,为后续的语音识别任务提供基础。
四、语音信号的语音识别语音识别是语音处理中的重要研究方向之一,它涉及到将语音信号转化为文本或命令等形式。
在MATLAB中,可以利用机器学习和模式识别的方法来进行语音识别任务。
常用的方法包括基于隐马尔可夫模型(HMM)的识别方法、基于神经网络的识别方法等。
这些方法可以在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 为窗长,可见短时平均能量为为一帧样点值的甲醛平方和。
华南理工大学《语音信号处理》实验报告实验名称:端点检测姓名:学号:班级:10级电信5班日期:2013年5 月9日1.实验目的1.语音信号端点检测技术其目的就是从包含语音的一段信号中准确地确定语音的起始点和终止点,区分语音和非语音信号,它是语音处理技术中的一个重要方面。
本实验的目的就是要掌握基于MATLAB编程实现带噪语音信号端点检测,利用MATLAB对信号进行分析和处理,学会利用短时过零率和短时能量,对语音信号的端点进行检测。
2. 实验原理1、短时能量语音和噪声的区别可以体现在它们的能量上,语音段的能量比噪声段能量大,语音段的能量是噪声段能量叠加语音声波能量的和。
在信噪比很高时,那么只要计算输入信号的短时能量或短时平均幅度就能够把语音段和噪声背景区分开。
这是仅基于短时能量的端点检测方法。
信号{x(n)}的短时能量定义为:语音信号的短时平均幅度定义为:其中w(n)为窗函数。
2、短时平均过零率短时过零表示一帧语音信号波形穿过横轴(零电平)的次数。
过零分析是语音时域分析中最简单的一种。
对于连续语音信号,过零意味着时域波形通过时间轴;而对于离散信号,如果相邻的取样值的改变符号称为过零。
过零率就是样本改变符号次数。
信号{x(n)}的短时平均过零率定义为:式中,sgn为符号函数,即:过零率有两类重要的应用:第一,用于粗略地描述信号的频谱特性;第二,用于判别清音和浊音、有话和无话。
从上面提到的定义出发计算过零率容易受低频干扰,特别是50Hz交流干扰的影响。
解决这个问题的办法,一个是做高通滤波器或带通滤波,减小随机噪声的影响;另一个有效方法是对上述定义做一点修改,设一个门限T,将过零率的含义修改为跨过正负门限。
于是,有定义:3、检测方法利用过零率检测清音,用短时能量检测浊音,两者配合。
首先为短时能量和过零率分别确定两个门限,一个是较低的门限数值较小,对信号的变化比较敏感,很容易超过;另一个是比较高的门限,数值较大。
语音信号处理实验报告实验一:语音信号的端点检测学院:电子与信息学院专业:11级信息工程姓名:学号:提交日期:实验一:语音信号的端点检测1、实验内容语音信号端点检测技术其目的就是从包含语音的一段信号中准确地确定语音的起始点和终止点,区分语音和非语音信号,它是语音处理技术中的一个重要方面。
本实验的目的就是要掌握基于MATLAB编程实现带噪语音信号端点检测,利用MATLAB对信号进行分析和处理,学会利用短时过零率和短时能量,对语音信号的端点进行检测。
2、实验方法本实验中,端点检测的方法有两种:短时能量和短时过零率。
语音和噪声的区别可以体现在它们的能量上,语音段的能量比噪声段能量大,语音段的能量是噪声段能量叠加语音声波能量的和。
在信噪比很高时,那么只要计算输入信号的短时能量或短时平均幅度就能够把语音段和噪声背景区分开。
这是仅基于短时能量的端点检测方法。
信号{x(n)}的短时能量定义为:短时过零表示一帧语音信号波形穿过横轴(零电平)的次数。
过零分析是语音时域分析中最简单的一种。
对于连续语音信号,过零意味着时域波形通过时间轴;而对于离散信号,如果相邻的取样值的改变符号称为过零。
过零率就是样本改变符号次数。
信号{x(n)}的短时平均过零率定义为:2.2、检测方法利用过零率检测清音,用短时能量检测浊音,两者配合。
首先为短时能量和过零率分别确定两个门限,一个是较低的门限数值较小,对信号的变化比较敏感,很容易超过;另一个是比较高的门限,数值较大。
低门限被超过未必是语音的开始,有可能是很短的噪声引起的,高门限被超过并且接下来的自定义时间段内的语音超过低门限,意味着信号开始。
此时整个端点检测可分为四段:静音段、过渡段、语音段、结束。
实验时使用一个变量表示当前状态。
静音段,如果能量或过零率超过低门限,就开始标记起始点,进入过渡段。
过渡段当两个参数值都回落到低门限以下,就将当前状态恢复到静音状态。
而如果过渡段中两个参数中的任一个超过高门限,即被认为进入语音段。
基于MATLAB对语音信号进行分析和处理一、设计目的1.学会MATLAB的使用,掌握MA TLAB的程序设计方法;2.掌握在Windows环境下语音信号采集的方法;3.掌握数字信号处理的基本概念、基本理论和基本方法;4.掌握MATLAB设计FIR和IIR数字滤波器的方法;5.学会用MA TLAB对信号进行分析和处理。
二、设计过程1、语音信号采集与分析运用windows下的录音机,录制一段自己的话音,时间为两秒。
然后在MATLAB 软件平台下,利用函数wavread对语音信号进行采样,再运用plot函数画出语音信号的时域波形,最后在语音信号频谱分析时运用fft对信号进行快速傅里叶变换,得到频谱特性图形。
人为设计一个固定频率5500Hz的噪声干扰信号。
噪声信号通常为随机序列,在本设计中用正弦序列代替,干扰信号构建命令函数为d=[Au*sin(2*pi*5500*t)]',给出的干扰信号为一个正弦信号,针对上面的语音信号 ,采集了其中一段。
再对噪音信号进行频谱变换得到其频谱图。
2、滤波器设计和运用滤波器进行滤波1 )窗函数和等波纹逼近法设计FIR滤波器及滤波首先根据阻带最小衰减选定窗口类型,然后调用fir1函数设计线性相位FIR数字滤波器,再用freqz函数画出其频谱图形,最后运用fftfilt函数对信号进行滤波。
而等波纹逼近法中则运用remez和remezord直接设计FIR滤波器,然后运用fftfilt函数对信号进行滤波。
2 )双线性变换法社设计IIR数字滤波器及滤波首先将数字滤波器的技术指标运用预畸校正法转换成模拟滤波器的设计指标:Ωph=2/T*tan(wp/2),然后用butter、cheby1设计各种模拟滤波器,再用bilinear函数进行模拟滤波器和数字滤波器之间的转换,最后用filter函数对语音信号进行滤波,并运用函数sound播放滤波后语音。
三、结果及分析1、用MATLAB对原始语音信号进行分析,画出它的时域波形和频谱时域波形和频谱:图1 原始语音信号图2 语音信号频率响应图图3 原始语音信号FFT与信号频谱2、给原始的语音信号加上一个高频余弦噪声,频率为5500hz。
浙江科技学院学报,第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的语音端点检测实验研究。