语音端点检测方法的分析与实现
基于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编程实现带噪语音信号端点检测的原理,这充分锻炼了我们独立的动手能力和独立的解决所遇到的问题,让我对这门课程又有了新的理解。
四.课程设计原理端点检测是语音信号处理过程中非常重要的一步,它的准确性直接影响到语音信号处理的速度和结果,因此端点检测方法的研究一直是语音信号处理中的热点。
本设计使用传统的短时能量和过零率相结合的语音端点检测算法利用短时过零率来检测清音.用短时能量来检测浊音,两者相配合便实现了信号信噪比较大情况下的端点检测。
算法对于输入信号的检测过程可分为短时能量检测和短时过零率检测两个部分。
算法以短时能量检测为主,短时过零率检测为辅。
根据语音的统计特性,可以把语音段分为清音、浊音以及静音(包括背景噪声)三种。
在本算法中,短时能量检测可以较好地区分出浊音和静音。
详解python的webrtc库实现语音端点检测

详解python的webrtc库实现语⾳端点检测引⾔语⾳端点检测最早应⽤于电话传输和检测系统当中,⽤于通信信道的时间分配,提⾼传输线路的利⽤效率.端点检测属于语⾳处理系统的前端操作,在语⾳检测领域意义重⼤.但是⽬前的语⾳端点检测,尤其是检测⼈声开始和结束的端点始终是属于技术难点,各家公司始终处于能判断,但是不敢保证判别准确性的阶段.现在基于云端语义库的聊天机器⼈层出不穷,其中最著名的当属amazon的 Alexa/Echo 智能⾳箱.国内如⾬后春笋般出现了各种搭载语⾳聊天的智能⾳箱(如前⼏天在知乎上⼴告的若琪机器⼈)和各类智能机器⼈产品.国内语⾳服务提供商主要⾯对中⽂语⾳服务,由于语⾳不像图像有分辨率等等较为客观的指标,很多时候凭主观判断,所以较难判断各家语⾳识别和合成技术的好坏.但是我个⼈认为,国内的中⽂语⾳服务和国外的英⽂语⾳服务,在某些⽅⾯已经有超越的趋势.通常搭建机器⼈聊天系统主要包括以下三个⽅⾯:1. 语⾳转⽂字(ASR/STT)2. 语义内容(NLU/NLP)3. ⽂字转语⾳(TTS)语⾳转⽂字(ASR/STT)在将语⾳传给云端API之前,是本地前端的语⾳采集,这部分主要包括如下⼏个⽅⾯:1. 麦克风降噪2. 声源定位3. 回声消除4. 唤醒词5. 语⾳端点检测6. ⾳频格式压缩python 端点检测由于实际应⽤中,单纯依靠能量检测特征检测等⽅法很难判断⼈声说话的起始点,所以市⾯上⼤多数的语⾳产品都是使⽤唤醒词判断语⾳起始.另外加上声⾳回路,还可以做语⾳打断.这样的交互⽅式可能有些傻,每次必须喊⼀下唤醒词才能继续聊天.这种⽅式聊多了,个⼈感觉会嘴巴疼:-O .现在github上有snowboy唤醒词的开源库,⼤家可以登录snowboy官⽹训练⾃⼰的唤醒词模型.1. Kitt-AI : Snowboy2. Sensory : Sensory考虑到⽤唤醒词嘴巴会累,所以⼤致调研了⼀下,Python拥有丰富的库,直接import就能⾷⽤.这种⽅式容易受强噪声⼲扰,适合⼀个⼈在家玩玩.1. pyaudio: pip install pyaudio 可以从设备节点读取原始⾳频流数据,⾳频编码是PCM格式;2. webrtcvad: pip install webrtcvad 检测判断⼀组语⾳数据是否为空语⾳;当检测到持续时间长度 T1 vad检测都有语⾳活动,可以判定为语⾳起始;当检测到持续时间长度 T2 vad检测都没有有语⾳活动,可以判定为语⾳结束;完整程序代码可以从我的下载程序很简单,相信看⼀会⼉就明⽩了'''Requirements:+ pyaudio - `pip install pyaudio`+ py-webrtcvad - `pip install webrtcvad`'''import webrtcvadimport collectionsimport sysimport signalimport pyaudiofrom array import arrayfrom struct import packimport waveimport timeFORMAT = pyaudio.paInt16CHANNELS = 1RATE = 16000CHUNK_DURATION_MS = 30 # supports 10, 20 and 30 (ms)PADDING_DURATION_MS = 1500 # 1 sec jugementCHUNK_SIZE = int(RATE CHUNK_DURATION_MS / 1000) # chunk to readCHUNK_BYTES = CHUNK_SIZE 2 # 16bit = 2 bytes, PCMNUM_PADDING_CHUNKS = int(PADDING_DURATION_MS / CHUNK_DURATION_MS)# NUM_WINDOW_CHUNKS = int(240 / CHUNK_DURATION_MS)NUM_WINDOW_CHUNKS = int(400 / CHUNK_DURATION_MS) # 400 ms/ 30ms geNUM_WINDOW_CHUNKS_END = NUM_WINDOW_CHUNKS 2START_OFFSET = int(NUM_WINDOW_CHUNKS CHUNK_DURATION_MS 0.5 RATE)vad = webrtcvad.Vad(1)pa = pyaudio.PyAudio()stream = pa.open(format=FORMAT,channels=CHANNELS,rate=RATE,input=True,start=False,# input_device_index=2,frames_per_buffer=CHUNK_SIZE)got_a_sentence = Falseleave = Falsedef handle_int(sig, chunk):global leave, got_a_sentenceleave = Truegot_a_sentence = Truedef record_to_file(path, data, sample_width):"Records from the microphone and outputs the resulting data to 'path'" # sample_width, data = record()data = pack('<' + ('h' len(data)), data)wf = wave.open(path, 'wb')wf.setnchannels(1)wf.setsampwidth(sample_width)wf.setframerate(RATE)wf.writeframes(data)wf.close()def normalize(snd_data):"Average the volume out"MAXIMUM = 32767 # 16384times = float(MAXIMUM) / max(abs(i) for i in snd_data)r = array('h')for i in snd_data:r.append(int(i times))return rsignal.signal(signal.SIGINT, handle_int)while not leave:ring_buffer = collections.deque(maxlen=NUM_PADDING_CHUNKS) triggered = Falsevoiced_frames = []ring_buffer_flags = [0] NUM_WINDOW_CHUNKSring_buffer_index = 0ring_buffer_flags_end = [0] NUM_WINDOW_CHUNKS_ENDring_buffer_index_end = 0buffer_in = ''# WangSraw_data = array('h')index = 0start_point = 0StartTime = time.time()print(" recording: ")stream.start_stream()while not got_a_sentence and not leave:chunk = stream.read(CHUNK_SIZE)# add WangSraw_data.extend(array('h', chunk))index += CHUNK_SIZETimeUse = time.time() - StartTimeactive = vad.is_speech(chunk, RATE)sys.stdout.write('1' if active else '_')ring_buffer_flags[ring_buffer_index] = 1 if active else 0ring_buffer_index += 1ring_buffer_index %= NUM_WINDOW_CHUNKSring_buffer_flags_end[ring_buffer_index_end] = 1 if active else 0ring_buffer_index_end += 1ring_buffer_index_end %= NUM_WINDOW_CHUNKS_END# start point detectionif not triggered:ring_buffer.append(chunk)num_voiced = sum(ring_buffer_flags)if num_voiced > 0.8 NUM_WINDOW_CHUNKS:sys.stdout.write(' Open ')triggered = Truestart_point = index - CHUNK_SIZE 20 # start point# voiced_frames.extend(ring_buffer)ring_buffer.clear()# end point detectionelse:# voiced_frames.append(chunk)ring_buffer.append(chunk)num_unvoiced = NUM_WINDOW_CHUNKS_END - sum(ring_buffer_flags_end)if num_unvoiced > 0.90 NUM_WINDOW_CHUNKS_END or TimeUse > 10:sys.stdout.write(' Close ')triggered = Falsegot_a_sentence = Truesys.stdout.flush()sys.stdout.write('\n')# data = b''.join(voiced_frames)stream.stop_stream()print(" done recording")got_a_sentence = False# write to fileraw_data.reverse()for index in range(start_point):raw_data.pop()raw_data.reverse()raw_data = normalize(raw_data)record_to_file("recording.wav", raw_data, 2)leave = Truestream.close()程序运⾏⽅式sudo python vad.py以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。
噪声背景下语音端点检测方法的研究

