如何利用AVR单片机设计出语音识别系统

0 引言
传统的人机交互依靠复杂的键盘或按钮来实现,随着科技的发展,一些新型的人机交互方式也随之诞生,带给人们全新的体验。基于语音识别的人机交互方式是目前热门的技术之一。但是语音识别功能算法复杂、计算量大,一般在计算机上实现,即使是嵌入式方面,多数方案也需要运算能力强的arm或dsp,并且外扩ram、flash等资源,增加了硬件成本,这些特点无疑限制了语音识别技术的应用,尤其是嵌入式领域。
本系统采用的主控mcu为atmel公司的atmega128,语音识别功能则采用icroute公司的单芯片ld3320。ld3320内部集成优化过的语音识别算法,无需外部flash,ram资源,可以很好地完成非特定人的语音识别任务。
1 整体方案设计
1.1 语音识别原理
在计算机系统中,语音信号本身的不确定性、动态性和连续性是语音识别的难点。主流的语音识别技术是基于统计模式识别的基本理论,原理如图1所示。
2.1 控制器电路
控制器选用atmel公司生产的atmega128芯片,采用先进的risc结构,内置128 kb flash,4 kb sram,4 kb e2prom等丰富资源。该芯片
是业界高性能、低功耗的8位微处理器,并在8位单片机市场有着广泛应用。
2.2 ld3320语音识别电路
ld3320芯片是一款“语音识别”专用芯片。该芯片集成了语音识别处理器和一些外部电路,包括a/d、d/a转换器、麦克风接口、声音输出接口等,而且可以播放mp3。不需要外接任何的辅助芯片如flash,ram等,直接集成到产品中即可以实现语音识别、声控、人机对话功能。
图3为ld3320电路原理图,与mcu通信采用spi总线方式,时钟不能超过1.5mhz。
麦克风工作电路如图4所示,音频输出只需将扬声器连接到spop和spon即可。使用spi总线方式时,ld3320的md要设为高电平,spis设为低电平。spi总线的引脚有sdi,sdo,sdck以及scs。intb为中断端口,当有识别结果或mp3数据不足时,会触发中断,通知mcu处理。rstb引脚是ld3320复位端,低电平有效。led1,led2作为上电指示灯。
3 软件系统设计
软件设计主要有两部分,分别为移植ld3320官方代码和编写语音识别应用程序。
3.1 移植ld3320源代码
ld3320源代码是基于51单片机实现的,spi部分采用的是软件模拟方式,但在播放mp3数据时会有停顿现象,原因是51单片机主频较低,导致spi速率很慢,不能及时更新mp3数据。移植到atmega128需要修改底层寄存器读写函数、中断函数等。底层驱动在reg_rw.c文件中,首先在reg_rw.h使用hard_para_port宏定义,以支持硬件spi。然后在reg_rw.c文件中找到hard_para_port对应条件宏的代码段,保留avr的spi接口代码。
3.2 应用程序实现
在代码中预先设定几个单词:“你好”,“播放音乐”,“打开”。当用户说“播放音乐”时,mcu控制ld3320播放一段音乐,如果是其他词语,则在串口中打印识别结果,然后再次转换到语音识别状态。
3.2.1 mp3播放代码
ld3320支持mp3数据播放,播放声音的操作顺序为:
通用初始化→mp3播放用初始化→调节播放音量→开始播放。
将mp3数据顺序放入数据寄存器,芯片播放完一定数量的数据时会发出中断请求,在中断函数中连续送入声音数据,直到声音数据结束。mp3播放函数实现代码如下:
由于mcu容量限制,选取测试的mp3文件不能太大。首先在计算机上将mp3文件的二进制数据转为标准c数组格式文件,然后将该文件加入工程中。源代码中mp3文件存储在外扩的spi flash中,工程中需要注释和移除全部相关代码。mp3数据读取函数是ld_reloadmp3data(),只需将读取的spi flash数据部分改成以数组数据读取的方式即可。
3.2.2 语音识别程序
ld3320语音识别芯片完成的操作顺序为:通用初始化→asr初始化→添加关键词→开启语音识别。在源代码中的runasr()函数已经实现了上面的过程,直接调用即可开启语音识别功能。
runasr()函数代码如下:
用户说完话后,ld3320通过打分的方式,将关键词列表中特征最相似的一个作为输出。然后ld3320会产生一个中断信号,此时mcu跳入中断函数读取c5寄存器的值,该值即为识别结果,得到结果后,用户可以根据数值来实现一些功能,比如读取到1,说明是“播放音乐”,那么可以调用前面的playsound()函数来播放音乐。
语音识别控制的关键点在于语音识别的准确率。表1给出了测试结果,当然也可以在识别列表中加入更多的关键词来做测试。通过测试结果可以看出,ld3320的识别率在95%上,能够满足用户需求。
4 结语
本文讨论了基于avr单片机的语音识别系统设计的可行性,并给出了设计方案。通过多次测试结果表明,本系统具有电路运行稳定,语音识别率高,成本低等优点。同时借助于ld3320的mp3播放功能,该系统具有一定的交互性和娱乐性。移植性方面,系统通过简单的修改,可以很方便地将ld3320驱动程序移植到各种嵌入式系统中。随着人们对人工智能功能的需求,语音识别技术将越来越受到人们的关注,相信不久的将来,语音识别将会拥有更广阔的应用。


人工智能已成为国家和政府间组织的重点发展领域
电动机断电再启动电路接线图
创动科技:国内首家通过CQC技术试验生产无人机的企业
电源变压器的主要参数
中威电子车道智能落地机柜,助力智慧高速建设
如何利用AVR单片机设计出语音识别系统
智能安防与联动系统的四大功能深度解析
喜推智能crm系统4大优势 引领中国CRM系统发展
磐石测控:DAGE4000多功能焊接强度测试仪的技术特点?
5G新通话的业务场景及功能
基于STC89S52的智能交通灯控制系统的设计与应用
卷积神经网络背后的直觉探索
剖析组网技术类型
如何看待小米定增30亿美元?
基于Sepic电路的工业照明设备节能电源设计
如何使用ADC的采样和保持电路来防止幅度偏差?
华米OV知产大咖/技术专家齐聚,共商专利池建设和运营
MES系统助力注塑企业降本增效~MES系统厂商~先达智控
松下携珠海中智公司合作共创智能影像制作的未来
开关量信号隔离器如何有效避免大多数信号干扰