0 引言
语音不仅是人与人之间进行信息交流最直接、最方便和最有效的工具,也是人与机器之间进行通信的重要工具。过去的二三十年中,图形用户界面(Graphical User Interface,GUI)作为人与机器的通信接口取得了很大的进展,但使用GUI仍然摆脱不了手的操作,某些场合仍有不便。因此,语音用户界面(Voice User Interface,VUI)成为人们的下一个目标,人们希望通过声音可以对机器发出指令。
语音识别有着非常广泛的应用领域,例如智能家电、智能家居、智能导航、智能玩具等等,这些领域下,语音识别提高了设备的易用性。另外,在某些场合,操作者需要用手控制其它设备,比如驾驶员驾驶过程中,或者非常强调响应时间,比如军事训练种情况的紧急处置,这些场合不允许操作者进行复杂的操作,语音控制就成为一项必要的选择。
语音识别属于数字信号处理的研究领域,其算法初期是依靠计算机、数字信号处理器等来实现的,但随着微电子学和集成电路技术的新进展,近年来不断有语音识别集成电路投放市场。其中,ICRoute的LD3320就是一款性价比较高的芯片。
1 LD3320芯片介绍
LD3320是一颗基于非特定人语音识别(SI-ASR,Speaker Independent Automatic Speech Recognition)技术的语音识别/声控芯片。该芯片集成了语音识别处理器和一些外部电路,包括ADC、DAC、麦克风接口、声音输出接口等。该芯片不需要外接任何的辅助芯片如Flash、RAM等,直接集成在现有的产品中,即可以实现语音识别/声控/人机对话功能。
LD3320完成非特定人语音识别,每次识别最多可以设置50项候选识别句,每个识别句可以是单字、词组或短句,长度为不超过10个汉字或者79个字节的拼音串。另一方面,识别句内容可以动态编辑修改,因此可由一个系统支持多种场景。
芯片采用48脚QFN塑料封装,工作供电为3.3V。芯片内部电路的简要逻辑图如图1所示。其核心是语音以别运算器,配合输入、输出、AD/DA转换等模块,完成语音识别的功能。LD3320还支持并行和串行接口,串行方式可以简化与其他模块的连接。
2 LD3320的应用电路设计
LD3320的基本应用电路由一个微控制器(MCU)和LD3320组成。电路中的主控MCU芯片,是为了完成对LD3320芯片寄存器的操作。
对LD3320芯片的各种操作,都必须通过寄存器的操作来完成。比如设置标志位:读取状态;向FIFO写入数据;识别完成后获得识别结果等。例如在编辑关键词语时,主控MCU通过把关键词语的拼音串设置进LD3320相关寄存器来完成编辑。
其寄存器大体可以分为以下几类,FIFO数据缓存器、语音识别控制寄存器、音量调节、模拟电路和其它的辅助寄存器。寄存器读写操作有2种方式,即标准并行方式和串行SPI方式。LD3320寄存器的地址空间为8位,编号从00H到FFH,可参考文献。
本文选用的主控MCU是51内核的单片机STC10L08XE。演示的软件程序全部烧录在MCU的内置Flash中。主控MCU直接控制LD33203完成所有和语音识别相关的工作。
电源设计可以使用NS公司的LM1117-3.3芯片,为LD3320提供3.3V的电压:音频输入和输出,可以使用柱极体MIC和0.5W的小喇叭;语音识别完成后,为了实现对后续电路的驱动,可以利用MCU的串行口与其它模块进行连接。
主控MCU与LD3320的连接关系如图2所示,MCU的P0端口的8根线和LD3320并行方式连接,控制线也分别连接。此外还连接了复位信号和中断信号。对LD3320来说,复位信号(RSTB)由MCU发出,而中断信号由LD3320发出,MCU负责接收。
另外,还有一些辅助电路,比如麦克风的偏置、喇叭音量的控制,以及电源的去耦等,这里不作详细介绍。
3 LD3320的软件编程
3.1 编程模式
主控MCU通过读/写LD3320的寄存器完成操作。用户有两种编程模式:“中断模式”和“轮询模式”。
所谓中断模式,就是系统的主控MCU在接收到外界一个触发后(比如用户按动某个按键),启动LD3320芯片的一个定时识别过程(比如5s),要求用户在这个定时过程中说出要识别的语音关键词语。过了这个过程后,需要用户再次触发才能再次启动一个识别过程。
所谓轮询模式,就是系统的主控MCU反复启动识别过程。如果没有人说话没有识别结果,则每次识别过程的定时到时后再启动一个识别过程;如果有识别结果,则根据识别作相应处理后(比如播放某个声音作为回答)再启动一个识别过程。
3.2 程序流程
语音识别的操作流程是:
(1)语音识别用初始化(包括通用初始化)。在此步骤中,对各寄存器进行初始化设置。
(2)写入识别列表。LD3320是一个基于词库的语音识别芯片,在此步骤中,应将待识别的短语写入识别列表。列表的规则是,每个识别条目对应一个特定的编号(1个字节),不同的识别条目的编号可以相同,而且不用连续,但是数值要小于256(00H~FFH)。
(3)开始识别,并准备好中断响应函数,打开中断允许位。
(4)响应中断。如果麦克风采集到声音,不管是否以别出正常结果,都会产生一个中断信号。而中断程序要根据寄存器的值分析结果。读取BA寄存器的值,可以知道有几个候选答案,而C5寄存器里的答案是得分最高、最可能正确的答案。
如果不用中断方式,也可以通过查询方式工作。在“开始识别”后,读取寄存器B2H的值,如果为21H就表示有识别结果产生。在此之后读取候选项等操作与中断方式相同。
LD3320芯片还具有MP3播放的功能,在这里不再进行介绍。
4 结论
LD3320的功能是完成有限词组的非特定人语音识别,我们将其应用在一个虚拟环境下战术训练课题中。战术训练中,常常需要下达一些短口令,而在我们所设计的训练环境中,如果口令采用键盘或鼠标的方式进行输入,显然有违设计的初衷。所以,我们使用LD3320设计VUI控制电路,用语音识别的方式,将获得的识别结果再转换成串口信号,输入计算机,达到语音控制的目的。
实践证明,这种方式可以满足语音控制的要求,但是语音识别的速度,即实时性还有待改进。