基于FPGA的语音端点检测

2012-02-17 08:57:52来源: eefocus

语音端点检测就是从背景噪声中找到语音的起点和终点,其目标是要在一段输入信号中将语音信号同其他信号(如背景噪声)分离并且准确地判断出语音的端点。研究表明,即使在安静的环境中,一半以上的语音识别系统识别错误来自端点检测。因此,端点检测的重要性不容忽视,尤其在噪声环境下语音的端点检测,它的准确性很大程度上直接影响着后续的工作能否有效进行[1]。

当前语音识别系统大多以ARM、DSP为设计核心,其设计费用高、缺乏灵活性、开发周期长,而且很难满足高速的系统要求。在对语音端点检测算法的研究中,提出了诸如基于能量、过零率、LPC预测残差等多种算法[2],但这些方法大部分都是基于计算机软件的,不适合进行硬件开发[3]。

FPGA具有功耗低、体积小、速度快等优点,可以满足语音识别系统的实时性要求。本文尝试用FPGA实现语音端点检测,对常用的Lawrence Rabiner端点检测法进行改进,用纯硬件的方法实现语音端点检测,并以“长沙”等词和短语为例,验证其准确性和可行性。

1 FPGA实现语音端点检测基本原理

主要由四个部分完成:预加重、分帧、加窗和端点判断,FPGA实现方法同样要经过这四个步骤。

1.1 预加重

语音信号的平均功率谱由于受声门激励和口鼻辐射的影响,高频端大约在800 Hz以上按6 dB/Oct(倍频程)衰减,这样语音信号的频谱中,频率越高相应的成分越少,因而要得到高频部分的频率比低频部分更困难。所以,对语音信号进行分析之前,要对语音信号加以提升,使语音信号的短时频谱变得更为平坦,从而便于进行频谱分析和声道参数分析。提升的方法有模拟电路法和数字电路法,本设计主要采用数字电路法。一般的数字电路法用一阶的数字滤波器来实现:

式(2)只有移位和加减运算,即用简单的移位来取代复杂的小数乘法运算,从而可以方便地用FPGA实现。

1.2 分帧加窗

分帧处理即将预加重后的语音信号分成多段进行分析,即从原始语音序列中分解出一个新的依赖于时间的序列,便于描述语音信号特征。语音信号具有时变特性,但在相当短的时间范围内,其特性基本保持不变,从而可以进行分段分析。假设语音信号在10 ms~30 ms内平稳,就可以以此时间段为单位将语音信号分ms段进行分析,其中每一段称为一“帧”,每一帧的长度叫帧长。为了使帧与帧之间保持连续平滑过渡,分帧一般采用交叠分段的方法,前一帧和后一帧的交叠部分称为帧移。帧移与帧长的比值一般取为0~1/2。为便于语音识别系统中特征的提取,取2n为帧长。本文语音信号的采样频率为16 kHz,取帧长为256(16 ms),帧移为128。

分帧的FPGA实现。其关键就是解决帧移的叠加问题。可以用两个FIFO(F1和F2)来实现,具体过程为:先向F1写入128个数;读取F1中的数得到这帧前128个数,同时将F1中的数写入F2中;F1的数读完时F2也已写完,此时再读取F2中的数得到这帧的后128个数(这时就得到了一帧的语音信号),在读取F2中数据的同时向F1写入下一帧的数据,这样一直循环就完成了语音的分帧。

分帧后帧之间重新拼接处语音信号的频谱特性和原来相比会有差异。为了使语音信号在帧之间重新拼接处的频谱特性与原来更加接近,就要进行加窗处理。在语音信号处理中常用的窗函数是矩形窗和汉明窗[5]。它们的表达式如下(其中N为帧长):

矩形窗:基于FPGA的语音端点检测[图]

矩形窗的主瓣宽度较小,因而具有较高的频率分辨率;但它的旁瓣峰值较大,因此其频谱泄露比较严重。相比较而言,虽然汉明窗主瓣宽度较矩形窗大一倍,但是它的旁瓣衰减较大,因而具有更平滑的低通特性,能够在较高程度上反映短时语音信号的频谱特性,所以本文采用汉明窗。

加窗的FPGA实现。加窗就是用分帧后的数据乘以窗函数。在FPGA的实现上加汉明窗的过程难点是小数余弦乘法运算,如果用算法来实现运算会比较慢。这里考虑到N比较小,可以采用查表法实现加窗处理。查表法就是将窗函数的各个值存在ROM里面,依次查找。这里用DSP Builder工具生成窗函数的各个值,因为Altera公司开发的DSP Builder工具有很强的数字信号处理功能,能很好地完成窗函数的运算。具体操作步骤为:在Matlab中打开simulink工具并打开Altera DSP Builder Blockset工具箱,然后新建“.mdl”文件,在工具箱中找到相应的模块并连接。在“hamming_table”模块的“Matlab Array”中输入“0.54-0.56*cos([0:2*pi/255:2*pi])”。然后编译、综合,系统就会自动生成查表法要用到的“.hex”文件。

1.3 端点判断

端点判断是整个端点检测中最重要的部分,也是计算量最大的部分。所以算法的选择非常重要,本文用算法是根据Lawrence Rabiner端点检测法改进而来的。先介绍下Lawrence Rabiner端点检测法,这种方法以过零率ZRC和能量E为特征来检测起止点,具体方法为:

该算法是以基于能量的起止点算法。根据发音刚开始前已知为“静”态的的连续10帧内的数据,计算能量阈值T1(低能量阈值)及T2(高能量阈值)。开始计算前10帧每帧的能量,设其最大值称之为MX,最小值为MN,过零率阈值为ZCT,则有:

[1] [2]

关键字:FPGA  语音端点  噪声

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/Test_and_measurement/2012/0217/article_4646.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
FPGA
语音端点
噪声

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved