语音识别控制灯.docx
《语音识别控制灯.docx》由会员分享,可在线阅读,更多相关《语音识别控制灯.docx(14页珍藏版)》请在冰豆网上搜索。
语音识别控制灯
信息与电气工程学院
电子信息工程CDIO二级项目
(2013/2014学年第二学期)
题目:
语音识别控制灯
专业班级:
电子信息
学生姓名:
学号:
指导教师:
马永强老师
设计周数:
15周
设计成绩:
2014年6月4日
1项目设计目的及任务
要求完成一个语音识别控制灯系统的设计,基于LD3320芯片的语音识别系统。
最基本的要求做到语音说出一些简单的命令,系统会识别并且做出相应地动作或运作,以此来控制灯的亮和灭。
要求设计出原理图,并且利用proteus软件进行了仿真试验。
2项目设计思路
2.1LD3320芯片
2.1.1LD3320芯片的功能
语音识别是对基于生理学和行为特征的说话者嗓音和语言学模式的运用。
它与语言识别不同在于这项技术不对说出的词语本身进行辨识。
而是通过分析语音的唯一特性,例如发音的频率,来识别出说话的人。
语音识别技术使得人们可以通过说话的嗓音来控制能否出入限制性的区域。
举例来说,通过电话拨入银行、数据库服务、购物或语音邮件,以及进入保密的装置。
语音识别与其他生物识别技术相比,不仅具有不会遗失和忘记、不需记忆、使用方便等特点,而且还具有用户接受程度高,声音输入设备造价低廉等优点。
由于涉及不到用户的隐私问题,所以可以方便的推广应用。
LD3320芯片是一款“语音识别”专用芯片。
该芯片集成了语音识别处理器和一些外部电路,包括AD、DA转换器、麦克风接口、声音输出接口等。
本芯片不需要外接任何的辅助芯片如Flash、RAM等,直接集成在现有的产品中即可以实现语音识别/声控/人机对话功能。
并且,识别的关键词语列表是可以任意动态编辑的。
该芯片不需要外接任何的辅助芯片,直接集成在现有的产品中,即可实现语音识别,声控,人机对话功能。
LD3320完成非特定人语音识别,每次识别最多可以设置50项候选识别语句,每个识别句可以是单字,词组或短句,长度为不超过10个汉字或者79个字节的拼音串。
另一方面,识别句内容可以动态编辑修改,因此可由一个系统支持多种场景。
芯片采用48脚QFN塑料封装,工作供电为3.3V。
核心是语音识别运算器,配合输入和输出,AD/DA转换等模块,完成语音识别的功能。
LD3320芯片还支持并行和串口接口,串行方式可以简化与其他模块的连接。
2.1.2寄存器介绍
寄存器大部分都是有读和写的功能,有的是接受数据的,有的是设置开关和状态的。
寄存器的地址空间为8位,可能的值为00H到FFH。
ASR:
自动语音识别技术(AutomaticSpeechRecognition)。
FIFO:
英文FirstInFirstOut的缩写,是一种先进先出的数据缓存器,它与普通存储器的区别是没有外部读写地址线,这样使用起来非常简单。
LD3320芯片内部有2个FIFO,分别是:
FIFO_EXTFIFO_DATAFIFO_DATA主数据处理FIFO缓存器,ASR或者MP3的主数据区
FIFO_EXT语音识别添加关键词用FIFO缓存器
MCU:
本文档中专指外部电路板的主控芯片,对LD3320芯片进行控制的微处理器。
DSP:
本文档中专指本芯片LD3320内部的专用DSP,实现语音识别和语音播放的算法。
2.1.3寄存器的操作
本芯片的各种操作,都必须通过寄存器的操作来完成。
比如设置标志位、读取状态、向FIFO写入数据等。
寄存器读写操作有2种方式,即标准并行方式和串行SPI方式。
(1)并行方式
第46脚(MD)接低电平时按照此方式工作,写和读的时序图如下:
图1并行方式写时序
图2并行方式读时序
由时序图可以看到,A0负责通知芯片是数据段还是地址段。
A0为高时是地址,而A0为低时是数据。
发送地址时CSB*和WRB*必须有效,写数据时同样CSB*和WRB*必须有效,而读数据时CSB*和RDB*必须有效。
(2)串行SPI方式
第46脚(MD)接高电平,且第42脚(SPIS*)接地时按照此方式工作。
写和读的时序如图3:
图3SPI方式写时序
写的时候要先给SDI发送一个“写”指令(04H),然后给SDI发送8位寄存器地址,再给SDI发送8位数据。
在这期间,SCS*必须保持在有效(低电平)。
图4SPI方式读时序
写的时候要先给SDI发送一个“读”指令(05H),然后给SDI发送8位寄存器地址,再从SDO接受8位数据。
在这期间,SCS*必须保持在有效(低电平)。
2.1.4驱动程序
(1)芯片复位
就是对芯片的第47腿(RSTB*)发送低电平。
可按照以下顺序:
voidLD_reset()
{
RSTB=1;
delay
(1);
RSTB=0;
delay
(1);
RSTB=1;
}
delay
(1)是延迟1毫秒的意思,为了更稳定地工作。
芯片初始化一般在程序的开始进行,如果有时芯片的反应不太正常,也可用这个方法恢复芯片的初始状态。
(2)语音识别
语音识别的操作顺序是:
通用初始化→语音识别用初始化→写入识别列表→开始识别,并准备好中断响应函数,打开中断允许位。
如果不用中断方式,也可以通过查询方式工作。
在“开始识别”后,读取寄存器B2H的值,如果为21H就表示有识别结果产生。
在此之后读取候选项等操作与中断方式相同。
(3)写入识别列表
列表的规则是,每个识别条目对应一个特定的编号(1个字节),不同的识别条目的编号可以相同,而且不用连续。
本芯片最多支持50个识别条目,每个识别条目是标准普通话的汉语拼音(小写),每2个字(汉语拼音)之间用一个空格间隔。
编号可以相同,可以不连续,但是数值要小于256(00H~FFH)。
编号字符串
1beijing
1shoudu
4shanghai
6tianjin
8chongqing
编号可以相同,可以不连续,但是数值要小于256(00H~FFH)。
例子中的“北京”和“首都”对应同一编号,说这两个词会有相同的结果返回。
流程图如下:
图5语音识别流程图
(4)开始识别
设置几个相关的寄存器,就可以控制LD3320芯片开始语音识别。
单片机程序中,一般会用一个全局变量记录和控制当前状态在编程时一定要把对该状态的设置语句放在LD3320芯片正式开始识别以前。
(5)响应中断
如果麦克风采集到声音,不管是否识别出正常结果,都会产生一个中断信号。
而中断程序要根据寄存器的值分析结果。
读取BA寄存器的值,可以知道有几个候选答案,而C5寄存器里的答案是得分最高、最可能正确的答案。
例如发音为“上海”并被成功识别(无其他候选),那么BA寄存器里的数值是1,而C5寄存器里的值是对应的编码3。
流程图如下:
图6中断响应流程图
2.1.5播放声音
播放声音的操作顺序是:
通用初始化→MP3播放用初始化→调节播放音量→开始播放声音,并准备好中断响应函数,打开中断允许位。
(1)通用初始化
和语音识别部分一样,按指定序列设置寄存器。
(2)声音播放用初始化
(3)调节播放音量
需要修改寄存器8E。
音量分为16级,用4位二进制表示,范围是0-15。
设置音量时,将(15-音量值)设给寄存器8E的第2-5位。
(4)开始播放声音
开始播放位置清零(自定义变量Mp3Pos=0);
寄存器1B的第3位设为1(按位或0x08);
循环执行:
while(【播放条件】=true)
{
顺序将MP3数据放入寄存器01(每次一个字节);
Mp3Pos增加1
}
【播放条件】为下面条件都成立,有一个不满足就跳出循环:
读取寄存器06,第3位=0;Mp3Pos修改BA、17等寄存器;
开放中断允许。
开始播放的流程图如下:
图7开始播放流程图
(5)中断响应。
开始播放可以把声音数据的最初部分送入芯片,等到芯片播放这一段后会发出中断请求。
而中断函数里会不断的送入数据,直到FIFO_DATA装满或声音数据结束。
由于LD3320芯片只有一只管脚负责中断请求输出,所以一般情况下用一个中断响应函数处理2种中断。
中断处理函数里,播放声音部分流程图如下:
图8播放声音流程图
3设计电路
3.1仿真电路
图1原理图
3.2电路工作原理分析
3.2.1程序流程
语音识别的操作流程:
(1)语音识别用初始化,在此步骤中,对各寄存器进行初始化设置;
(2)写入识别列表。
LD3320是一个基于词库的语音识别芯片,。
应将待识别的短语写入识别列表,每个识别条目对应一个特定的字节,不同的识别条目的字节可以相同,而且不用连续,但是数值要小于256;
(3)开始识别,并准备好中断响应函数,打开中断允许位;
(4)响应中断。
如果麦克风采集到声音,不管是否识别出正常结果,都会产生一个中断信号,而中断程序要根据寄存器的值分析结果。
读取BA寄存器的值,可以知道有几个候选答案,而C5寄存器里的答案是得分最高,最可能正确的答案。
如果不用中断方式,也可以通过查询方式工作。
开始识别后,读取寄存器B2H的值,如果21H就表示有识别结果产生。
在此之后读取候选项等操作与中断方式相同。
LD3320芯片还具有MP3播放的功能。
3.2.2原理说明
LD3320的基本应用电路由一个微控制器(MCU)和LD3320组成。
电路中的主控MCU芯片,是为了完成对LD3320芯片寄存器的操作。
对LD3320芯片的各种操作,都必须通过寄存器的操作来完成。
其寄存器可以分为,FIFO数据缓存器、语音识别控制寄存器、音量调节、模拟电路和其他的辅助寄存器。
寄存器读写操作有两种方式,即标准并行方式和串行SPI方式。
LD3320寄存器的地址空间为8位,编号从00H到FFH。
4项目设计心得
本学期学习LD3320的时间很短,芯片设计掌握的深度不够,但通过此次课程设计,却改变了很多,首先,对于硬件电路的工作原理有了进一步的学习,同样就有了进一步的认识;其次,软件方面,在程序的设计,程序的调试方面都学到了很多东西。
在大学课堂的学习只是纯理论的专业知识,而我们应该把所学的用到现实生活中去,此次的LD3320设计语音控制灯给我奠定了一个实践基础,我会在以后的学习、生活中磨练自己,使自己适应社会激烈的竞争。
在这次的单片机课程设计过程中,无论是在理论学习阶段,还是在设计的选题、资料查询和撰写的每一个环节,我都得到到了许多人的悉心的指导和帮助。
学习单片机要有一定的基础:
电子技术方面要有数字电路和模拟电路等方面的理论基础,特别是数字电路;编程语言要求汇编语言或C语言。
要想成为单片机高手,建议初学者首先学习汇编语言,学的差不多的时候,转入C语言学习。
尽管汇编语言属于低级语言,编程效率低,但是较C语言具有目标代码简短,占用内存少,执行速度快等优点,更重要的是能使初学者尽快熟悉单片机的内部结构,并能对其进行精确的控制。
汇编语言在单片机教材里面都会涉及,不需要单独购买教材和学习。
设计的时间花的算不算多,不是从XX里找就是从老师给的资料里一个一个拼凑起来。
这次的设计是基于一定的模版才设计出来的,好多不懂,都是从头学。
我要感谢授课的各位老师,正是由于你们的传道、授业、解惑,让我学到了专业知识,并从你们身上学到了如何求知治学、如何为人处事。
5参考文献
[1]姚天任.数字语音处理[M].武汉:
华中科技大学出版社,1992.4.
[2]柳春.语音识别技术研究进展[J].甘肃科技,2009
[2]LD3320开发手册[M].2010.1
项目设计
评语
项目设计
成绩
指导教师
(签字)
年月日