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

合集下载

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

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

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

二、实验内容简介:(1)采集一段语音信号,采样率为8KHZ,量化精度为16比特线性码;(2)分析帧长30ms(或10ms~50ms);(3)利用公式分别计算这段语音信号的短时能量、短时平均幅度、短时过零率曲线;(4)利用(3)中的结果画出短时零能比曲线;(零能比: 即同一时间段内的过零率和能量的比值)(5)根据上述结果判断找出其中的一帧浊音信号和一帧清音信号,分别计算他们的短时自相关函数和平均幅度差函数;(6)调整能量门限,设置参数。

实现语音端点的检测。

三,实验心得这次的实验,,给我最大的收获就是培养了独立思考和动手的能力,还有就是实验的灵活性,总得来说就是在独立与创新这二个环节,我更加掌握MATLAB 的程序设计方法,进一步的了解了掌握基于MATLAB编程实现带噪语音信号端点检测的原理,这充分锻炼了我们独立的动手能力和独立的解决所遇到的问题,让我对这门课程又有了新的理解。

四.课程设计原理端点检测是语音信号处理过程中非常重要的一步,它的准确性直接影响到语音信号处理的速度和结果,因此端点检测方法的研究一直是语音信号处理中的热点。

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

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

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

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

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

基于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的汉语数字语音识别系统
张 培 玲 , 凌 飞 成
( 河南理工大学 电气学院 , 河南 焦作 440) 5 0 0

要: 应用动 态时间规整 (T 为识别 算法, 用M C ( E 频率倒谱 系数) D W) 采 F CM L 为主要语音特 征参数 , 建立 了一 个汉
语数字语音识别 系统 , 中包括语音信号 的预 处理 、 其 特征 参数的提 取 、 别模板 的训练、 别匹配算 法; 识 识 同时 , 出利 提 用 MA L B图形用户界 面开发环境设计语音识 别 系统界 面 , TA 设计 简单 , 用方便 , 使 系统界 面友好 。
为 了体 现语 音 的动态 特性 及能 量对 语音 区分 的作 用 , 在 上述 语 音 特征 矢 量 中加 人 了一 阶差 分 MF C 还 C 及 其 一 阶能 量 和一 阶差分 能 量 , 中能量 参 数 用语 音 其
平 均能 量进 行 了归一 化 。
3 训 练 与识 别
路 径不 是 随 意选 择 的 , 因为任 何 一种 语 音 的发 音快 慢 都有 可 能变化 , 但是 其各 部分 的先后 次 序不 可能 改变 , 因此 所选 的路 径必 定是从 左 下角 出发 , 在右上 角结 束 ,

xk z ) / . (一 n (一 (e K. i ∑ )
尸 ) xkl (=l( 。 ).

( 1 )
( 2 )
其中 , 为 52 l 点。然后再求信号能量谱 , : 即 5 根据 ( ) ) 4 式进行频率弯折 , 在弯折后 的频率轴 上取等间隔滤波器组在频域对功率谱进行滤波.
4 对加窗后的语音信号进行 5 2 ) 1 点离散傅立叶变
换( F , : D T) 即
用过零率找到语音端点的相对精确位置 , 分解 出每一 个 语 音段 。 个实例见 图 2 其 中 5 , 表示无 声段 ,表示 有声 , 段 , 示 有 声 段 结束 后 的无 声 部 分 。从 图 中可 知 有 H表

一种基于Matlab的语音信号端点检测方法

一种基于Matlab的语音信号端点检测方法
S ONG in h a ,B J a - u  ̄ AO - u I Yu h a ,L ANG e ,L U n Yu I Ku
( .C l g f l t ncE gn e ig He o gin i ri , r i 5 0 0。 h n ;2 e at n f c a i l n lcr a E gn e 1 o l eo e r i n ie r , i n j gUn v s y Ha bn 1 0 8 C i a .D p rme t h nc dE e ti l n ie r e E co n l a e t o Me aa c
0 引

1 检 测原 理
语 音端点 检测 ( n on tcin 是从 包 含 E dp it et ) De o
语音信 号一般 可分为 无声段 、 清音段 和浊音段 。 无 声段是 背景噪声 段 , 平均 能量最 低 ; 浊音 段为声带 振 动发 出对应 的语 音信号 段 , 平均 能量最 高 ; 清音段 为 空气在 口腔 中的摩 擦 、 冲击 或 爆 破 而发 出的语音 信 号段 , 均能 量居 于 两 者之 间 。采用 基 于 幅度 的 平
i ,Qiia ct nl olg , qh r1 10 , i nj n , hn ) n g qhrVoai a C l eQiia 6 0 5 Hel gi g C ia o e o a
Ab t a t Th s p p rf s l t o u e o ea e o c p so p e h e d p i t e e t n n h n ma e s r c : i a e i t i r d c ss mer l t d c n e t fs e c n — o n t c i ,a d t e k s r y n d o e d— o n e e t n b h o b n to fs o tt ea e a e ma n t d n h r i ea e a e z r — r s n — i td t c i y t e c m i a i n o h r i v r g g i e a d s o tt v r g e o c o s p o m u m — — i g r t .Fo u i g o u l h e h l l o i m e i n a d i lm e t t n o h r c s ,t e M a lb p o n ae c sn n d a— r s o d a g r h d sg n mp e n a i f ep o e s h t r — t t o t a

