1 语音识别原理
语音识别原理框图如图1所示。语音信号输入之后,预处理和数字化是进行语音识别的前提条件。其中,预处理主要是进行预滤波,保留正常人的300~3400Hz的语音信号;数字化是要进行A/D转换及抗混叠等处理;特征提取是进行语音信号训练和识别必不可少的步骤。能够体现语音信号特征的参数包括:(1)基于LPC的倒谱参数;(2)Mel系数的倒谱参数;(3)采用前沿数字信号处理技术的特征分析手段,如小波分析、时/频域分析、人工神经网络等。本文采用基于LPC的倒谱参数表示方法,提取出的特征值存入参考模式库中,用来匹配待识别语音信号的特征值。匹配计算是进行语音识别的核心部分,由待识别人的语音经过特征提取后,与系统训练时产生的模板进行匹配,在说话人辨认中,取与待识别语音相似度最大的模型所对应的语音作为识别结果,这就是语音识别的整个过程[1]。
2 硬件结构部分
此系统的核心器件是TI公司的TMS320VC5509A定点DSP芯片。它是系统的运算处理单元,具有2个乘法器(MAC),4个累加器(ACC);40位、16位的算术逻辑单元(ALU)各一个,这大大增强了DSP的运算能力;指令字长不只单一的16位,可扩展到最高48位,数据字长16位;在144MHz下工作,指令周期可达6.94ns。TMS320VC5509A还提供高速的多通道缓冲串口McBSP(Multi-channel Buffererd Serial Ports),DSP可通过McBSP与其他DSP、编解码器等器件相连。McBSP具有全双工通信,双缓冲数据寄存器,允许传送连续的数据流,能够向CPU发送中断,向DMA控制器发送DMA事件,可设置帧同步脉冲和时钟信号的极性等功能,这大大方便了DSP采集音频信号[3]。除此之外,TMS320VC5509A还提供了更为高效的外部存储器接口(EMIF),以往DSP的空间选通信号被片选信号取代,而每个片选信号分别占用不同的地址空间,这样就不需要外部的译码电路,从而实现了与外部设备的无缝连接,可使DSP外部存储空间扩大到满足系统要求。值得强调的是,可通过USB接口对TMS320VC5509A烧写程序而不必借助仿真器。正是基于这些优点,选择该芯片可节省开发资金,减小电路板面积。
TLV320AIC23是TI公司的一款低成本、低功耗的音频编解码芯片(CODEC),在本系统中负责采集语音信号。它与本系统相关的性能参数如下:(1)支持8kHz~96kHz可调采样率;(2)与DSP连接,主从类型可通过软件编写来实现;(3)DSP可通过I2C总线来配置TLV320AIC23的寄存器;(4)采集语音信号字长16/20/24/32Bit;(5)MIC音频输入具有强抗噪性;(6)具有可调1~5dB的完整缓存放大系统[4]。
EPM3128ATC100-10可编程逻辑器件(CPLD)在本系统中担当两方面的职能:(1)作为控制部件,接收DSP发出的信号,经逻辑判断后,驱动诸如电机、发光二极管等器件;(2)用于DSP地址线的扩展。TMS320VC5509A只有14根地址线,但它的外部存储空间可以扩展到16MB(字节寻址),显然,DSP的固有地址线是无法满足要求的。本系统采用CPLD完成地址线的扩展[5][6]。
HY57V641620同步动态存储器(SDRAM),容量为4M×16Bit。作为RAM的扩展,大大增强了DSP的存储与运算能力[7]。
SST39VF1601闪存存储器(Flash),容量为1M×16Bit。在这个系统中[8],它主要用来存储程序代码。上电后,DSP从外部Flash加载并执行程序代码,使系统能够脱机运行。
3 软件模块部分
软件流程如图3所示。系统采集语音信号后,首先要进行预滤波和预加重;接着将语音信号进行分帧,由于语音信号具有极强的相关性,因此在分帧时,要考虑帧重复。本文将语音信号以256个采样点为一帧,两帧之间的重复点数为80;然后计算每帧信号的短时能量与短时平均过零率,这也是接下来进行端点检测的依据;利用门限判决进行端点检测后,提取每帧信号的LPC系数,作为该帧信号的特征值;最后,用语音信号的特征值与模板逐个进行匹配。相似度最大的模板所对应的语音信号为识别结果,根据识别结果就可以向外发出控制信号。
3.1 端点检测
端点检测就是要从采集的信号中检测出说话人的命令字。此系统中,对语音信号进行了分帧操作,一种简便的方法就是获取说话人命令字的起始帧数,具体操作是通过求一帧信号的短时能量和短时平均过零率来判断的。语音信号的短时能量分析给出了反应其幅度变化的一个合适描述方法。一帧语音信号的短时能量定义为:
短时过零率,即指每帧内信号通过零值的次数,能够在一定程度上反映信号的频谱特性。一帧语音信号内短时平均过零率定义为:
在正式端点检测开始后,短时能量与短时平均过零率一起做为门限来判决说话人命令字的开始与结束:连续5帧语音信号超过门限值视为说话人命令字的开始,连续8帧语音信号低于门限值视为说话人命令字的结束。
3.2 特征值提取
此系统以语音信号的线性预测系数(LPC)作为特征值。采用自相关法获取LPC系数,先计算每帧语音信号的13阶自相关函数,定义为:
得到自相关函数后,采用莱文逊—杜宾递推算法计算线性预测系数,得到说话人一个命令字的LPC系数矩阵,大小为:命令字帧数×12。
3.3 模板匹配(DTW算法)
模板匹配就是把上述计算得到的LPC系数矩阵中的元素与事先存在DSP中的模板元素进行差值计算。在此系统中,采用动态时间弯折(DTW)算法:假设参考模板的LPC系数向量序列为X=(x1,x2,…,xI),输入语音的LPC系数向量序列为Y=(y1,y2,…,yJ),I≠J。DTW算法就是要寻找一个最佳的时间规正函数,使待测语音的时间轴j非线性地映射到参考模板的时间轴i上,使总的累计差值最小[1]。
DTW算法就是通过局部优化的方法实现加权距离总和最小,也就是相似度最大,定义为:
3.4 小数的定点运算
在进行语音信号处理时,通常要先对其进行归一化,使得语音信号|x(n)|≤1,为后面计算自相关函数及求LPC系数提供方便。这样就面临一个实际问题:对定点DSP而言,参与数值运算的数是16位二进制整型数,而DSP芯片如何处理小数运算呢?方法是确定一个数的小数点处于16位中的某一位,这也就是数值的定标问题,举例如下:
Q0 定标 (19AB)16=(31147)10
Q15定标 (19AB)16=(0.95)10
由此可见,对于定点DSP芯片内部而言,一个16位整型数到底表示多少,它本身是不能够分辨的,必须通过定标来确定。进行归一化处理就是把数以Q15形式定标,为以后的运算做好准备[2]。做小数的定点运算时,还要进行预运算和移位。预运算就是事先估计运算结果,为下一步移位做准备。其实现可采用如Matlab等的辅助软件。由于此系统的识别过程涉及较多的乘加运算,如几个Q15定标的数进行加法运算,结果可能出现溢出现象,如果不能进行很好的预运算,将对后面的运算产生很大影响;移位是小数做定点运算的具体操作。做加、减、乘、除法时,要严格按照相应的操作方法,每做一个四则运算都要参照实际情况,遵循先移位、再做运算、最后再移位的步骤,以在精度损失最少的情况下保证运算结果的可靠性。
3.5 定点DSP做浮点运算
定点运算是以DSP的实际存储形式(16位二进制整型)为数值格式进行加、减、乘、除等四则运算,允许数值的表示范围是:(-32768)10~(32767)10。定点DSP的浮点运算是人为地开辟两个16位存储单元来表示一个数值,其中一个用来存储尾数,另一个用来存储指数,按照自然科学计数法进行四则运算。显而易见,这样的存储计算方法,其精度和动态表示范围都远远高于定点运算。
为降低成本,本系统选择了一款定点DSP。由于端点检测、模板匹配对精度要求不高,所以采用定点算法进行小数运算;计算自相关系数、提取LPC系数时,要求精度高,因此采用浮点算法进行小数运算。这也意味着,在端点检测完成之后,要先将定点运算转换为浮点运算;提取LPC系数之后,再将浮点运算转换为定点运算进行匹配。以牺牲少量运算时间为代价,适当提高运算精度和识别率。实验证明,这是可行的。
4 测试方法及结果
下面用两种实验方法来测试此系统的性能。
实验1:用CPLD的输出信号来驱动两个步进电机R和L,某特定人的四个命令信号“走”,“左”,“右”,“停”控制这两个电机的运转。对应的实验现象:走—L、R同时转;左—L转,R停;右—L停,R转;停—R、L都不转。
实验2:用CPLD的输出信号驱动四个发光二极管A、B、C、D,某特定人的四个命令信号“1”,“2”,“3”,“4”来控制相应发光二极管的亮灭。对应的实验现象:1—A亮,其余灭;2—B亮,其余灭;3—C亮,其余灭;4—D亮,其余灭。
以上两个实验,除了测试识别率外,还要比较在计算自相关函数和提取LPC系数时,分别采用定点算法、浮点算法所消耗机器周期的个数,本系统DSP的机器周期为83.28ns。由于每次采集的命令字帧长不确定,以进行十次实验消耗的机器周期的平均值来统计,测试结果如表1所示。
由表1可见,在相同的测试条件下,当采用浮点运算计算自相关函数和提取LPC系数时,尽管识别率高于定点运算,但是系统消耗了更多的运算时间。
本文设计的语音识别与控制系统,具有体积小、成本低、便于携带等优点。在实现系统功能的同时又使板级调试与系统升级变得极为方便,因此可以作为一个处理语音信号的通用硬件平台,亦可完成语音编码、声回波对消等算法的实现。系统在DSP提供的地址线少于Flash地址线的情况下,由CPLD扩展了DSP的地址线。在不借助硬件仿真器的情况下,实现了对Flash的在线烧写,并采用二次引导的方法,完成了程序的并行加载,使系统能够脱机运行。由CPLD发出相应的识别控制信号,能够驱动电动机及指示灯等。测试结果表明,该系统处理速度快,运行稳定可靠,达到设计要求。
参考文献
[1] 韩纪庆,张磊,郑铁然.语音信号处理[M].北京:清华大学出版社,2004.
[2] 张雄伟,陈亮,徐光辉.DSP芯片的原理与开发应用[M].北京:电子工业出版社,2004.
[3] Texas Instruments.TMS320VC5509A Fixed-Point Digital Signal Processor[EB/OL].Texas Instruments Inc,2006,3. www.ti.com.
[4] Texas Instruments.TLV320AIC23 Data Manual[EB/OL]. Texas Instruments Inc,2002,1.www.ti.com.
[5] Texas Instruments.TMS320VC5509 Evaluation Module Technical Reference[EB/OL].Texas Instruments Inc,2002,1.www.ti.com.
[6] Altera.MAX 3000A Programmable Logic Device Family Date Sheets[EB/OL].Altera Corporation,2003,6.lit_req@altera.com.
[7] Hynix.HY57V641620HG Data Sheets[EB/OL].Hynix Semiconductor,2002,1.www.21ic.com.
[8] Silicon Storage Technology.SST39VF1601 Data Sheets[EB/OL].Silicon Storage Technology,Inc,2003,11.www.sst.com.
此系统的核心器件是TI公司的TMS320VC5509A定点DSP芯片。它是系统的运算处理单元,具有2个乘法器(MAC),4个累加器(ACC);40位、16位的算术逻辑单元(ALU)各一个,这大大增强了DSP的运算能力;指令字长不只单一的16位,可扩展到最高48位,数据字长16位;在144MHz下工作,指令周期可达6.94ns。TMS320VC5509A还提供高速的多通道缓冲串口McBSP(Multi-channel Buffererd Serial Ports),DSP可通过McBSP与其他DSP、编解码器等器件相连。McBSP具有全双工通信,双缓冲数据寄存器,允许传送连续的数据流,能够向CPU发送中断,向DMA控制器发送DMA事件,可设置帧同步脉冲和时钟信号的极性等功能,这大大方便了DSP采集音频信号[3]。除此之外,TMS320VC5509A还提供了更为高效的外部存储器接口(EMIF),以往DSP的空间选通信号被片选信号取代,而每个片选信号分别占用不同的地址空间,这样就不需要外部的译码电路,从而实现了与外部设备的无缝连接,可使DSP外部存储空间扩大到满足系统要求。值得强调的是,可通过USB接口对TMS320VC5509A烧写程序而不必借助仿真器。正是基于这些优点,选择该芯片可节省开发资金,减小电路板面积。
TLV320AIC23是TI公司的一款低成本、低功耗的音频编解码芯片(CODEC),在本系统中负责采集语音信号。它与本系统相关的性能参数如下:(1)支持8kHz~96kHz可调采样率;(2)与DSP连接,主从类型可通过软件编写来实现;(3)DSP可通过I2C总线来配置TLV320AIC23的寄存器;(4)采集语音信号字长16/20/24/32Bit;(5)MIC音频输入具有强抗噪性;(6)具有可调1~5dB的完整缓存放大系统[4]。
EPM3128ATC100-10可编程逻辑器件(CPLD)在本系统中担当两方面的职能:(1)作为控制部件,接收DSP发出的信号,经逻辑判断后,驱动诸如电机、发光二极管等器件;(2)用于DSP地址线的扩展。TMS320VC5509A只有14根地址线,但它的外部存储空间可以扩展到16MB(字节寻址),显然,DSP的固有地址线是无法满足要求的。本系统采用CPLD完成地址线的扩展[5][6]。
HY57V641620同步动态存储器(SDRAM),容量为4M×16Bit。作为RAM的扩展,大大增强了DSP的存储与运算能力[7]。
SST39VF1601闪存存储器(Flash),容量为1M×16Bit。在这个系统中[8],它主要用来存储程序代码。上电后,DSP从外部Flash加载并执行程序代码,使系统能够脱机运行。
3 软件模块部分
软件流程如图3所示。系统采集语音信号后,首先要进行预滤波和预加重;接着将语音信号进行分帧,由于语音信号具有极强的相关性,因此在分帧时,要考虑帧重复。本文将语音信号以256个采样点为一帧,两帧之间的重复点数为80;然后计算每帧信号的短时能量与短时平均过零率,这也是接下来进行端点检测的依据;利用门限判决进行端点检测后,提取每帧信号的LPC系数,作为该帧信号的特征值;最后,用语音信号的特征值与模板逐个进行匹配。相似度最大的模板所对应的语音信号为识别结果,根据识别结果就可以向外发出控制信号。
3.1 端点检测
端点检测就是要从采集的信号中检测出说话人的命令字。此系统中,对语音信号进行了分帧操作,一种简便的方法就是获取说话人命令字的起始帧数,具体操作是通过求一帧信号的短时能量和短时平均过零率来判断的。语音信号的短时能量分析给出了反应其幅度变化的一个合适描述方法。一帧语音信号的短时能量定义为:
短时过零率,即指每帧内信号通过零值的次数,能够在一定程度上反映信号的频谱特性。一帧语音信号内短时平均过零率定义为:
在正式端点检测开始后,短时能量与短时平均过零率一起做为门限来判决说话人命令字的开始与结束:连续5帧语音信号超过门限值视为说话人命令字的开始,连续8帧语音信号低于门限值视为说话人命令字的结束。
3.2 特征值提取
此系统以语音信号的线性预测系数(LPC)作为特征值。采用自相关法获取LPC系数,先计算每帧语音信号的13阶自相关函数,定义为:
得到自相关函数后,采用莱文逊—杜宾递推算法计算线性预测系数,得到说话人一个命令字的LPC系数矩阵,大小为:命令字帧数×12。
3.3 模板匹配(DTW算法)
模板匹配就是把上述计算得到的LPC系数矩阵中的元素与事先存在DSP中的模板元素进行差值计算。在此系统中,采用动态时间弯折(DTW)算法:假设参考模板的LPC系数向量序列为X=(x1,x2,…,xI),输入语音的LPC系数向量序列为Y=(y1,y2,…,yJ),I≠J。DTW算法就是要寻找一个最佳的时间规正函数,使待测语音的时间轴j非线性地映射到参考模板的时间轴i上,使总的累计差值最小[1]。
DTW算法就是通过局部优化的方法实现加权距离总和最小,也就是相似度最大,定义为:
3.4 小数的定点运算
在进行语音信号处理时,通常要先对其进行归一化,使得语音信号|x(n)|≤1,为后面计算自相关函数及求LPC系数提供方便。这样就面临一个实际问题:对定点DSP而言,参与数值运算的数是16位二进制整型数,而DSP芯片如何处理小数运算呢?方法是确定一个数的小数点处于16位中的某一位,这也就是数值的定标问题,举例如下:
Q0 定标 (19AB)16=(31147)10
Q15定标 (19AB)16=(0.95)10
由此可见,对于定点DSP芯片内部而言,一个16位整型数到底表示多少,它本身是不能够分辨的,必须通过定标来确定。进行归一化处理就是把数以Q15形式定标,为以后的运算做好准备[2]。做小数的定点运算时,还要进行预运算和移位。预运算就是事先估计运算结果,为下一步移位做准备。其实现可采用如Matlab等的辅助软件。由于此系统的识别过程涉及较多的乘加运算,如几个Q15定标的数进行加法运算,结果可能出现溢出现象,如果不能进行很好的预运算,将对后面的运算产生很大影响;移位是小数做定点运算的具体操作。做加、减、乘、除法时,要严格按照相应的操作方法,每做一个四则运算都要参照实际情况,遵循先移位、再做运算、最后再移位的步骤,以在精度损失最少的情况下保证运算结果的可靠性。
3.5 定点DSP做浮点运算
定点运算是以DSP的实际存储形式(16位二进制整型)为数值格式进行加、减、乘、除等四则运算,允许数值的表示范围是:(-32768)10~(32767)10。定点DSP的浮点运算是人为地开辟两个16位存储单元来表示一个数值,其中一个用来存储尾数,另一个用来存储指数,按照自然科学计数法进行四则运算。显而易见,这样的存储计算方法,其精度和动态表示范围都远远高于定点运算。
为降低成本,本系统选择了一款定点DSP。由于端点检测、模板匹配对精度要求不高,所以采用定点算法进行小数运算;计算自相关系数、提取LPC系数时,要求精度高,因此采用浮点算法进行小数运算。这也意味着,在端点检测完成之后,要先将定点运算转换为浮点运算;提取LPC系数之后,再将浮点运算转换为定点运算进行匹配。以牺牲少量运算时间为代价,适当提高运算精度和识别率。实验证明,这是可行的。
4 测试方法及结果
下面用两种实验方法来测试此系统的性能。
实验1:用CPLD的输出信号来驱动两个步进电机R和L,某特定人的四个命令信号“走”,“左”,“右”,“停”控制这两个电机的运转。对应的实验现象:走—L、R同时转;左—L转,R停;右—L停,R转;停—R、L都不转。
实验2:用CPLD的输出信号驱动四个发光二极管A、B、C、D,某特定人的四个命令信号“1”,“2”,“3”,“4”来控制相应发光二极管的亮灭。对应的实验现象:1—A亮,其余灭;2—B亮,其余灭;3—C亮,其余灭;4—D亮,其余灭。
以上两个实验,除了测试识别率外,还要比较在计算自相关函数和提取LPC系数时,分别采用定点算法、浮点算法所消耗机器周期的个数,本系统DSP的机器周期为83.28ns。由于每次采集的命令字帧长不确定,以进行十次实验消耗的机器周期的平均值来统计,测试结果如表1所示。
由表1可见,在相同的测试条件下,当采用浮点运算计算自相关函数和提取LPC系数时,尽管识别率高于定点运算,但是系统消耗了更多的运算时间。
本文设计的语音识别与控制系统,具有体积小、成本低、便于携带等优点。在实现系统功能的同时又使板级调试与系统升级变得极为方便,因此可以作为一个处理语音信号的通用硬件平台,亦可完成语音编码、声回波对消等算法的实现。系统在DSP提供的地址线少于Flash地址线的情况下,由CPLD扩展了DSP的地址线。在不借助硬件仿真器的情况下,实现了对Flash的在线烧写,并采用二次引导的方法,完成了程序的并行加载,使系统能够脱机运行。由CPLD发出相应的识别控制信号,能够驱动电动机及指示灯等。测试结果表明,该系统处理速度快,运行稳定可靠,达到设计要求。
参考文献
[1] 韩纪庆,张磊,郑铁然.语音信号处理[M].北京:清华大学出版社,2004.
[2] 张雄伟,陈亮,徐光辉.DSP芯片的原理与开发应用[M].北京:电子工业出版社,2004.
[3] Texas Instruments.TMS320VC5509A Fixed-Point Digital Signal Processor[EB/OL].Texas Instruments Inc,2006,3. www.ti.com.
[4] Texas Instruments.TLV320AIC23 Data Manual[EB/OL]. Texas Instruments Inc,2002,1.www.ti.com.
[5] Texas Instruments.TMS320VC5509 Evaluation Module Technical Reference[EB/OL].Texas Instruments Inc,2002,1.www.ti.com.
[6] Altera.MAX 3000A Programmable Logic Device Family Date Sheets[EB/OL].Altera Corporation,2003,6.lit_req@altera.com.
[7] Hynix.HY57V641620HG Data Sheets[EB/OL].Hynix Semiconductor,2002,1.www.21ic.com.
[8] Silicon Storage Technology.SST39VF1601 Data Sheets[EB/OL].Silicon Storage Technology,Inc,2003,11.www.sst.com.