语音识别及语音编解码技术经过几十年的发展,已经日趋成熟,步入实用化阶段。语音识别技术已开始应用于电话查询服务、智能玩具、PDA、家用电器、通信、工业控制、语言学习等应用领域;其于码激励线性预测(CELP)技术的语音编解码算法也因其音质好,压缩比大而在通信和数字录音设备中获得了广泛应用。 语音输入方式与手写输入方式相比,具有操作简便、查找方便、识别准确率高等优点。省去了大量的输入时间,降低了信息检索的复杂度。本文所介绍的声控电子记事本系统将语音识别和语音编解码在同一片DSP芯片上实现,用语音方式代替其它方式进行信息输入,提高了系统的灵活性。
1 系统功能
可存200张语音名片,每张语音名片包含四条信息:姓名、电话号码、工作单位、备注;声控查找语音名片信息,用户只需口述所要查找人的姓名,即可获得电话号码、工作单位、备注等信息,同时电话号码显示在液晶显示屏上。
具有双音多频(DTMF)拨号功能,用户用声控查找到电话号码并显示在液晶屏上之后,只需轻触一个拨号键,即可通过普通电话机的话筒实现快速自动拨号。
数字录音,每段录音加语音标识;声控放音,在放音时只需口述所要语音段的语音标识即可自动找到该段录音并加放,累计录音时间达两个半小时以上。
具有方便的编辑功能,增加、删除语音名片,增加、删除数字录音段。
2 系统构成
本文所介绍的声控电子记事本系统,是在定点16位DSP芯片上实现的,它包含特定人孤立词语音识别算法和代数码本激励线性预测(ACELP)语音编解码算法数(MFCC)为语音特征、以动态时间规划(DTW)为模板匹配算法,对于普通词条,识别率达到了99%以上。用于“录音”功能的ACELP算法是该码率下性能优异的编解码算法,虽然算法复杂度较高,但共重建语音质量的平均主观评测分数(MOS分)达到了4.0,非常接近于压缩前的分数4.3。
如图1所示,系统由MCU实现总线控制,接受外部键盘输入,并在液晶屏上显示信息。在本系统中,语音充当大部分人机界面的角色,尽量省去复杂的键盘操作,而且用语音提示或语音回放代替一部门液晶文字提示。由于语音要经过DSP处理,所以MCU需要与DSP经常交换信息,以便实现友好的操作界面。
2.1 DSP
DSP(ADSP2185)是整个硬件系统的信号处理中心,完成语音识别、训练、编解码,进行片内RAM及外部FLASH存储芯片的数据管理与调度,并向主控芯片MCU提供简洁的命令与反馈信息。ADSP2185是Analog Devices公司的产品,其主要性能如下:
运算速度为50MIPS,且均为高效的单周期指令。
提供了80Kbyte的片内RAM,其中32Kbyte为数据RAM,48Kbyte为程序RAM。
最大可支持4Mbyte的外部存储区,用于存储数据或程序。
提供对字节存储区(BM)与片内RAM区之间的DMA方式支持。
提供两上可编程、全双工、自动进行收发缓冲区操作的串行口。
2.2 MCU
MCU(KS57C2316)是SAMSUNG公司生产的性价比较高的一种CMOS四位单片机,可以一次性编程,适于小批量生产,被广泛地应用于家用电器的控制,它具有强大的I/O功能。其主要性能如下:
ROM为16K;8 bit;
RAM为512;4 bit
40个I/O引脚
多至16位数字LCD显示 ——32个段,4个公共端引脚 这些性能保证了系统主控能力,而且能够提供灵活的外部接口,适于做进一步的改进和改造。计算器等附加功能可以直接由MCU完成。
2.3 数据FLASH存储器
数据FLASH存储器KM29U64000是SAMSUNG公司的产品,它可在3伏电压下低功耗工作,存贮量大、价位低、速度快、存储数据掉电后可保持而不会丢失。其主要性能指标如下:
存储单元阵列为(8M+256K;8bit;
数据寄存器(512+16;8bit ;
页写入为(512+16)Byte;
块擦除为(8K+256)Byte ;
命令/地址/数据复用I/O端口;
可靠的CMOS Floating-Gate技术,耐受一百万次写入/擦除,数据维持时间为10年,命令寄存器操作
2.4 其它器件
本系统还采用了Analog Devices公司的Codec(A/D、D/A变换器)AD73311L,SST的FLASH存储器SST29LE010(128K%26;#215;8bit)存储DSP程序及运算数据。
3 系统内主要芯片的互连互控
3.1 MCU与DSP
MCU与DSP采用串行口相连,传送MCU对DSP的命令字与DSP对于MCU的反馈字。DSP串口1用于语音输入和输出,串口2用于与MCU相连。由于DSP的串口收发方式与MCU的串口不一致,所以MCU用I/O口模拟串口与DSP相连。为了保证数据传送的稳定性,MCU采用中断方式接收。每次数据传送一般不止一个字节,所以采用打包方式传送。
3.2 DSP与数据FLASH存储器
DSP与数据存储器的接口如图2所示。DSP的数据总线中的8位连到FLASH存储器的总线上;用DSP的读写控制线WR和RD控制FLASH芯片的读写;用DSP的I/O口FL0控制FLASH存贮器的CE(片选)端,以保证DSP在进行其它总线操作时不会对该FLASH芯片产生误操作;用DSP的另一个I/O口PF3连到FLASH芯片的“忙/闲”信号线上,监视其工作状态;分别把两个地址线A8和A9连到FLASH芯片的两个锁存控制CLE和ALE上,以便控制总线的状态。
3.3 DSP与程序FLASH存储器
ADSP2185的Byte存储区是一个8位宽的外部双向存储空间,可用于存储程序与数据。整个Byte存储区的4Mbyte的存储空间由256个16K%26;#215;8的页面组成。Byte存储区只能通过BDMA方式进行访问。在使用BDMA方式工作时用A0~A13作为低端地址,用D16~D18作为扩展的高端地址,联合使用实现4Mbyte的外部寻址能力。D8~D15作为数据总线,BMS、RD、WR分别用于控制存储器的片选以及读写操作信号。DSP与程序FLASH存储器的接口如图3所示。 值得提出的是,ADSP2185的开发系统提供了“重载”功能的支持。其基本思路是,当片内RAM(程序RAM或数据RAM)不够用时,可以由主程序将所需子程序动态调入。子程序在程序FLASH存贮器中,在需要运行时才将其调入DSP的RAM区。这样就相当于用软件调入方法扩大了DSP的RAM区。这一性能为本系统的设计提供了方便,这是因为语音识别和编解码程序都较长,不可能同时装入DSP的RAM区。因此,系统软件设计中必须利用这一点进行程序动态输入。
4 系统软件设计
本系统采用动态程序调入的办法扩充可利用硬件资源,在一个芯片上实现了几个复杂算法的协同工作;在程序结构上,采用了C语言和汇编语言混合编程,充分利用了DSP的运算速度,并兼顾了程序的灵活性;软件系统采用清晰的层次结构和明确的模块划分,便于局部修改和升级;系统还根据不同功能所规定的各种参数的组合和从属关系精心设计了存储器的数据存储结构,并将数据存储、删除、查找等程序模块做了合理的封装,供上层程序调用。
4.1 系统软件模块的构成
系统的软件设计包含MCU软件设计和DSP软件设计两部分。MCU软件主要是时钟日历、电源监测控制、科学计算、键盘扫描、LCD显示驱动、与DSP通信等程序,如图4所示。 DSP的软件,主要包含五大功能模块:系统基本IO、FALSH管理、语音、G.723.1编码、G.723译码,如图5所示。分为6层,上面3层是C语言编写,用以增强程序的灵活性;下面3层用汇编语言编写,主要是算法、系统设置和外围器件控制。
5 应用前景
我们研制成功的声控电子记事本系统,是未来SPDA(Speech Personal Digital Assistant:语音个人数字助理)的雏型。它集成了语音识别、语音压缩编解码、语音信号处理器DSP和大容量FLASH存储器的数据管理等技术,该系统所运用的技术可应用于语音拨号电话机、语音拨号+语音录音电话机、电话机伴侣(语音拨号、报号、答录)、PDA、随声听、语音玩具、声纹锁、语音门户等。