噪声背景下语音端点检测方法的研究摘要:在实际环境中,并没有完全纯净的语音信号,一段语音信号往往都伴有噪声信号,所以研究在背景噪声环境中的语音端点检测更为重要。
常用的短时过零率法、短时能量法以及双门限法都存在着一个共同的问题,即对信噪比要求较高。
为了解决这一问题我们提出了一改进算法,即基于谱减法思想的语音端点检测的方法,有效的提高检测的正确率。
关键词:端点检测噪声短时能量短时过零率谱减法1、引言语音端点检测是指用计算机数字处理技术来找出语音信号中的字或词等的起点和终点这俩个端点。
作为语音识别的前端,准确的端点检测可以提高识别的准确率。
语音端点检测的困难在于一段信号中的无声段或者录制一段语音段的前后人为呼吸等产生的杂音、语音开始处的弱摩擦音或弱爆破音以及终点处的鼻音,这些使得语音的端点需要综合利用语音的各种信号特征,从而确保定位的精确性,避免包含噪音信号和丢失语音信号。
常用语音端点检测法有短时过零率法、短时能量法以及双门限法。
但是对于信噪比要求较高,所以本文提出了一种基于谱减法思想的语音端点检测算法,提高语音端点检测的正确率。
2、语音端点检测方法常用方法中的短时能量法,语音和噪声的区别可以体现在它们的能量上,语音段的能量与噪声段能量相比,要大于噪声段的能量,因此可以以此为依据进行检测;短时过零率法,短时过零率可以区别语音是清音还是浊音[1,2],因此它可以从背景噪声中找出语音信号;传统双门限比较法,首先为短时能量和过零率分别确定两个门限,较低的门限对信号的变化比较敏感,较高的门限是用来确定进入语音段。
当低门限被超过时,未必是语音的开始而很有可能是由很小的噪声所引起的波动,但当高门限被超过并且在接下来的时间段内一直超过低门限时,则意味着语音信号的开始[3]。
但是上述三种方法在低信噪比时检测效果就不是很理想了。
因此我们提出了一种改进算法。
3、基于谱减法思想的语音端点检测算法的研究3.1 谱减法概述由于语音生成模型是低速率语音编码的基础,当语音受到噪声干扰时,提取的模型参数将很不准确,重建的语音质量急剧恶化。
语音端点检测方法研究

