基于DSP和机器人的声控系统设计与实现
扫描二维码
随时随地手机看文章
1 引言
机器人声控系统的研究一直是机器人研究的主要内容之一。传统的声音控制系统一般采用PC 机作为核心平台对机器人进行控制,虽然其具有处理能力强大、语音库完备、系统更新能力强等优点,但是PC 机体积大,功耗大,成本高,不适合于中、小型机器人使用。本文以SPCE061A 为核心,设计了一套机器人声控系统,和传统的PC 机声控系统相比较,具有成本低、体积小、耗能低和使用灵活方便等特点。
本系统采用的机器人平台是北京博创兴盛机器人技术有限公司提供的Voyager II 型地面移动机器人, 该机器人采用了模块化的设计理念,高负载能力的直流伺服控制,可选配声纳、红外、视觉、罗盘、GPS 等传感器和机械手等执行器。完全可以满足声控系统的设计要求。系统的整体设计分为硬件设计和软件设计两部分,下面首先介绍一下系统的硬件设计。
2 系统硬件结构
根据机器人平台情况, 声控系统的硬件结构主要由微处理器单元、供电单元、声音采集单元和串口输出单元四部分组成,如图1 所示:
2.1 微处理器单元
本系统采用凌阳公司的16 位单片机SPCE061A 作为核心控制芯片,内置32K 闪存,其较高的处理速度能使芯片非常快速的处理复杂的数字信号, 适用于语音识别等应用领域。
SPCF061A 的工作频率范围为0.32-49.152MHz.具备8 通道10位ADC 输入功能, 内置了具有自动增益控制的麦克风输入功能。双通道10 位DAC 音频输出功能及A、B 两个I/ 0 口输入输出功能。具有集成度高、性能可靠、价格低廉、功耗小等特点。这些特点充分体现了微控制器工业发展的新趋势。目前,凌阳单片机SPCE061A 的应用越来越广,深受广大用户的欢迎。
2.2 声音采集单元
声音采集单元的换能器采用驻极体话筒, 通过话筒将采集到的声音信号通过MIC_IN 通道传送给CPU,MIC_IN 通道专门用于对语音信号进行采样。语音信号经MIC 转换成电信号,由电容将其中的直流成分滤除, 然后输入到集成在SPCE061A 内部的前置放大器中。SPCE061A 的内部增益控制电路AGC 能随时跟踪、监视前置放大器输出的音频信号的电平,当输入信号过大时,自动减小放大器增益;当输入信号减小时,自动增大放大器增益。这样即可以使A/D 转换器接收到的信号一直保持在最佳电平,又可以使声音损失减至最少,从而提高语音识别的精度。
2.3 外接供电单元
外接供电单元是声控系统的选配单元, 由于声控系统的能耗很低,可以外接3 个1.5V 电池,作为外接供电单元给系统供电。在没有选配外接供电单元时,也可以直接使用Voyager II 型地面移动机器人的蓄电池为关济实: 讲师工学硕士声控系统供电,Voyager II 型机器人的蓄电池供电电压为24V, 将24V 电压先经过7805 转换成5V电压, 然后使用SPY0029 将5V 电压转换成3.3V 电压给SPCE061A 供电。
2.4 存储器单元
存储器单元也是声控系统的选配单元, 当需要识别的语音资源较少时,则使用单片机中集成的FLASH 存储器,就可以满足要求。当语音资源较丰富时,就需要连接外部存储器单元,对语音资源进行存储。为了保证系统的兼容性, 选用凌阳公司的SPR4096 作为外部存储器, LASHSPR4096 内部有512K&TImes;8bits F和4K&TImes;8bits SRAM 在进行FLASH 编程或擦除的时候,可以并发执行SRAM 的读写,SPR4096 内置了一个总线存储器接口和一个串行接口,它允许单片机通过8_bit 并行模式或者1_bit 串行模式访问FLASH SDRAM 的存储区。在本系统中,将SPR4096的SCK 和SDA 与SPCE061A 的IOB0 和IOB1 连接, 构成串行数据通信。
2.5 串口输出单元
由于SPCE061A 单片机的输入、输出电平是TTL 电平,而Voyager II 型机器人配置的是RS-232 标准串行接口,二者的电气规范不一致。因此,要完成SPCE061A 和机器人之间的串行通信,必须对SPCE061A 输出的TTL 电平进行电平转换,本系统中使用MAXIM 公司的MAX232 作为电平转换芯片。MAX232 使用单电源供电, 只需外接5 个0.1uF 的电容, 就可以实现SPCE061A 和Voyager II 型机器人之间的电平转换。
3 系统软件设计
软件设计中最重要的部分就是编写语音识别程序。语音识别过程本质上是一种多维模式识别过程。针对凌阳单片机编写语音识别程序,主要可以分为:训练、辨识、辨识结果输出三部分。
3.1 训练程序
当程序第一次运行时,需要进行语音识别训练。完成识别训练后,会在FLASH 存储器中设定标志位,下次重新启动时,可以跳过语音训练过程,直接进行语音识别程序。如果用户需要重新训练,也可以通过按键来擦除标志位,该部分程序框图如下: