0 导言
传统的人机交互依托杂乱的键盘或按钮来完结,跟着科技的开展,一些新式的人机交互方法也随之诞生,带给人们全新的体会。依据语音辨认的人机交互方法是现在抢手的技能之一。可是语音辨认功用算法杂乱、核算量大,一般在核算机上完结,即使是嵌入式方面,大都计划也需求运算能力强的ARM或DSP,并且外扩RAM、FLASH等资源,增加了硬件本钱,这些特色无疑约束了语音辨认技能的运用,尤其是嵌入式范畴。
本体系选用的主控MCU为Atmel公司的ATMEGA128,语音辨认功用则选用ICRoute公司的单芯片LD3320。LD3320内部集成优化过的语音辨认算法,无需外部FLASH,RAM资源,能够很好地完结非特定人的语音辨认使命。
1 全体计划规划
1.1 语音辨认原理
在核算机体系中,语音信号自身的不确定性、动态性和接连性是语音辨认的难点。干流的语音辨认技能是依据计算模式辨认的基本理论,原理如图1所示。
语音辨认一般需求两个阶段完结。第一阶段是练习,主要是提取语音特征,用户往往需求进行几回语音练习,经过预处理和特征提取后取得相应特征参数。第二阶段是辨认,辨认进程便是将输入的语音特征参数和模型库中的参数进行类似性比较,最终输出匹配度最高的特征参数完结辨认进程。
2 硬件电路规划
硬件结构如图2所示,电路主要由主操控器电路和语音辨认电路组成。ATMEGA128操控LD3320语音辨认电路,输出成果由ATMEGA128处理,然后经过总线来操控不同的设备。
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驱动程序移植到各种嵌入式体系中。跟着人们对人工智能功用的需求,语音辨认技能将越来越遭到人们的重视,信任不久的将来,语音辨认将会具有更宽广的运用。