一种双门限地名语音端点检测方法与流程

文档序号:12678455阅读:424来源:国知局

本发明属于语音端点检测领域,特别涉及一种双门限地名语音端点检测方法。



背景技术:

随着经济的高速发展和全球化趋势的日益突出,现代物流行业已在发达国家得到了空前的发展,并产生了巨大的经济效益和社会效益。物流资源有运输、仓储、分拣、包装、配送等,这些资源分散在多个领域,包括制造业、农业、流通业等。

在分拣环节中,现阶段基本是人工进行分拣,由于工人们长期处于嘈杂的工作环境中,心里和身体上势必会产生一定的疲劳感,并且工作任务的单一性和重复性也会使他们的工作状态过于放松,这必然导致分拣精确性的下降,造成较多不可挽回的分拣失误事故发生,因此工业领域中对流水线上的产品进行人工检测的方式已不能满足现代化工业的需求。

语音识别作为人机交互的重要接口,发展到现在已经在很多方面改变了我们的生活,从智能家居的语音控制系统到车载语音识别系统等,因此将语音识别技术与物流分拣环节的融合是物流行业发展的必然要求。

而在语音识别技术中,端点检测技术是语音识别中极为重要的环节,其效果的好坏直接影响最终的识别结果,传统的基于短时能量和过零率的端点检测方法是在理想的环境中才能适用,且对于孤立词的地名语音信号,端点检测的准确率相对较低。



技术实现要素:

本发明的目的在于克服现有技术的缺点与不足,提供一种双门限地名语音端点检测方法,提高了端点检测的准确性。

一种双门限地名语音端点检测方法,包括以下步骤:从第一帧信号开始判断每帧语音信号的能量与最低能量阈值、最高能量阈值的大小,判断过零率与过零率阈值的大小,从而确定对下一帧信号进行检测的合适方法,并在可能进入语音状态的情况下,通过增加变量来对语音段前面出现的发音轻时间段的语音信号进行保留。

具体步骤如下:

1、接收经过预处理的地名语音信号,判断每帧语音信号的能量与最低能量阈值、最高能量阈值的大小以及判断过零率与过零率阈值的大小;

2、当第i帧语音信号的能量<最低能量阈值时,将状态变量设置为0,语音长度计数变量设置成0,表明仍处于静音段,继续返回步骤1进行下一帧检测;

当最高能量阈值>第i帧语音信号的能量>最低能量阈值,且过零率>过零率阈值,将状态变量设置为1,表明可能处于语音段,将语音长度计数变量加1,同时将可能处于语音段的长度的变量加1,并返回步骤1进行下一帧检测;

3、若已经有状态变量为1,则对可能处于语音段的语音信号按照一定的标准进行筛选,进一步区分噪音段和语音段;

4、当第i帧语音信号的能量>最高能量阈值,则将状态变量设置为2,表示进入语音段,同时将语音长度计数变量加1,按照步骤5进行下一帧检测;

5、判断当前帧语音信号的能量>最低能量阈值或当前帧语音信号的过零率>过零率阈值是否成立;

若成立,表示还在语音段,不是静音,将状态变量保持为2,语音长度计数变量加1,按照步骤5继续下一帧检测;

若不成立,说明信号已经从语音段转向静音段,则将静音长度加1,并对静音长度作进一步判断;直到找到全部有效的语音信号,将状态参数设置为3,结束进程。

优选的,若已经有状态变量为1,且语音信号的能量小于最低能量阈值时,判断可能处于语音段的长度的变量大于一定阈值是否成立,若成立,表示当前是噪音段,舍弃前面的语音部分,令状态变量,语音长度计数变量和可能处于语音段的长度的变量等于0并返回步骤1继续下一帧检测;若不成立,则表示可能还在语音段,保持状态变量等于1且将语音长度计数变量加1,可能处于语音段的长度的变量加1,返回步骤1进行下一帧检测。

进一步的,上述一定阈值等于6。

优选的,对静音长度作进一步判断的步骤是:判断静音长度<最大静音长度是否成立;

若成立,则保持状态变量为2,将语音长度计数变量加1,并按照步骤5进行下一帧检测;