语音信号处理实验报告

语音信号处理实验报告

实验一基于 MATLAB 的语音信号时域特征分析操作:报告:一. 实验目的语音信号是一种非平稳的时变信号,它携带着各种信息。

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

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

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

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

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

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

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

一般帧长取 10~30ms。

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

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

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

这两种窗函数都有低通特性,通过分析这两种窗的频率响应幅度特性可以发现(如图1.2):矩形窗的主瓣宽度小(4*pi/N ),具有较高的频率分辨率,旁瓣峰值大(-13.3dB),会导致泄漏现象;汉明窗的主瓣宽 8*pi/N ,旁瓣峰值低(-42.7dB),可以有效的克服泄漏现象,具有更平滑的低通特性。

因此在语音频谱分析时常使用汉明窗,在计算短时能量和平均幅度时通常用矩形窗。

2. 短时能量由于语音信号的能量随时间变化,清音和浊音之间的能量差别相当显著。

因此对语音的短时能量进行分析,可以描述语音的这种特征变化情况。

定义短时能量为:在用短时能量反映语音信号的幅度变化时,不同的窗函数以及相应窗的长短均有影响。

hamming 窗的效果比矩形窗略好。

基于matlab的语音识别技术

基于matlab的语音识别技术

项目题目:基于Matlab的语音识别一、引言语音识别技术是让计算机识别一些语音信号,并把语音信号转换成相应的文本或者命令的一种高科技技术。

语音识别技术所涉及的领域非常广泛,包括信号处理、模式识别、人工智能等技术。

近年来已经从实验室开始走向市场,渗透到家电、通信、医疗、消费电子产品等各个领域,让人们的生活更加方便。

语音识别系统的分类有三种依据:词汇量大小,对说话人说话方式的要求和对说话人的依赖程度。

(1)根据词汇量大小,可以分为小词汇量、中等词汇量、大词汇量及无限词汇量识别系统。

(2)根据对说话人说话方式的要求,可以分为孤立字(词)语音识别系统、连接字语音识别系统及连续语音识别系统。

(3)根据对说话人的依赖程度可以分为特定人和非特定人语音识别系统。

二、语音识别系统框架设计2.1语音识别系统的基本结构语音识别系统本质上是一种模式识别系统,其基本结构原理框图如图l所示,主要包括语音信号预处理、特征提取、特征建模(建立参考模式库)、相似性度量(模式匹配)和后处理等几个功能模块,其中后处理模块为可选部分。

三、语音识别设计步骤3.1语音信号的特征及其端点检测图2 数字‘7’开始部分波形图2是数字”7”的波形进行局部放大后的情况,可以看到,在6800之前的部分信号幅度很低,明显属于静音。

而在6800以后,信号幅度开始增强,并呈现明显的周期性。

在波形的上半部分可以观察到有规律的尖峰,两个尖峰之间的距离就是所谓的基音周期,实际上也就是说话人的声带振动的周期。

这样可以很直观的用信号的幅度作为特征,区分静音和语音。

只要设定一个门限,当信号的幅度超过该门限的时候,就认为语音开始,当幅度降低到门限以下就认为语音结束。

3.2 语音识别系统3.2.1语音识别系统的分类语音识别按说话人的讲话方式可分为3类:(1)即孤立词识别(isolated word recognition),孤立词识别的任务是识别事先已知的孤立的词,如“开机”、“关机”等。

matlab-端点检测程序(完全注释版)

matlab-端点检测程序(完全注释版)

端点检测程序第一部分:常数设置%常数设置FrameLen = 240;%指定帧长FrameInc = 80;%指定帧移,每一帧中未重叠的部分amp1 = 10; %初始短时能量高门限amp2 = 2; %初始短时能量低门限zcr1 = 10; %初始过零率高门限zcr2 = 5;%初始过零率低门限maxsilence = 8; % 8*10ms = 80ms%语音段中允许的最大静音长度,如果语音段中的静音帧数未超过此值,则认为语音还没结束;如果超过了该值,则对语音段长度count 进行判断,若count<minlen,则认为前面的语音段为噪音,舍弃,跳到静音状态0;若count>minlen,则认为语音段结束;minlen = 15;% 15*10ms = 150ms%语音段的最短长度,若语音段长度小于此值,则认为其为一段噪音status = 0; %初始状态为静音状态count = 0; %初始语音段长度为0silence = 0; %初始静音段长度为0第二部分:过零计算tmp1 = enframe(x(1:end-1), FrameLen, FrameInc);%分帧处理,tmp1和tmp2为分帧后形成的二维数组tmp2 = enframe(x(2:end) , FrameLen, FrameInc);%语音信号是一种典型的非平稳信号,但是语音信号具有短时平稳性,因此在处理中要对采样的语音信号进行分割成一帧一帧的短时语音序列。