语音端点检测方法研究1沈红丽,曾毓敏,李平,王鹏南京师范大学物理科学与技术学院,南京(210097)E-mail:orange.2009@摘要: 端点检测是语音识别中的一个重要环节。
有效的端点检测技术不仅能减少系统的处理时间,增强系统处理的实时性,而且能排除无声段的噪声干扰,增强后续过程的识别性。
可以说,语音信号的端点检测至今天为止仍是有待进一步深入的研究课题.鉴于此,本文介绍了语音端点算法的基本研究现状,接着讨论并比较了语音信号端点检测的方法,分析了各种方法的原理及优缺点,如经典的基于短时能量和过零率的检测方法,基于频带方差的检测方法,基于熵的检测方法,基于倒谱距离的检测方法等.并基于这些方法的分析,对端点检测方法做了进行了总结和展望,对语音信号的端点检测的进一步研究具有深远的意义。
关键词:语音信号;端点检测;噪声中图分类号:TP206. 11. 引言语音信号处理中的端点检测技术,是指从包含语音的一段信号中确定出语音信号的起始点及结束点。
语音信号的端点检测是进行其它语音信号处理(如语音识别、讲话人识别等)重要且关键的第一步. 研究表明[1],即使在安静的环境中,语音识别系统一半以上的识别错误来自端点检测器。
因此,作为语音识别系统的第一步,端点检测的关键性不容忽视,尤其是噪声环境下语音的端点检测,它的准确性很大程度上直接影响着后续的工作能否有效进行。
确定语音信号的起止点, 从而减小语音信号处理过程中的计算量, 是众多语音信号处理领域中一个基本而且重要的问题。
有效的端点检测技术不仅能减少系统的处理时间,增强系统处理的实时性,而且能排除无声段的噪声干扰,增强后续过程的识别性。
可以说,语音信号的端点检测至今天为止仍是有待进一步深入的研究课题。
2. 语音端点检测主要方法和分析在很长一段时间里,语音端点检测算法主要是依据语音信号的时域特性[2].其采用的主要参数有短时能量、短时平均过零率等,即通常说的基于能量的端点检测方法。
一种语音信号端点检测方法的研究