若不成立,则判断语音长度计数变量<语音信号最小长度是否成立;若语音长度计数变量<语音信号最小长度成立,表明前面检测出来的都是噪声,将状态变量设置为0、静音段长度设置为0、语音长度计数变量设置为0,再继续检验;若语音长度计数变量<语音信号最小长度不成立,表示语音段已经找到,认为是有效的语音信号,将状态参数设置为3,结束进程。

优选的,初始状态下,令状态变量等于0,语音长度计数变量等于0,用于计算未确定进入语音段时可能处于语音段的长度的变量等于0,静音长度等于0。

优选的,所述最低能量阈值的值为0.01,最高能量阈值的值是0.1,过零率阈值为100。

优选的,所述静音最大长度等于10,所述语音信号最小长度等于5。

优选的,预处理过程包括预加重处理及分帧处理。

具体的,预加重处理是通过具有6dB/倍频程的提升高频特性的数字滤波器来实现,所述高通滤波器满足H(z)=1-μz-1,μ=0.97;按照帧长256,帧移128对语音信号进行分帧。

本发明与现有技术相比,具有如下优点和有益效果:

本发明结合孤立词的地名语音信号的特点,通过对传统的双门限方法进行改进,加入用于计算未确定进入语音段时可能处于语音段的长度的变量slience1变量,以及优化各种端点检测参数,能够保证轻音且持续时间很短的断续的地名语音信号的前一部分不会被判定为噪声,从而避免丢失语音信号,提高了端点检测的准确性以及现场应用环境的适应性,降低了端点检测对环境的要求。

附图说明

图1是实施例方法的过程示意图。

具体实施方式

下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。

在地名语音信号的端点检测过程中,如果一段地名语音先是处于语音段,然后处于静音段,再进入正常语音段,则传统的端点检测方法会将正常语音段前面的一段认为是噪音段,然后重新剪切语音信号,这就导致语音信号的丢失,例如“石家庄”这个发音,“石”发音很轻很短,不易识别。

而本实施例给出的双门限地名语音端点检测方法,基于改进的短时平均能量和过零率,通过加入用于计算未确定进入语音段时可能处于语音段的长度的变量slience1,即使遇到上述情况,也能够保存正常语音段前面的语音长度,将其作为有效片段,从而提高端点检测的有效性。

在进行端点检测前,对地名语音信号进行预处理,包括预加重处理(Pre-emphasis)及分帧处理。

由于语音信号的平均功率受声门激励和口鼻辐射的影响,高频端大约在80Hz以上按6dB倍频程跌落,所以当求语音信号频谱时,频率越高相应的成分越小,高频部分的频谱比低频部分难求,因此要对语音信号进行预加重处理。预加重处理的中心思想是利用信号特性和噪声特性的差别来有效地对信号进行处理,目的是提升高频部分,使信号的频谱变得平坦,保持在低频到高频的整个频带中,能用同样的信噪比求频谱,以便于频谱分析或声道参数分析。预加重是通过具有6dB/倍频程的提升高频特性的数字滤波器来实现,本实施例中采用高通滤波器,所述高通滤波器满足H(z)=1-μz-1,μ=0.97。

另外,语音信号从整体来看,其特性及表征其本质特征的参数均是随时间变化的,但是它又具有短时平稳特性,在短时间内(一般为10ms~30ms内)可以看作是一个近似不变的平稳过程。

目前绝大多数的语音信号处理技术均是在短时的基础上对语音信号进行分帧处理,然后分别对每一帧提取特征参数段,为了使帧与帧之间平滑,保持连续性,一般采用交叠分帧的方法,使前一帧和后一帧具有相交部分,相交部分称为帧移,分帧时要对帧长和帧移的长度进行选择,如果采用较大的帧长,则帧数太少,计算量会小,系统处理的速度快,但容易增加端点检测的误差,如果采用较小的帧长,则帧数较多,计算量增加,系统处理的速度慢。一般每秒的帧数约为33~100帧,帧移一般取帧长的1/3~2/3,本实施例中,按照帧长256,帧移128对语音信号进行分帧,256、128均为采样点个数。