分帧处理有利于对语音信号进行准确的分析 并且能够提高识别率 这时再分别求出每帧的短时能量和短时过零率signs = (tmp1.*tmp2)<0;%当 tmp1.*tmp <0 的时候,说明tmp1>0,tmp2<0 或tmp1<0,tmp2>0;即信号过零点。

diffs = (tmp1 -tmp2)>0.02;%当信号过零点,而tmp1与tmp2距离又过近(<0.02)的话就认为是噪音,舍去.zcr = sum(signs.*diffs, 2);%定义语音信号Xn(m)的过零率为Zn,则Zn=|)]1(sgn[)](sgn[|211∑-=--N m m Xn m Xn “第三部分:计算短时能量amp = sum(abs(enframe(filter([1 -0.9375], 1, x), FrameLen, FrameInc)),2);%过零率有两类重要的应用: 用于粗略地描述信号的频谱特性,就是用将为若干个通道, 对各通道进行短时平均过零率和短时能量的计算,即可粗略地估计频谱特性; 用于判别清音和浊音、有话和无话。

基于MATLAB的语音识别DTW算法设计

基于MATLAB的语音识别DTW算法设计

目录1概述 (2)1.1研究的目的和意义 (2)1.2国内外发展状况 (2)1.2.1国外研究历史及现状 (3)1.2.3国内研究历史及现状 (4)2语音识别系统的概述 (4)3 MA TLAB中的语音信号的采集 (4)3.1 wavrecord函数 (4)3.2 wavplay函数 (6)4语音信号的端点检测 (6)4.1语音信号端点检测的流程 (6)4.1.1短时能量 (8)4.1.2过零率的计算 (9)4.1.3双门限端点检测 (11)5语音识别参数提取 (12)5.1 MFCC的基本原理 (12)6特定人语音识别算法-DTW算法 (13)6.1DTW算法原理 (13)6.2DTW算法流程及实验结果 (15)7 GUI界面的设计 (16)7.1图形用户界面设计工具的启动 (16)7.3测试与分析 (18)总结 (20)致谢 (21)参考文献 (22)附件 (23)基于MATLAB的特定人语音识别算法设计摘要在高度发达的社会,语言是一种人类交流最方便的,最速度的信息,在高度发达的社会中,用数字化的方式举行语音的保存、传递、判别、加强和合成等是全部数字化通信过程中最基础、最重要的组成的一部分。

由于人类进入信息社会节奏加快, 语音信号处理方面的知识被越来越多的地方需要。

本设计主要在MATLAB平台下先语音信号的端点检测、预处理,然后提取特征参数,建立两个模块,一个为参考模块,一个为测试模块,然后通过动态时间归整技术(DTW)算法进行匹配,算出匹配结果。

最后在用户开发界面(GUI界面)直观地呈现出来。

本次设计录制0~10的数字做为参考库(model),测试库(test)中为需要测试及识别的语音,0的序号为11,1~9的数字以相应数字做为文件名的命名。

关键词:端点检测; MFCC特征提取;语音识别;DTW算法1概述1.1研究的目的和意义随着计算机技术和科技成果的的飞速发展,人们早已不再满足于让计算机做一些简单的科学计算和运算,而是向它提出了更高的要求,即要求我们的计算机向智能化方向发展,于是人们便开始了第五代计算机(即智能计算机)的研究。

使用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的语音识别系统

基于matlab的语音识别系统专业综合课程设计系: 信息与通信工程专业: 通信工程班级: 081班设计题目: 基于matlab的语音识别系统学生姓名:指导教师:完成日期:2011年12月27日一(设计任务及要求1.1设计任务作为智能计算机研究的主导方向和人机语音通信的关键技术,语音识别技术一直受到各国科学界的广泛关注。

以语音识别开发出的产品应用领域非常广泛,有声控电话交换、语音拨号系统、信息网络查询、家庭服务、宾馆服务、旅行社服务系统、订票系统、声控智能玩具、医疗服务、银行服务、股票查询服务、计算机控制、工业控制、语音通信系统、军事监听、信息检索、应急服务、翻译系统等,几乎深入到社会的每个行业、每个方面,其应用和经济社会效益前景非常广泛。

本次任务设计一个简单的语音识别系。

1.2设计要求要求:使用matlab软件编写语音识别程序二(算法方案选择2.1设计方案语音识别属于模式识别范畴,它与人的认知过程一样,其过程分为训练和识别两个阶段。

在训练阶段,语音识别系统对输入的语音信号进行学习。

学习结束后,把学习内容组成语音模型库存储起来;在识别阶段,根据当前输入的待识别语音信号,在语音模型库中查找出相应的词义或语义。

语音识别系统与常规模式识别系统一样包括特征提取、模式匹配、模型库等3个基本单元,它的基本结构如图1所示。

图1 语音识别系统基本结构图本次设计主要是基于HMM模型(隐马尔可夫模型)。

这是在20世纪80年代引入语音识别领域的一种语音识别算法。

该算法通过对大量语音数据进行数据统计,建立识别词条的统计模型,然后从待识别语音信号中提取特征,与这些模型进行匹配,通过比较匹配分数以获得识别结果。

通过大量的语音,就能够获得一个稳健的统计模型,能够适应实际语音中的各种突发情况。

并且,HMM算法具有良好的识别性能和抗噪性能。

2.2方案框图图2 HMM语音识别系统2.3隐马尔可夫模型HMM过程是一个双重随机过程:一重用于描述非平稳信号的短时平稳段的统计特征(信号的瞬态特征);另一重随机过程描述了每个短时平稳段如何转变到下一个短时平稳段,即短时统计特征的动态特性(隐含在观察序列中)。

语音端点检测及其在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)语音数据也可以用以下命令从语音文件中读取:

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

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

第一章绪论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的语音信号的端点检测

基于MATLAB的语音信号的端点检测

基于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语音识别系统的设计与实现
多语言支持
随着全球化的发展,多语言支持成为语音识别系统的一个重要需求, 如何实现多语言的语音识别是一个研究方向。
深度学习与神经网络的应用
深度学习和神经网络在语音识别领域的应用是一个研究热点,如何将 深度学习技术应用于现有的语音识别系统也是一个挑战。
THANKS FOR WATCHING
感谢您的观看
实时性能
评估模型的实时性能,确保系统能够满足实 际应用的需求。
结果分析
结果展示
将测试结果以图表的形式展示出来,便于分 析和比较。
误差分析
分析模型在测试数据集上的误差来源,找出 可能存在的问题和改进方向。
性能对比
将本系统的性能与其他同类系统进行对比, 评估本系统的优劣。
应用前景
探讨本系统在实际应用中的前景和潜在价值, 为后续的研究和应用提供参考。
基于Matlab的语音识别系统界面友好,操作简单,方便用户使 用。
未来研究方向与挑战
提高识别精度
随着语音技术的不断发展,需要不断优化现有的语音识别算法,提高 系统的识别精度。
处理复杂环境下的语音
在实际应用中,复杂环境下的语音识别是一个重要的研究方向,如何 提高系统在噪声、口音、语速等方面的鲁棒性是一个挑战。
特征提取模块设计
预加重
分帧
通过一个一阶差分滤波器对语音信号进行 预加重,增强高频部分。
将语音信号分成若干短时帧,每帧长度通 常为20-40ms。
加窗
快速傅里叶变换(FFT)
对每帧信号加窗,常用的窗函数有汉明窗 、汉宁窗等。
将每帧信号从时域转换到频域,得到频谱 。
分类器设计
基于规则的分类器
根据语音特性制定规则进行分类,如基于DTW(动态时间 规整)的分类器。

基于Matlab的语音识别端点检测算法研究与实现

基于Matlab的语音识别端点检测算法研究与实现

测后面的样点值分布。 验 中.往往假设通过线性预测分析得到的声道模型系统 为:
( : ) :— 1 + a k z - 女

t t
( 7)
图2 采用 双 门限检 测 法进 行 端点 检测 结 果 图
冲击响应 ( ) 的倒谱表示为 . i ; ( , , ),有 :
示 ,则其 计算 公式 为” :

图 1 双 门 限 端 点 检 测 流 程 图
双 门限 检 测 法 中 ,将 平 均 过 零 率 和 短 时能 量 结 合 起 来 ,在
∑s : ( , , 1 )
m =O
( 1 )
开 始进行端点检测之前,需要对短时能量以及过零率分别没置
两个 门 限 ,即一 个 高门 限 ( T )和一 个 低 门限 ( T 。 )。当 语音 信 号 的低 门限 T . 被 超过 时 ,则 表 示 语音 信 号 有 可 能进 入 语 音段 ,
( 1 ) L P C 倒 谱 系数 。线 性 预 测 l 的 基 本思 路 是 :充 分 考 虑

I L 山 . 【 | L 一 ¨
T 丫 T 下 1 一
段语音信号中可能存在的联系性 ,根据过去样点的分布情况预 L P C 系数可以用来表示整 ̄ ' L P C 系统冲击响应的倒谱 ,在实
就 称 之 为过 零 。其 定 义如 下 :

二 m=O
∑I s g n 脚 ) 卜s g n [ s . 一 1 ) 】 l
( 2 )
语音信号的倒谱分析就是求取语音倒谱特征参数的过程 。 ,
它 可 以 通过 同 态处 理 ( 同态 滤 波 ) 来 实现 ,同 态 滤 波成 功 地 将

《语音信号处理》实验1-端点检测

《语音信号处理》实验1-端点检测

华南理工大学《语音信号处理》实验报告实验名称:端点检测姓名:学号:班级:10级电信5班日期:2013年5 月9日1.实验目的1.语音信号端点检测技术其目的就是从包含语音的一段信号中准确地确定语音的起始点和终止点,区分语音和非语音信号,它是语音处理技术中的一个重要方面。

本实验的目的就是要掌握基于MATLAB编程实现带噪语音信号端点检测,利用MATLAB对信号进行分析和处理,学会利用短时过零率和短时能量,对语音信号的端点进行检测。

2. 实验原理1、短时能量语音和噪声的区别可以体现在它们的能量上,语音段的能量比噪声段能量大,语音段的能量是噪声段能量叠加语音声波能量的和。

在信噪比很高时,那么只要计算输入信号的短时能量或短时平均幅度就能够把语音段和噪声背景区分开。

这是仅基于短时能量的端点检测方法。

信号{x(n)}的短时能量定义为:语音信号的短时平均幅度定义为:其中w(n)为窗函数。

2、短时平均过零率短时过零表示一帧语音信号波形穿过横轴(零电平)的次数。

过零分析是语音时域分析中最简单的一种。

对于连续语音信号,过零意味着时域波形通过时间轴;而对于离散信号,如果相邻的取样值的改变符号称为过零。

过零率就是样本改变符号次数。

信号{x(n)}的短时平均过零率定义为:式中,sgn为符号函数,即:过零率有两类重要的应用:第一,用于粗略地描述信号的频谱特性;第二,用于判别清音和浊音、有话和无话。

从上面提到的定义出发计算过零率容易受低频干扰,特别是50Hz交流干扰的影响。

解决这个问题的办法,一个是做高通滤波器或带通滤波,减小随机噪声的影响;另一个有效方法是对上述定义做一点修改,设一个门限T,将过零率的含义修改为跨过正负门限。

于是,有定义:3、检测方法利用过零率检测清音,用短时能量检测浊音,两者配合。

首先为短时能量和过零率分别确定两个门限,一个是较低的门限数值较小,对信号的变化比较敏感,很容易超过;另一个是比较高的门限,数值较大。

matlab端点检测程序(完全注释版)

matlab端点检测程序(完全注释版)

matlab端点检测程序(完全注释版)端点检测程序第⼀部分:常数设置%常数设置FrameLen = 240;%指定帧长FrameInc = 80;%指定帧移,每⼀帧中未重叠的部分amp1 = 10; %初始短时能量⾼门限amp2 = 2; %初始短时能量低门限zcr1 = 10; %初始过零率⾼门限zcr2 = 5;%初始过零率低门限maxsilence = 8; % 8*10ms = 80ms%语⾳段中允许的最⼤静⾳长度,如果语⾳段中的静⾳帧数未超过此值,则认为语⾳还没结束;如果超过了该值,则对语⾳段长度count 进⾏判断,若countminlen,则认为语⾳段结束;minlen = 15;% 15*10ms = 150ms%语⾳段的最短长度,若语⾳段长度⼩于此值,则认为其为⼀段噪⾳status = 0; %初始状态为静⾳状态count = 0; %初始语⾳段长度为0silence = 0; %初始静⾳段长度为0第⼆部分:过零计算tmp1 = enframe(x(1:end-1), FrameLen, FrameInc);%分帧处理,tmp1和tmp2为分帧后形成的⼆维数组tmp2 = enframe(x(2:end) , FrameLen, FrameInc);%语⾳信号是⼀种典型的⾮平稳信号,但是语⾳信号具有短时平稳性,因此在处理中要对采样的语⾳信号进⾏分割成⼀帧⼀帧的短时语⾳序列。

分帧处理有利于对语⾳信号进⾏准确的分析并且能够提⾼识别率这时再分别求出每帧的短时能量和短时过零率signs = (tmp1.*tmp2)<0;%当 tmp1.*tmp <0 的时候,说明tmp1>0,tmp2<0 或tmp1<0,tmp2>0;即信号过零点。

diffs = (tmp1 -tmp2)>0.02;%当信号过零点,⽽tmp1与tmp2距离⼜过近(<0.02)的话就认为是噪⾳,舍去.zcr = sum(signs.*diffs, 2);%定义语⾳信号Xn(m)的过零率为Zn,则Zn=|)]1(sgn[)](sgn[|2110∑-=--N m m Xn m Xn “第三部分:计算短时能量amp = sum(abs(enframe(filter([1 -0.9375], 1, x), FrameLen, FrameInc)),2);%过零率有两类重要的应⽤: ⽤于粗略地描述信号的频谱特性,就是⽤将为若⼲个通道, 对各通道进⾏短时平均过零率和短时能量的计算,即可粗略地估计频谱特性; ⽤于判别清⾳和浊⾳、有话和⽆话。

Matlab在语音端点检测系统中的应用

Matlab在语音端点检测系统中的应用

很 快 地 起 伏 。 此 , 常 认 为 一 个 语 音 帧 以 避 免 这 种 情 况 。 因 通 判 定 起 点 后 , 续 将 短 时 能 量 与 给 定 继 内 , 含 有 1 个 基 音 周 期 , 采 样 率 为 应 ~7 在 3 当 1k 的情 况下 , 选择 在 i0 0 量级 是 门 限 G 比较 , 小 于 它并 能 在 一 定 时 间 内 0 Hz N 0 -2 0 合 适 的 。 帧 可 以 是 连 续 的 , 可 以是 交 叠 降 到 门 限 G4 维 持 给 定 帧 数 ( 分 也 并 防止 将语 音 的 。 了使 特 征 参 数 的 平 滑 过 渡 , 为 保证 其 连 中 的 小 停 顿 误 判 为 语 音 结 束 ) 认 为 是 终 , 续性 , 帧常采用交叠 的。 分 点, 则继续向下找 。 否 1 3短 时能量【 . 。 1
对于语音信号{ }短时能量的定义 2用 MA L B ), ( T A 实现语音端点检测[ 1 ( 】 X ” 2 ( )
语音 数据 用wa r a 函数 直接 从语 音文 v ed 件 中读 取 : I, bt] 【 sn is x, =wa ra (fe a v e d ’ ln me’ i )
语 音 信 号 进 行 预 处 理 , 于 语 音 信 号 由
的 高 频 端 大 约 在 8 0 Hz 0 O 以上 , 因此 需 要 提 如图1 示 。 所 滤 尤 表示 在 信 号 的 第 1个 点 开 始加 窗 时 升 高 频 部 分 , 除 低 频 干 扰 , 其 是 消 除 " 1 0 或6 Hz 可 的短 时 能 量 , 时 能 量 可 以 看 作 语 音 信 号 5 Hz 0 的工 频干 扰 。 通 过将 语 音 信 短 号 通 过 一 个 一 阶 的 高 通 滤 波 器来 实 现 , 滤 的平 方 经 过 一 个 线 性 滤 波 器 的 输 出 。

基于MATLAB的语音端点检测

基于MATLAB的语音端点检测

基于MATLAB的语音端点检测短时能量matlab实现:[某]=wavread('ong1.wav');某=某/ma某(ab(某));figure;ubplot(3,1,1);plot(某);a某i([1length(某)-11]);ylabel('Speech');FrameLen=240;FrameInc=80;yframe=enframe(某,FrameLen,FrameInc);amp1=um(ab(yframe),2);ubplot(3,1,2);plot(amp1);a某i([1length(amp1)0ma某(amp1)]);ylabel('Amplitude');legend('amp1=∑│某│');amp2=um(ab(yframe.某yframe),2);ubplot(3,1,3);plot(amp2);a某i([1length(amp2)0ma某(amp2)]);ylabel('Energy');legend('amp1=∑│某某某│');短时过零率matlab实现:[某]=wavread('ong1.wav');figure;ubplot(3,1,1);plot(某);a某i([1length(某)-11]);ylabel('Speech');FrameLen=240;FrameInc=80;amp=um(ab(enframe(filter([1-0.9375],1,某),FrameLen,FrameInc)),2);ubplot(312)plot(amp);a某i([1length(amp)0ma某(amp)])ylabel('Energy');tmp1=enframe(某(1:end-1),FrameLen,FrameInc);tmp2=enframe(某(2:end),FrameLen,FrameInc);ign=(tmp1.某tmp2)<0;diff=(tmp1-tmp2)>0.02;zcr=um(ign.某diff,2);ubplot(3,1,3);plot(zcr);a某i([1length(zcr)0ma某(zcr)])ylabel('ZCR');语音信号的端点检测matlab实现:[某,f,nbit]=wavread('ong1.wav');某=某/ma某(ab(某));%幅度归一化到[-1,1]%参数设置FrameLen=256;%帧长inc=90;%未重叠部分amp1=10;%短时能量阈值amp2=2;zcr1=10;%过零率阈值zcr2=5;minilence=6;%用无声的长度来判断语音是否结束minlen=15;%判断是语音的最小长度tatu=0;%记录语音段的状态count=0;%语音序列的长度ilence=0;%无声的长度%计算过零率tmp1=enframe(某(1:end-1),FrameLen,inc);tmp2=enframe(某(2:end),FrameLen,inc);ign=(tmp1.某tmp2)<0;diff=(tmp1-tmp2)>0.02;zcr=um(ign.某diff,2);%计算短时能量amp=um((ab(enframe(filter([1-0.9375],1,某),FrameLen,inc))).^2,2);%调整能量门限amp1=min(amp1,ma某(amp)/4);amp2=min(amp2,ma某(amp)/8);%开始端点检测forn=1:length(zcr)goto=0;witchtatucae{0,1}%0=静音,1=可能开始ifamp(n)>amp1%确信进入语音段某1=ma某(n-count-1,1);%记录语音段的起始点tatu=2;ilence=0;count=count+1;eleifamp(n)>amp2||zcr(n)>zcr2%可能处于语音段tatu=1;count=count+1;ele%静音状态tatu=0;count=0;endcae2,%2=语音段ifamp(n)>amp2||zcr(n)>zcr2%保持在语音段count=count+1;ele%语音将结束ilence=ilence+1;ifilence<minilence%静音还不够长,尚未结束count=count+1; eleifcount<minlen%语音长度太短,认为是噪声tatu=0; ilence=0;count=0;ele%语音结束tatu=3;endendcae3,break;endendcount=count-ilence/2;某2=某1+count-1;%记录语音段结束点ubplot(3,1,1)plot(某)a某i([1length(某)-11])ylabel('Speech');line([某1某inc某1某inc],[-11],'Color','red'); line([某2某inc某2某inc],[-11],'Color','red'); ubplot(3,1,2)plot(amp);a某i([1length(amp)0ma某(amp)])ylabel('Energy');line([某1某1],[min(amp),ma某(amp)],'Color','red'); line([某2某2],[min(amp),ma某(amp)],'Color','red'); ubplot(3,1,3)plot(zcr);a某i([1length(zcr)0ma某(zcr)])ylabel('ZCR');line([某1某1],[min(zcr),ma某(zcr)],'Color','red');line([某2某2],[min(zcr),ma某(zcr)],'Color','red');。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

二、实验内容简介:(1)采集一段语音信号,采样率为8KHZ,量化精度为16比特线性码;(2)分析帧长30ms(或10ms~50ms);(3)利用公式分别计算这段语音信号的短时能量、短时平均幅度、短时过零率曲线;(4)利用(3)中的结果画出短时零能比曲线;(零能比:即同一时间段内的过零率和能量的比值)(5)根据上述结果判断找出其中的一帧浊音信号和一帧清音信号,分别计算他们的短时自相关函数和平均幅度差函数;(6)调整能量门限,设置参数。

实现语音端点的检测。

三,实验心得这次的实验,,给我最大的收获就是培养了独立思考和动手的能力,还有就是实验的灵活性,总得来说就是在独立与创新这二个环节,我更加掌握MATLAB 的程序设计方法,进一步的了解了掌握基于MATLAB编程实现带噪语音信号端点检测的原理,这充分锻炼了我们独立的动手能力和独立的解决所遇到的问题,让我对这门课程又有了新的理解。

四.课程设计原理端点检测是语音信号处理过程中非常重要的一步,它的准确性直接影响到语音信号处理的速度和结果,因此端点检测方法的研究一直是语音信号处理中的热点。

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

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

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

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

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

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

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

特殊地,当窗函数为矩形窗时,有∑--==n N n m n m x E )1(2)(2、短时过零率过零就是指信号通过零值。

过零率就是每秒内信号值通过零值的次数。

对于离散时间序列,过零则是指序列取样值改变符号,过零率则是每个样本的改变符号的次数。

对于语音信号,则是指在一帧语音中语音信号波形穿过横轴(零电平)的次数。

可以用相邻两个取样改变符号的次数来计算。

如果窗的起点是n=0,短时过零率Z 为波形穿过横轴(零电平)的次数短时过零可以看作信号频率的简单度量浊音的短时平均幅度最大,无声的短时平均幅度最小,清音的短时过零率最大,无声居中,浊音的短时过零率最小。

3、短时自相关函数∑-=--=100))1(())((21N n w w n S Sgn n S Sgn Z ∑--=+=10)()()(k N n w w w k n s n s k R ⎩⎨⎧<-≥=0,10,1)sgn(x x x1、是偶函数;2、s(n)是周期的,那么R(k)也是周期的;3、可用于基音周期估计和线性预测分析4、判断语音信号的起点和终点利用短时平均幅度和短时过零率可以判断语音信号的起点和终点。

语音端点检测方法可采用测试信号的短时能量或短时对数能量、联合过零率等特征参数,并采用双门限判定法来检测语音端点,即利用过零率检测清音,用短时能量检测浊音,两者配合。

首先为短时能量和过零率分别确定两个门限,一个是较低的门限数值较小,对信号的变化比较敏感,很容易超过;另一个是比较高的门限,数值较大。

低门限被超过未必是语音的开始,有可能是很短的噪声引起的,高门限被超过并且接下来的自定义时间段内的语音超首先,可根据浊语音情况下短时平均幅度M的概率密度函数P(M/V)确定一个阈值参数MH,MH的值定得比较高。

当一帧输入信号的M值超过MH 时,就可以十分肯定该帧语音信号不是无声,而有相当大的可能性是浊音由N1’向前和N2’向后继续用短时过零率Z进行搜索。

根据无声情况下短时过零率Z的均值,设置一个参数Z0,如果由N1’向前搜索时Z始终大于Z0的3倍,则认为这些信号仍属于语音段,直至Z突然下降到低于3Z0值时,这时可以确定语音的精确起点(为了保证可靠,由N1’向前搜索时间不超过25ms)。

对终点做同样的处理。

采取这一算法的原因在于,N1’以前可能是一段清辅音段(如f,s),它的能量相当弱,依靠能量不可能把他们与无声段区别开,而他们的过零率明显高于无声,因而能用这个参数来精确的判断二者的分割点,也就是语音真正的起点。

四、实验步骤:(1)用cooledit录了一段音,是我自己说的。

采样率为8KHZ,量化精度为16比特线性码。

(2)利用滤波器对信号进行带通滤波,这样可除去大部分共振峰的影响(3)利用公式分别编程计算这段语音信号的短时能量、短时平均幅度、短时过零率,然后分别画出它们的曲线;(4)然后画出短时零能比曲线。

(5)根据上述结果判断找出其中的一帧浊音信号和一帧清音信号。

判断依据是,浊音:短时能量大、短时平均幅度大、短时过零率低;清音:短时能量小、短时平均幅度小、短时过零率高。

浊音,取13270--13510个点,清音,取12120--12360个点。

分别计算他们的短时自相关函数和平均幅度差函数;(6)调整能量门限,设置参数,实现语音端点的检测。

五、实验结论分析:(1)从图中明显可以看出,浊音信号的具有明显的周期性,其自相关函数和平均幅度差函数也表现出周期性。

清音信号稍微差一点,但不是很明显,主要是由于清音信号的位置找的不是很好。

(2)浊音:短时能量大、短时平均幅度大、短时过零率低;清音:短时能量小、短时平均幅度小、短时过零率高。

(3)门限值的选取对语音检测结果有很大影响。

(4)仅仅根据能量判断是比较粗糙的,还需根据过零率进行判断。

因为清音和噪声的短时平均过零率比背景噪声的平均过零率要高出好几倍。

附源代码:N=240[Y]=wavread('lailigen.wav',[118000]);L=length(Y)LL=length(Y)/N figure(1)set(1,'Position',[10,35,350,650])Em=zeros(1,(LL-1)*240);for ii=1:(LL-1)*240,temp=Y(ii:ii+240);Em(ii)=sum(temp.*temp);endsubplot(4,1,1)jj=[1:(LL-1)*240];plot(jj,Em,'b');title('¶ÌʱÄÜÁ¿')gridMn=zeros(1,(LL-1)*240);for ii=1:(LL-1)*240,temp=Y(ii:ii+240);Mn(ii)=sum(abs(temp))/N;endfigure(1)subplot(4,1,2)jj=[1:(LL-1)*240];plot(jj,Mn,'b');title('¶Ìʱƽ¾ù·ù¶È')gridZn=zeros(1,(LL-1)*240);for ii=2:(LL-1)*240,temp1=sign(Y(ii:ii+240));temp=sign(Y(ii-1:ii+240-1));Zn(ii)=sum(abs(temp1-temp));endfigure(1)subplot(4,1,3)jj=[1:(LL-1)*240];plot(jj,Zn,'b');title('¶Ìʱ¹ýÁãÂÊ')gridfigure(1)subplot(4,1,4)jj=[1:(LL-1)*240];plot(jj,Zn./Em,'b');title('ÁãÄܱÈÇúÏß')gridtemp=Y(13271:13510);%Rn1=zeros(1,240);for nn=[1:240],for ii=[1:240-nn],Rn1(nn)=Rn1(nn)+temp(ii)*temp(nn+ii);endendfigure(2)set(2,'Position',[400,35,350,650])subplot(4,1,1)jj=[1:240];plot(jj,Rn1,'b');title('×ÇÒô¶Ìʱ×ÔÏà¹Øº¯Êý')gridYn1=zeros(1,240);for nn=[1:240],for ii=[1:240-nn],Yn1(nn)=Yn1(nn)+abs(temp(ii)-temp(nn+ii));endendfigure(2)subplot(4,1,2)jj=[1:240];plot(jj,Yn1,'b');title('×ÇÒô¶Ìʱƽ¾ù·ù¶È²î')gridtemp=Y(12121:12360);Rn2=zeros(1,240);for nn=[1:240],for ii=[1:240-nn],Rn2(nn)=Rn2(nn)+temp(ii)*temp(nn+ii);endendfigure(2)subplot(4,1,3)jj=[1:240];plot(jj,Rn2,'b');title('ÇåÒô¶Ìʱ×ÔÏà¹Ø')gridYn2=zeros(1,240);for nn=[1:240],for ii=[1:240-nn],Yn2(nn)=Yn2(nn)+abs(temp(ii)-temp(nn+ii));endendfigure(2)subplot(4,1,4)jj=[1:240];plot(jj,Yn2,'b');title('ÇåÒô¶Ìʱƽ¾ù·ù¶È²î')grid[x,fs,nbits]=wavread('lailigen.wav');x=x/max(abs(x));FrameLen=256;inc=90;amp1=10;amp2=2;zcr1=10;zcr2=5;minsilence=6;minlen=15;status=0;count=0;silence=0;amp=Em;zcr=Mn;amp1=min(amp1,max(amp)/4);amp2=min(amp2,max(amp)/8);for n=1:length(zcr)goto=0;switch statuscase{0,1}if amp(n)>amp1x1=max(n-count-1,1);status=2;silence=0;count=count+1;elseif amp(n)>amp2||zcr(n)>zcr2status=1;count=count+1;elsestatus=0;count=0;endcase2,if amp(n)>amp2||zcr(n)>zcr2count=count+1;elsesilence=silence+1;if silence<minsilencecount=count+1;elseif count<minlenstatus=0;silence=0;count=0;elsestatus=3;endendcase3,break;endendcount=count-silence/2;x2=x1+count-1;figure(3)subplot(3,1,1)plot(x)axis([1length(x)-11])ylabel('Speech');line([x1*inc x1*inc],[-11],'Color','red');line([x2*inc x2*inc],[-11],'Color','red'); subplot(3,1,2)plot(amp);axis([1length(amp)0max(amp)])ylabel('Energy');line([x1x1],[min(amp),max(amp)],'Color','red'); line([x2x2],[min(amp),max(amp)],'Color','red'); subplot(3,1,3)plot(zcr);axis([1length(zcr)0max(zcr)])ylabel('ZCR');line([x1x1],[min(zcr),max(zcr)],'Color','red'); line([x2x2],[min(zcr),max(zcr)],'Color','red');。

相关文档
最新文档