一种语音信号端点检测方法的研究吴亮春潘世永(西华大学数学与计算机学院,四川成都 610039)摘要在语音识别系统中,端点检测的误差会降低系统的识别率,进行有效准确的端点检测是语音识别的重要步骤。
因此端点检测逐渐成为语音信号处理中的一个热点。
本文提出了一种基于模型的Teager 能量端点检测方法。
实验证明,该算法比传统的能量过零率端点检测算法具有更高的识别率,能够更准确的检测出语音信号的端点。
关键词端点检测;模型;过零率1 引言语音是人类相互交流和通信最方便快捷的手段。
如何高效地实现语音传输、存储或通过语音实现人机交互,是语音信号处理领域中的重要研究课题。
而语音端点检测是语音分析、语音合成、语音编码、说话人识别中的一个重要环节,直接影响到后续工作的准确性。
在实际应用中,首先通常要求对系统的输入信号进行判断,准确地找出语音信号的起始点和终止点,这样才能采集真正的语音数据,减少数据量和运算量,并减少处理时间。
在语音识别中,通常是先根据一定的端点检测算法,对语音信号中的有声片段和无声片段进行分割,而后再针对有声片段,依据语音的某些特征进行识别。
研究表明,即使在安静的环境中,语音识别系统一半以上的识别错误来自端点检测器。
因此,作为语音识别系统的第一步,端点检测的关键不容忽视,尤其是噪声环境下语音的端点检测,它的准确性很大程度上直接影响着后续的工作能否有效进行。
可以说,语音信号的端点检测至今仍是有待进一步深入研究的课题。
2 语音信号的时域特征2.1 短时能量分析语音信号的能量随着时间变化比较明显,一般清音部分的能量比浊音的能量小的多,所以在区分清音和浊音,有声段和无声段的应用中效果比较明显。
对于信号{x(n)},短时能量的定义如下:式中,, E n表示在信号的第n个点开始加窗函数时的短时能量。
通过上式可以看出,短时能量式语音信号的平方经过一个线性低通滤波器的输出,该线性低通滤波器的单位冲激响应为h(n)。
由于短时能量是对信号进行平方运算,因而增加了高低信号之间的差距,在一些应用场合并不合适。
语音端点检测比例法 -回复

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

语音信号的最基本组成单位是音素。音素可分成浊音和清音两大类。如果将不存在语音而只有背景噪声的情况成为“无声”,那么音素可分成“无声”、“浊音”和“清音”三类。在短时分析的基础上可判断一短段语音属于哪一类。如果是浊语音段,还可测定它的另一些重要参数,如基音和共振峰等。
2.2 语音信号分析
语音信号处理包括语音识别、语音合成、语音编码、说话人识别等方面,但是其前提和基础是对语音信号进行分析。只有将语音信号分析成表示其本质特性的参数,才有可能利用这些参数进行高效的语音通信,以及建立用于识别的模板或知识库。而且,语音识别率的高低,语音合成的音质好坏,都取决于对语音信号分析的准确性和精度
第三章,从每一种算法的方程式入手,以原理简便、运算量小等方面为标准,通过大量的文献调研与实际研究,本课主题要研究语音起点和终点的检测,以短时能量和短时过零率相结合的双门限语音端点检测算法以及倒谱分析和谱熵技术等进行语音端点检测,并分析各算法在低信噪比和高信噪比条件下的检测效果进行对比。
对这种信号进行Matlab进行编程,对于不同信噪比的声音片段,最后用前后的噪声信号进行对比以得出结论
1.2 语音端点检测现状
作为一个完整的语音识别系统,其最终实现及使用的效果不仅仅限于识别的算法,许多相关因素都直接影响着应用系统的成功与否。语音识别的对象是语音信号,端点检测的目的就是在复杂的应用环境下的信号流中分辨出语音信号和非语音信号,并确定语音信号的开始及结束。一般的信号流都存在一定的背景声,而语音识别的模型都是基于语音信号训练的,语音信号和语音模型进行模式匹配才有意义。因此从信号流中检测出语音信号是语音识别的必要的预处理过程[2]。
《基于深度学习的语音端点检测》范文