对地名语音信号经过预处理后,即可进行端点检测,,如附图1所示,具体步骤如下:

初始状态下,令状态变量status=0,语音长度计数变量count=0,用于计算未确定进入语音段时可能处于语音段的长度的变量slience1=0,静音长度slience=0。

S1、接收经过预处理的地名语音信号,判断每帧语音信号的能量amp[i]与最低能量阈值amp2、最高能量阈值amp1的大小以及判断过零率zcr[i]与过零率阈值zcr的大小,其中,所述最低能量阈值amp2的值为0.01,最高能量阈值amp1的值是0.1,过零率阈值zcr为100。

这些阈值均是语音信号在归一化处理之后设置的阈值,假设语音信号为x=[x1,x2,…xn],则归一化处理是:

在这些处理之后,信号x中的所有值均在[-1,1]之间。在这基础上设定的阈值,以下数据均是在归一化之后设定的阈值。

这个过程是将语音信号的每一帧依次进行检测,根据语音信号各帧的判断结果,设置状态变量status的值,从而确定下一帧语音信号应该如何进行判断。

S2、当第i帧语音信号的能量amp[i]<最低能量阈值amp2时,将状态变量status设置为0,语音长度计数变量count设置成0,表明仍处于静音段,继续返回S1步骤进行下一帧检测;

S3、当最高能量阈值amp1>第i帧语音信号的能量amp[i]>最低能量阈值amp2,且过零率zcr[i]>过零率阈值zcr,将状态变量status设置为1,表明可能处于语音段,将语音长度计数变量count加1,同时将可能处于语音段的长度的变量sliencel加1,并返回S1步骤进行下一帧检测。

S4、若已经进入状态status=1,且当下一帧语音信号的能量小于最低能量阈值amp2时,判断sliencel>6是否成立,若成立,表示当前是噪音段,舍弃前面的语音部分,令状态变量status=0,语音长度计数变量count=0,可能处于语音段的长度的变量slience1=0并返回S1步骤继续下一帧检测;若不成立,则表示可能还在语音段,保持状态变量status=1且将语音长度计数变量count加1,可能处于语音段的长度的变量slience1加1,返回S1步骤进行下一帧检测。

S5、当第i帧语音信号的能量amp[i]>最高能量阈值amp1,则将状态变量status设置为2,表示进入语音段,同时将语音长度计数变量count加1,按照S6步骤进行下一帧检测。

S6、判断当前帧语音信号的能量amp[i]>最低能量阈值amp2或当前帧语音信号的过零率zcr[i]>过零率阈值zcr是否成立。

若成立,表示还在语音段,不是静音,将状态变量status保持为2,语音长度计数变量count加1,按照S6步骤继续下一帧检测。

若不成立,说明信号已经从语音段转向静音段,则将静音长度slience加1,此处静音长度slience变量是用于后面判断语音信号是否结束,并执行S9步骤。

S9、判断静音长度slience<最大静音长度maxslience是否成立,其中所述静音最大长度maxslience=10;

若成立,则表示可能还在语音段,这是因为在前面出现语音信号之后,当前静音段的语音长度没有达到最大静音长度,则说明语音信号后面可能还没结束,可能还有信号,因此可能还在语音段,保持状态变量status为2,将语音长度计数变量count加1,并按照步骤S6进行下一帧检测。

若不成立,则判断语音长度计数变量count<语音信号最小长度minlen是否成立,其中所述语音信号最小长度minlen=5;若语音长度计数变量count<语音信号最小长度minlen成立,表明前面检测出来的都是噪声,这是因为:正常的语音信号长度应该大于语音信号最小长度minlen,若小于此长度,则判定为噪声,将状态变量status设置为0、静音段长度slience设置为0、语音长度计数变量count设置为0,再继续检验;若语音长度计数变量count<语音信号最小长度minlen不成立,表示语音段已经找到,认为是有效的语音信号,因此可以结束整个过程,即将状态参数status设置为3,结束进程。

本实施例中对于范围的判断都是用大于或者小于表达,未提及等于,可将等于归结为大于那一类。

上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1