基于Windows CE的语音口令识别系统的设计

分享到:

 

摘要:论文给出一种基于嵌入式系统的语音口令识别系统的设计方案,该系统的硬件电路由嵌入式微处理器和音频处理等主要芯片组成,采用Windows CE操作系统,语音口令识别算法为连续隐马尔可夫模型。实验结果表明,随着嵌入式微处理器性能的不断提高和价格的不断下降,对运算量要求比较高的语音口令识别技术就可以通过嵌入式系统来实现,并且应用到许多需要使用口令控制的便携式设备中。
关键词:语音口令识别;嵌入式系统;隐马尔可夫模型;Windows CE

0 引言
    随着微电子技术的迅速发展,嵌入式系统在一些特定的专用设备上得到了广泛应用,通常这些设备的硬件资源(如处理器的运行速度、存储器的容量等)非常有限,并且对成本也有苛刻的要求,有时对实时响应要求也比较高,在数字信号处理芯片上已经实现了语音口令识别系统或语音口令识别系统的部分功能。语音口令识别技术与嵌入式系统的有效结合能够显示出其优势作用,但是也有很多有待进一步提高和改进之处,语音识别技术对运算速度和内存容量的要求都比较高,需要采用一些快速算法提高实时处理的性能。嵌入式微处理器的价格在不断下降,但是其性能却在不断上升,嵌入式系统目前已经广泛地应用于运算量比较大的系统和设备中,而其体积小和低功耗的特点使其能够发挥出更大的优势。


    论文给出一种基于嵌入式系统的语音口令识别系统的设计方案,硬件系统的核心芯片是嵌入式微处理器,语音口令识别算法采用连续隐马尔可夫模型,现有的非特定人语音口令识别系统中,多采用状态输出具有连续概率分布的连续隐马尔可夫模型CDHMM(Continuous DensityHidden Markov Model)。操作系统则是采用的目前广泛使用的WindowsCE 5.O。


    硬件电路的核心芯片是三星公司的嵌入式微处理器S3C2440AL,主频为400MHz。该微处理器具有低功耗、高性能等特点,广泛应用于便携式设备中。基于嵌入式系统的语音口令识别系统需要有接收语音信号的输入芯片配合麦克风实现将模拟语音信号转换成数字信号的功能,然后由嵌入式微处理器对输入的语音口令信号进行处理。完成语音口令信号输入功能的芯片采用的是PHILIPS公司的低功耗芯片UDA1341TS。操作系统采用的是Windows CE5.0。Windows CE 5.0是一个32位操作系统,具有模块化、结构化,能够支持超过1000个公共Microsoft Win32应用程序接口,并且与处理器无关等特点,为各种嵌入式系统和产品设计提供了一种可裁剪的、高效的、可升级的操作系统。

1 系统设计
1.1 硬件电路的设计
    论文给出的语音口令识别系统的硬件电路主要由嵌入式微处理器、存储器和语音口令输入芯片组成。核心芯片是嵌入式微处理器Samsung 32位S3C2440AL,其主频为400MHz,最高频率533MHz。64MB SDRAM,64MB的NAND FLASH存储器,用来存储操作系统文件等,2MB的NOR FLASH存储,为安装BIOS使用。S3C2440AL控制PHILIPS公司的UDA 1341TS完成输入语音口令信号的功能。该音频处理芯片由AD/DA转换、控制逻辑电路、可编程增益放大器(PGA)和数字自动增益控制器(AGC)以及数字信号处理器等部分组成,能进行数字语音处理。


    对于一个基于嵌入式系统的语音口令识别系统,主要有以下几个要求:
    (1)完成语音口令识别功能时,需要系统对人所发出的语音口令做出快速的响应,然后给出相应的判断结果。
    (2)自动获得语音信号。语音口令识别系统一直处于随时接受语音口令的工作状态,无需人工操作就能将人的语音命令与环境噪声分离出来,舍弃静音信号和环境噪声信号部分,仅仅对有效的语音口令信号做处理和识别。
    (3)需要有足够的存储器容量存储操作系统文件和训练好的语音口令模型库以及存储大量数据的数据缓冲区。


    论文给出的语音口令识别系统选择高性价比的嵌入式微处理器S3C2440AL和64MB随机存储器和64MB的闪存来满足计算速度和数据缓存的要求。


1.2 软件程序的设计
    选择Windows CE 5.0为语音口令识别系统的操作系统,Windows CE 5.0是一个多任务操作系统。开发工具主要有Platform Builder 5.0和EVC++4.0。Platform Builder5.0用于定制和开发内核,而EVC++4.0则用来编写基于操作系统的应用层程序,也就是算法执行程序与图形化界面,而图形化的界面使用MFC编写。


    由于语音口令识别系统算法的运算量比较大,所以为了能够加快运算速度,首先对Windows CE 5.0操作系统进行配置,需要将相应的板级支持包BSP(Board SupportPackage)导入到Platform Builder 5.O,裁剪掉一些使用不到的资源,保留一些需要的资源,驱动的配置正确后,将配置好的操作系统内核装入到嵌入式平台中,然后进行应用程序的开发。


    语音口令识别系统分为训练和识别两个过程。训练时,语音口令信号首先经过预处理,然后提取语音特征参数,采用MFCC(Mel-Frequen-cy Ceptral Coefficients)参数,然后建立此口令的连续隐马尔可夫(CDHMM)模型,把所有经过训练的语音口令的模型放在模型库中。


    在识别阶段,与训练时提取语音口令信号的特征参数一样,也要提取MFCC特征参数,然后与保存在语音口令模型库中的每一条语音口令模型相匹配,根据概率评分确定输出识别结果。语音口令识别系统的程序流程图如图1所示。


a.JPG



    当语音口令识别系统采集到命令语音信号后,要提取参数,做出比较判断,调用相应语音口令识别算法。对每条语音口令信号,先切除静音,进行预加重处理,然后通过Hamming窗分帧,帧长和帧移分别为20ms和10ms,对每一帧语音信号提取16阶MFCC和△MFCC一共32维参数作为特征矢量。


    语音口令识别软件系统由许多不同的语音信号预处理、识别算法和其它子程序组成,为了实现参数的传递,每个程序执行后的参数以文件的形式输出,而这些程序的调用先后顺序和参数的输入输出文件的位置等都由一个主程序管理。


    在Windows CE中,编写可执行程序,需要调用应用程序编程接口API(Application Programming Interface)函数,并且要设定程序入口点。调用过程为:
#include<windows.h>
int WINAPI_tmain(int argc,TCHAR* argv[])
{
……
}

论坛已做迁移,有相关技术资料和问题讨论可以到电路城对应版块(“模拟/电源”)
X