《基于深度学习的语音端点检测》篇一一、引言随着人工智能技术的不断发展,语音信号处理在许多领域得到了广泛的应用。
其中,语音端点检测(Voice Activity Detection,VAD)是语音信号处理中的一项关键技术。
它主要用于确定语音信号中语音段的起始点和结束点,从而为后续的语音识别、语音合成等任务提供有效信息。
传统的语音端点检测方法往往基于简单的统计模型或者特定的语音特征进行阈值设置,对于复杂环境下的语音信号处理效果并不理想。
近年来,随着深度学习技术的发展,基于深度学习的语音端点检测方法逐渐成为研究热点。
本文旨在探讨基于深度学习的语音端点检测方法,以提高语音信号处理的准确性和鲁棒性。
二、相关工作传统的语音端点检测方法主要包括基于短时能量和过零率的检测方法、基于谱熵的检测方法等。
这些方法通常依赖于特定的语音特征和阈值设置,对于不同环境下的语音信号处理效果不稳定。
近年来,深度学习技术在语音信号处理领域得到了广泛应用,如基于深度神经网络的语音识别、语音合成等。
深度学习技术可以自动提取语音信号中的特征信息,从而提高了语音信号处理的准确性和鲁棒性。
因此,基于深度学习的语音端点检测方法逐渐成为研究热点。
三、基于深度学习的语音端点检测方法本文提出一种基于深度学习的语音端点检测方法。
该方法主要包括以下几个步骤:1. 数据预处理:对原始语音信号进行预处理,包括归一化、分帧等操作。
2. 特征提取:利用深度神经网络自动提取语音信号中的特征信息,如MFCC(Mel Frequency Cepstral Coefficients)等。
3. 模型训练:使用有标签的语音数据训练深度神经网络模型,以学习语音信号中的特征与端点之间的关系。
4. 端点检测:将提取的特征输入到训练好的模型中,得到每个时间点的概率值,从而确定语音段的起始点和结束点。
四、实验与分析本文使用公开的语音数据集进行实验,将基于深度学习的语音端点检测方法与传统的检测方法进行对比分析。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
始和最简单的, 要利 主 用的就是语音数据时域上的 特征, 进 行一些简单的 处理和判决, 大致断定语音数据的 端点位置。 后来, 经过改进, 在短时能量和短时过零率的基础上又
有了双门限的端点检测方法。双门限结合了短时能量和短
m zm ,, 2一
・ 这里狱 是第i 个子带信号二m 的 () 长度, 1, …, o i ,. N =2・ E, 、 … 为 号二 ) 小 带 能 序 进一 , … 凡 信 ( 的 波子 平均 量 列。 凡 m 步, 将能量序列通过一个中心滤波器, 进行一次中心消波,
果。 在实际检测过程中, 通过改进的双门限端点检测算法进 行端点检测。 ( 首先, 1 ) 估计背景噪声, 计算双门限算法中用到的阑 值。 程序中 用到了四 值: 个阑 短时能量两个,l K( 较小, 别 区 背景噪声和有效的语音) 2较大, 和K ( 区别单字) , 短时过零 率两个,l较小, G( 区别背景噪声和有效的语音) G ( 和 2较 大, 别清音和浊音) 值的选取采用经验值。 区 。A ( 将数据进行分帧处理,以 18 2 ) 2 个点 ( m一对于 1 s 6
t s eh m n tn ot . h p c s eti a rh e e e g ao l im g K y rssec edo t w- r hledo t co; e t s r; s m e w d: h pi; t e o npi dt tn wv etn o cpt o pe n n to h s d n e i a l r f m e r e a u
如果 x 是背景噪声信号,则这些小波变换后的 X ( m) ( 都是同一个常数 C。根据能量守恒原理, m) 则有
N , N ;
2 . 3双门限端点检测算法 双门限 法将短时能量和短时过零率相结合, 适于实验 室条件下背景噪声平稳的语音段检测。 它引人两级判决, 用 短时能量进行第一次语音段划分, 然后在此基础上用短时
1 引言
语音端点检测在语音识别中有着及其重要的作用, 对
语音识别的精确度影响很大。 最初的语音端点检测技术就是利用语音数据的短时幅 度和短时能量以及短时过零率来检测。这三种手段是最原
好, 但是这种方法检测的精确度是由信噪比的大小来决
定的。
2 语音端点检测的基本方法
2, . 语音信号短时能量定义 如果窗的起点为nm 语音信号的短时能量定义为: =,
有一定背景噪声环境下进行端点检测的实验。 关键词: 端点检测; 双门限; 小波变换; 倒谱 中图分类号 T 92 N 1. 3 文献标识码: A
文章编号: 7-6X20) -060 1 244 ( 7 406-4 6 0 0
A a s ad l et i o Sec E do t et n nl i n I e nao f eh pi D t i y s mp m t n p n n e co
耗时很长。基于声音倒谱特性的检测方法的抗噪能力比较
收稿日 : 0 - 8 2 期 2 7 0- 8 0
万方数据
景噪声和有效的 语音数据, 也可以 从语音中区别出浊音来 ( 因为浊音时短时平均能量的值要比 清音时短时平均能量 的 值大很多 , 用来区 ) 可以 别声母和 韵母的分界、 无声和有声
的分界等。
K, 1那么计算短时过零率, 若算短时过零率大于G 且小于 1 G, 2接着连续检测其后的四帧, 若计算的短时能量和短时 过零率都符合上述条件, 这帧被记为开始帧。 在开始帧存在 的 情况下, 如果其后的 某一帧的短时过零率小于G 或者 l 大于G , 2或者其短时能量小于K , 2那么, 这一帧被记为结 束帧。判断结束帧时不采用时滞机制的原因是说话时字与 字的间隔比 较小, 短时过零率或者短时能量都只是在很小 的范围内能检测出结束帧。 ( 检测过程中, 3 ) 可以加人一些高斯噪声, 以检验算法
( 首先, 1 ) 将语音数据进行( m/ 分帧处理, 1s 6 帧) 分帧后
各段帧数据如下:
基频来使声道共振; 尽管有若干 个共振峰, 但其能量的 分布
集中于低于3 H 的频率范围内。 Kz 发清音时声带不振动, 声道某部分阻塞产生类似白噪
X M I () ) X( ) I X M ' ( .. I () XM .. M 2 I .. ( 3 ) 其中, 4 s 包括( ) m 的帧移数据处理。
ca c rtsui cpt m nf m d su d t c wt t bcg ud s, ppr i e hr tii . g s t s r a cpt m a e h akr n ni t ae ah vd a esc s e r r o n e r i n i h n u a s e o oe h e ce
( 1 )
在信噪比较高的情况下, 可以利用短时能量区别出背
时过零率的 优点, 其精确度和误检率都有了 进一步的 改善。 但是, 还是有很多不足的地方: 其中 双门限的误检率还是很 高, 因为在时域范围内 数据的 很多特征是无法准确决定声 音的端点的。而且双门限方法不具备抗噪能力。 接着, 小波理论和倒谱理论的出现, 又实现了将语音数 据从时域变换到频域, 根据频域特征来进行端点检测的方 法, 这些方法中每种方法的 检测效果都不一样。 检测精 有的 确度比 较高, 如基于小波的 比 端点检测方法, 但是这种方法
2 . 2语音信号短时过零率定义 过零就是指信号通过零值。过零率就是单位时间内信 号方向变换的次数。 对于离散时间序列, 过零则是指序列取 样值改变符号, 过零率则是每个样本的改变符号的次数。 对 于 语音信号, 则是指在一帧语音中 语音信号波形穿过横轴 ( 零电平) 的次数。可以用相邻两个取样改变符号的次数来
布在一个范围内。
其中小为端点检测的门限 a 值, 为实验测量的 标准值,
20 0 为经验门限值。 根据统计可知: 绝大多数语音数据的能 量分布在 20008000 000-000 之间, 因此取a 5000 =000 ( 对上述数据进行小波变换, 3 ) 变换结果为:
X() 2 ) 3 ) … m , , ( , ( … 丸() m Xm Xm ( 5 )
20 年 1 月 07 2
Dc2 7 0 e . 0
语音端点检测方法的分析与实现
马道钧, 陈天策, 婕 高
( 北京电子科技学院, 北京 107 ) 000
摘 要: 本文在研究短时能量和短时过零率两种语音端点检测基本算法的基础上, 编程实 现了 双门限 的端点检测;并进一步根据小波变换的原理,利用小波变换和信号频域统计特性来精确地进行端点检 测; 最后, 在研究了 倒谱的相关理论基础上, 实现了 将语音数据进行倒谱变换, 通过计算倒谱距离, 在具
这样可以使得能量序列的特征更好的表现出来。接着计算 这个能量序列的均值和方差: N . l E 一 lN -
D -“ = , 1.’ N , : 一
( 8 )
8H 采样率) 帧, 个点( s Kz 为1 3 2 ( ) 4 为一帧 计算每一帧 m 移, 的短时能量和短时过零率, 如果这一帧的短时能量大于
( 估计端点检测的门限值 : 2 )
币 20 1 一 =0 = —
a
声激励, 通过声道后其能量集中 浊音时更高的频率范 在比
围内。
, Y N
浊音时能量集中 于较低频率段内, 具有较低的过零率, 而发清音时能量集中 于较高频率段内, 具有较高的 过零率。 虽然清音的过零率比 较高, 浊音的过零率比 较低。 但是 在实际的语音数据中, 背景噪声的过零率也是很低的, 因为 背景噪声的很多值都为零,因此按照上述公式计算的短时 过零率就会很低。 实际的处理中, 浊音的短时过零率都会分
第 巧卷
马道钧, 陈天策, 婕: 高 语音端点检测方法的分析与实现
6 ・ 7
计算。 如果窗的起点是 nmm0 , . . 短时过零率z定 = ,=,2 . . 1, . , 3. m 义为:
N十 卜 1 刀
的正确性与鲁棒性。双门限的端点检测方法在加人过大的 噪声后, 那么检测结果是不理想的。
第 1卷 第 4 5 期
V l 1 N - o . 5 o 4
北京电子科技学院学报
Jun l B i ig eto i S in e d cn lg Isiu e ora o ejn E crn c ec a T h ooy ttt f l c n e n
万方数据
显然, 如果信号x 主要由背景白噪声组成, () m 那么, 由 于噪声的“ 谱性质, 白” 这个能量序列应该近似为一个常数 序列, 其方差近似为零。 如果信号x 主要由 () m 语音组成, 那 么, 这个能量序列是一个数值变化的序列, 其方差不会近似 为零。 如果信号x 主要由白色噪声和语音组成, () m 那么, 不 论白色噪声能量有多大, 由于语音的存在, 这个能量序列依 然是一个数值变化的序列, 其方差不会近似为零。 ) ’ ( 根据上述思想, 计算每帧小波变换后的语音数据
3 利用小波变换进行语音端点检测
利用小波变换进行语音端点检测的算法为:
Z2 S m, ( } -) (-1}2 m 互SS m一 } ) ) = g. 、 (- n , n ( ( n
其中, n S 为符号函 g 数。
短时过零率可以看作信号频率的简单度量。 发浊音时, 声带振动, 因而声门激励是以此音调频率为
过零率进行第二次划分。首先确定短时能量大于较大经验 阂值的A 段。 B 然后沿着A 段两端搜索找到短时幅度大于 B 较小经验阂值的语音段 C 。 D 最后在 C 两端搜索短时过零 D 率大于选定阂值的语音段 E o 段为端点检测的最后结 F E F
N
( ) 艺 一) XkN } 蒸(C x = i), } M26 ( 艺 (=2- , , m CE X) =贵 x , 2= i
M DoJ , N pc, R A - nC E T -eG O a u H r : A e a ( ig tn Si c ad ho g It t Big 00 h a B j Ecoi c ne Tcnl y i e ei 1 7, i ) ei l r c n e e n e o n t , n 0 su j 0 Cn