随着社会的发展,人与机器的交互存在于生活的方方面面,方便有效的交互环境日益成为系统开发的关键所在。采用语音的方式实现人与机器的交互,扩展和开发具有一定语音功能及人机交互功能的产品也逐渐为人们所认可。伴随着技术的进步,各式各样具有语音处理功能的芯片的出现也使得语音处理功能的广泛应用成为可能。本文正是基于这种趋势,选用SPCE061A单片机设计了一款具有语音功能的直流稳压数控电源,系统设计简单、操作灵活,具有良好的人机交互环境。
1 系统软硬件设计
1.1 硬件设计
系统的硬件设计如图1所示。主要包括三部分电路:键盘输入及数码显示部分、电压输出部分、单片机部分。其中键盘输入及数码显示部分主要完成读取键值及电压显示,这部分电路采用凌阳公司生产的LED模组。该模组采用了148按键输入及6位七段数码管显示,可以满足设计需要。
1.2 软件设计
软件设计采用模块式的设计思想。各模块包括基本功能模块(完成8个键值处理、99个步进置数、扫描置数,各位分别置数、动态显示、模数转换等) 、语音播报模块,语音识别模块。在凌阳unSP IDE 1.16.1开发环境中各模块分别用C语言编写,独立调试,最后在工程中整合,并进行了一定程度的优化。如图2所示。
2 语音功能的软硬件设计
2.1 语音功能的硬件设计
SPCE061A为音频输出提供了两路DAC通道,即DAC1和DAC2,本系统选用DACl作为电流输出,DAC2作为音频信号的输出,经功率放大后。由扬声器输出,实现语音的播报功能。同时SPCE061A有8路可复用的10位ADC通道,本系统采用一路通道(MIC_IN)作为音频输入,音频模拟信号经过单片机内部的自动增益控制器(AC-C)和放大器放大后进行A/D转换,实现语音控制信号的输入。
2.2 语音播报功能的软件设计
考虑到系统对于播放音质的要求并不高。采用凌阳SACM—S480音频压缩算法(压缩比为80:3)对语音信号进行压缩,这样语音资源可以直接加载在单片机内部的FLASH中,无需扩展外部存储器。采用较简单的自动播报方式,分时播报个位,小数点,十分位。需要注意的是:调用语音播报函数voice()返回主程序后,应立即恢复对于系统时钟及中断的原始设置,否则会导致按键异常和中断失效。语音播报的主要程序如下:
2.3 语音识别功能的软件设计
语音识别功能主要完成:在按键选择语音辨识后,通过提示音,输入语音控制命令,经单片机识别命令后控制系统产生相应的动作,从而实现语音控制的功能。
结合SPCE061A提供的特定人识别一次只能识别5个控制命令,而系统要求识别触发命令及0-9的数字,所以程序设计时把需要识别的命令分为三组:
第一组:开始、正确、错误
第二组:0-4
第三组:5.9
同时分配一部分FLASH存储区来存放这三组命令,程序流程图如图3所示。