《听话小精灵智能玩具的开发》由会员分享,可在线阅读,更多相关《听话小精灵智能玩具的开发(9页珍藏版)》请在金锄头文库上搜索。
1、听话小精灵智能玩具的开发计算机科学与技术专业 学生:张瑜 指导教师:陈坚祯摘 要:设计基于凌阳 16 位 SPCE061A 单片机,采用语音识别技术,设计完成了一款能够执行语音指令,并能够与人进行简单语音对话的交互式智能语音处理系统听话小精灵智能玩具。系统的设计主要包括硬件和软件两个方面,系统硬件部分基于凌阳SPCE061A 精简开发板;而软件方面主要包括语音资源库的建立和系统的程序设计包括语音辨识和中断技术。系统在事先通过训练之后能够实现唱歌、背诵唐诗、简单特定对话等交互功能,富含趣味性。SPCE061A 单片机还可按要求实现内部资源的更新具有较大的灵活性和软硬件可扩展性。关键词:语音识别;
2、单片机;SPCE061A1 引言随着全球经济和科技的迅猛发展,玩具市场的玩具也越来越智能化、人性化。而且语音识别技术日趋成熟,使用语音识别技术便可以实现人与玩具的互动。机器通过识别和理解把语音信号转变为相应的命令的技术为语音识别技术,通过语音命令人们能够对其进行操作。语音识别技术和处理软硬件技术的快速发展, 使得智能玩具的开发技术更加成熟。凌阳公司提供的 SPCE061A 单片机具有十六位单片机的所有特征,又有语音处理技术方面的独特优势,所以设计以凌阳 SPCE061A 精简开发板为控制核心实现了智能玩具听话小精灵的设计。2 设计技术基础2.1 硬件平台SPCE061A 精简开发板,是以凌阳
3、16 位 SPCE061A 单片机为核心的精简开发仿真实验板,其体积小、集成度高、性价比极高、资源丰富、可靠性好且易于扩展。它将各功能部件模块化地集成在一个芯片里,内部采用总线结构,减少了各功能部件之间的连线。其处理速度较高,能够快速地处理复杂的数字信号,且中断处理能力较强。SPCE061A 含 2K 字的SRAM 和 32K 字闪存容量。闪存在CPU 正常运行状态下均可通过程序擦除或写入,可用来存储程序与数据。 SPCE061A 单片机为音频输出提供两个DAC 通道:DAC1 和 DAC2,分别经由DAC1 和 DAC2 引脚输出。61 单片机的A/D 转换器有8 个通道,其中有1 个是MI
4、C-IN 输入,它专门用于语音信号采样。 还含2 路10 位精度的D/A 只需要外接功放LM386 电路,即可完成语音的播放。硬件框图如图2-1 所示:图 2-1 SPCE061A 结构图2.2 软件开发环境nSP IDE 是凌阳公司提供的一种支持 16 位系列单片机的集成开发环境。它既支持 C语言、汇编语言又支持 C 语言和汇编混合编程,而且还提供了语音录放、识别的库函数。nSP IDE 集项目管理、程序编辑、编译、链接、调试和仿真等功能为一体。此外,它所提供的软件仿真功能,可以在不连接仿真板的情况下模拟硬件的各项功能来调试程序,它大大降低了开发难度。开发界面如图 2-2 所示:图 2-2
5、nSP IDE 开发界面2.3 听话小精灵音频资源系统2.3.1 语音录制及语音压缩分类玩具的开发,首先是语音资源的建立,第一步便是语音文件的录制,用 Windows xp自带的录音机进行语音的录制,录制时 wav 文件的属性必须为“8K 16 位 单声道” 。凌阳音频压缩算法根据不同的压缩比分为以下几种,如表 2-1 所示:表 2-1 语音压缩算法分类音频压缩算法压缩比资料采样率语音质量SACM-A20008:1,8:1.25,8:1.516KHz好SACM-S48080:3,80:4.516KHz中SACM-S24080:1.516KHz差2.3.2 语音压缩工具录制的语音资源内存较大,而
6、 61 板内存小。所以必须对语音进行压缩。凌阳公司专门提供了一款语音压缩工具 Compress Tool(如图 2-3 所示) ,这是一款界面简单、操作方便、实用的语音压缩软件,其压缩比较大,压缩格式多样,而且语音压缩后的效果比较好。图 2-3 语音压缩工具 Compress Tool2.4 语音识别原理小精灵的语音识别由特定人语音识别 SD(speaker dependent)技术实现,分为训练和识别两个阶段,借助于凌阳提供的 API 语音函数来实现。语音的识别取材于凌阳语音库 bsrv222SDL.lib 及相关头文件,如 bsrSD.h 等。语音辨识原理参看图 2-4: 图 2-4 语音
7、辨识原理框图2.5 语音处理函数库凌阳公司提供了一系列的音频函数库,函数库是由一组或多组函数集组成的文件。函数库是二进制文件,程序代码是不可见的。在使用函数库时,只有被使用的函数集才会真正与工程连接,而函数库中的其他函数集不会占用硬件资源。函数库组织结构如图 2-5 所示:图 2-5 函数库组织结构图设计所用的 Sacmv26e.lib 函数库包括语音录制、播放函数集;语音识别函数库bsrv222SDL.lib 则包括包含特定人语音训练、识别,语音特征模型的导入、导出函数函数集。3 听话小精灵系统硬件设计及实现3.1 SPCE061A 小精灵硬件系统SPCE061A 最小系统中,包括 SPCE
8、061A 芯片外围的基本模块,有:晶振输入模块、锁相环外围电路、复位电路、指示灯等,有关 SPCE061A 单片机的最小系统的各个模块都做在 61 板当中。最小系统如图 3-1 所示:图 3-1 SPCE061A 最小系统图特征提取语音输入语音特征模型特征提取语音输入识别结果匹配检验训练阶段识别阶段Information (版本信息)Section (段信息)Public (公共变量、常量 及函数)External (引用的外部变 量、常量及函数)函数集1函数集2 函数库3.2 听话小精灵系统硬件外围设备(1)电源模块SPCE061A 的内核供电为 3.3V,而 I/O 端口可接 3.3V 也
9、可以接 5V,所以在电源模块中有一个端口电平可选择。图 3-2 电源电路原理图(2)键盘输入模块键盘输入电路如图 3-3 所示,当有键按下时对应的 IO 口被拉到低电平,SPCE061A 处理后做相应操作。图 3-3 键盘输入电路图(3)音频输出模块SPCE061A 内置 2 路10 位精度的 D/A 转换器,只需要外接功放电路即可完成语音的播放。音频输出电路图如图 3-4 所示:图 3-4 音频输出电路图(4)麦克模块麦克采来的语音信号经AGC(自动增益控制放大)后进入MIC-IN 通道进行 A/D 转换。麦克输入电路原理图如图 3-5 所示:图 3-5 麦克输入电路原理图4 听话小精灵系统
10、软件设计及实现4.1 播放语音的设计及录制播放语音的建立包括语音的录制、处理以及压缩。语音资源的录制和处理,力求语音简短、清晰。语音压缩时选用 SACM_S480 的格式进行压缩。压缩后生成 xx*.48 k 文件将会通过 nSP IDE 以资源文件的形式导入闪存。4.2 软件项目的建立4.2.1 新建项目的步骤单击 File 下拉菜单 New 弹出对话框(如图4-1 所示) 。选 Project 标签并在 File 的文本框中键入项目名称。在 Location 下的文本框中输入存 取路径或利用该文本框右端的浏览按钮设定项目的存储位置。最后点击 OK 按钮,完成项目建立。 图 4-1 新建项目
11、界面图4.2.2 在项目中新建文件在项目下,点击菜单 File 下拉菜单 New 弹出对话框如图 4-2 所示,点击 SP IDE C File,在 File 下的文本框内键入文件名称,单击 OK;点击 SP IDE ASM File、SP IDE H File 同样方法建立汇编文件和头文件。图 4-2 新建文件界面图4.2.3 在项目中添加资源文件添加资源文件:单击 Project 菜单 Add to Project 选项中的 Files 或 Resources 子项,激活Add Files 对话框,如图 4-3 所示。其中 Files 是用来添加函数或函数库文件,如:bsrSD.asm、b
12、srv222SDL.lib 等;而 Resources是用来添加语音资源文件,如:1.48k。图 4-3 文件的添加4.3 训练模块的设计4.3.1 初始化 RAM语音命令的特征模型被保存在 SPCE061A 的内部RAM 中,如果所需的 RAM 存储空间被旧的特征模型数据占满,那么新建的特征模型将无法保存,此时利用int BSR_DeleteSD-Group(0)函数删除 RAM 空间中所有的特征模型,释放 RAM 空间。开始训练第一条 命令训练成功Y训练第二条 命令训练成功语音提示开 始识别识别出语音命令获得识别结果播放相应的语 音提示NYNYN图 4-4 训练部分流程图4.3.2 调用训
13、练模块训练过程即提取语音样本的特征参数过程,通过调用 int BSR_Train (int Command ID, int TraindMode)函数来进行训练,训练部分流程图如下图 4-4 所示: 4.4 语音播放语音播放模块主要用来完成语音播放,用语音播放电路,通过软件编程来实现此部分功能。采用凌阳压缩算法中 SACM_S480 的自动播放,自动播放流程见图 4-5:图 4-5 SACM_S480 自动方式主程序流程图4.5 语音识别模块语音识别模块主要用来完成语音辨识,采用语音识别电路,通过软件编程来实现此部分功能。语音识别的流程和函数调用如图4-6: 图4-6语音识别函数调用图4.6
14、中断服务模块中断采用汇编语言进行编写,ASM:_BSR_InitRecognizer 在中断FIQ_TimerA 时调用,并通过中断将语音信号送 DAC 通道播放。当主程序调用此函数时,辨识器便打开 FIQ_TimerA 中断,并开始将采样的语音数据填入辨识器的数据队列中。语音识别中断流程图如图 4-7所示:图 4-7 语音识别中断流程图5 听话小精灵系统运行训练与测试5.1 程序的下载程序编写好之后,通过编译(Build)运行确定没有错误之后就可以下载到 61 板上面进行调试了,通过 EZ-PROBE 线来进行程序的烧写和在线调试。点击菜单 Project Selete Body,或者点击图
15、标按钮,打开对话框如图 5-1 所示:图 5-1 Selete Body 对话框将设置 Selete Body 属性为如图 5-1 所示。点击下载按钮(Download)或者按 F8 进行下载,下载时 nSP IDE 界面如图 5-2 所示:图 5-2 程序下载时 nSP IDE 界面5.2 程序的在线调试及运行下载完成之后,IDE 便进入了调试状态,采用断点调试的方法进行调试,通过 View菜单中的下拉菜单列表可以选择打开所要调试的窗口,调试窗口主要用来显示有关的调试信息。通过调试运行就能知道程序是否正确,是否符合设计要求。通过 EZ-Probe 下载线可以在线运行,选择运行(快捷键全速运行
16、 F5,单步运行 F10) ,程序在线运行调试时对 61 板进行训练、识别,当运行成功就表明设计成功。结 束 语SPCE061A 是一款集成度很高的语音识别系统级芯片。本设计基于此芯片实现了非特定人声语音识别的系统的设计,设计完成的听话小精灵实现了唱儿歌、背唐诗、完成简单对话和英语学习等功能达到了预期的目的。SPCE061A 芯片所采用的面向特定说话人,小词汇量的语音识别系统具有较高的识别率与专用的语音处理芯片相比结构简单、成本低。唯一的缺点就是指令功能和语音资源的更新受到硬件限制,需按要求手动完成。设计编程采用 C 和汇编语言混合编程来实现,集两种语言之优点于一体,它们的完美结合极大限度地简化了编程过程,给开发者带来了莫大的方便。【参考文献】1 罗亚非等编著 凌阳 16 位单片机应用基础M. 北京:北京航空航天大学出版社,2003 2 凌阳大学计划网站()3(美)里 科 著