3.2 语音识别系统原理和算法
在SPCE061A内置的8通道10位模/数转换器(analog to digital converter,ADC)中专门设置了一个只用于语音输入的通道MIC_IN,针对较弱信号的转换还设计了一个音频放大器(automation gain control,AGC)。对其自动增益控制放大后再进行A/D转换。实际上,可以把模/数转换器看作是一个实现模/数信号转换的编码器。ADC转换的原理是依次把设定在逐次逼近寄存器SAR中的数字送至10位DAC0中进行D/A转换。DAC0的电压模拟量输出值与外部的电压模拟量输入值进行比较,以便尽快找出外部电压模拟量的数字量输出,其输出的模拟量VDAC0与采样后的输入电压值VIN相比较时可采用对半搜索法,即从SAR中最高有效位开始,根据比较的大小逐位确定其数码取“1”,其余位为“ 0”。语音识别算法的原理是:在训练过程中,从每个说话人发出的训练语句中提取相应的能充分描述各个说话人行为的特征矢量,这些特征矢量称为各说话人的模板。在测试阶段,从说话人发出的语音信号中按同样的处理方法提取测试模板,并与相应的参考模板相比较。由于说话人每次发音是变化的,测试模板和参考模板在时间尺度上不可能完全一致。为了使二者能在时间等效点上加以比较,采用了动态时间规整法(DTW)。基本原理是在参考样本特征矢量序列A=[a1,a2,…,aM]与待识语音特征矢量序列B=[b1,b2,…,bN]之间用一种非线性规整技术实现匹配。从目前来看,基于动态时间规整匹配的DTW算法可能是一个最为小巧的语音识别算法,系统开销小,识别速度快,在小词汇量的语音命令控制系统中是一个非常有效的算法。在训练阶段,用户将词汇表中的词依次说一遍,提取出每一帧采样数据的特征向量,并将特征向量作为模板存入模板库中。在识别阶段,提取待识语音的特征向量,然后将其依次与模板库中的每一个模板进行相似度比较,并将相似度最高者作为结果输出。
4 语音控制模块设计
4.1 语音控制模块设计
语音控制模块硬件部分的功能采用设计的超小迷你电路板来完成。该硬件具有结构简单,成本低,体积小,易于家用电器嵌套等特点。各I/O口的分配及功能是IOB4~IOB7为识别到特定语音后向外部发出信号的常用口;IOB0~IOB1为向外发送信号的预留口;IOB2~IOB3是外部触发SPCE061的外中断触发口,当资源紧张时也可做为输出端口,如图4所示。
4.2 主程序流程
至此,整套系统完成了。在使用时,第一次要进行特定人语音识别,识别成功后,自动存入FLASH,以后就无需再训练,上电后自动加载进RAM中,然后进行识别,当识别到特定语音时,IOB就发出相应信号。
5 通用型语音集成软件的设计
5.1 集成软件的总体设计和所使用的工具
该方案的集成开发环境采用Visual Studio(VS)2005的VB.NET来设计。Visual Basic.NET是微软公司推出的全新集成开发环境VS.NET的重要成员之一,简单、易学、易用,很多新特性也正适应了新一代软件开发的需要,只要稍有点语言基础就可以很快掌握,进而精通。可视化的用户界面设计功能,把程序设计人员从繁琐复杂的界面设计中解脱出来;可视化编程环境的“所见即所得”功能,使界面设计如同积木游戏一般。
采用Visual Studio(VS)2005来编写此集成开发环境,极大地减轻了开发强度,缩短了开发周期,也使它的代码强度和可移植性大大提高。
5.2 通用型语音集成软件使用简介
通用型语音集成软件包括了语音识别模块设计、语音播放模块设计、语音控制模块设计的所有代码自动生成,如图2所示。开始可加入提示音,单击打开文件选项,选择想要播放的语音,后面方框打勾表示有此项功能;下面是5条语音的播放和识别,每一条功能相同,现简介如下:第一条语音提示功能同上,触发端口指辨识到该条语音后所触发的端口号,有IOB0~IOB7,电平指向外发信号是低电平还是高电平,有高电平“1”和低电平“0”两种情况可供选择,以适应不同的情况。训练成功语音提示指第一次训练时每训练成功1条指令的提示;训练失败语音提示指第一次训练时失败的提示;训练完成语音提示指第一次训练成功时的语音指令提示。
6 结语
该通用型语音控制系统结构简单,成本低,可扩充性强,开发周期短,可广泛应用于家用电器和其他各种电子产品中。如果该方案能成功应用,定会产生较好的经济效益和社会效益。