基于ATMEGAl28单片机的语音识别系统设计

发布者:Coboro最新更新时间:2013-02-27 来源: 21IC 关键字:ATMEGAl28  单片机  语音识别系统 手机看文章 扫描二维码
随时随地手机看文章

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。

 

[page]

麦克风工作电路如图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()函数代码如下:

 

[page]

用户说完话后,LD3320通过打分的方式,将关键词列表中特征最相似的一个作为输出。然后LD3320会产生一个中断信号,此时MCU跳入中断函数读取C5寄存器的值,该值即为识别结果,得到结果后,用户可以根据数值来实现一些功能,比如读取到1,说明是“播放音乐”,那么可以调用前面的PlaySound()函数来播放音乐。

 

 

语音识别控制的关键点在于语音识别的准确率。表1给出了测试结果,当然也可以在识别列表中加入更多的关键词来做测试。通过测试结果可以看出,LD3320的识别率在95%上,能够满足用户需求。

4 结语

本文讨论了基于AVR单片机的语音识别系统设计的可行性,并给出了设计方案。通过多次测试结果表明,本系统具有电路运行稳定,语音识别率高,成本低等优点。同时借助于LD3320的MP3播放功能,该系统具有一定的交互性和娱乐性。移植性方面,系统通过简单的修改,可以很方便地将LD3320驱动程序移植到各种嵌入式系统中。随着人们对人工智能功能的需求,语音识别技术将越来越受到人们的关注,相信不久的将来,语音识别将会拥有更广阔的应用。

关键字:ATMEGAl28  单片机  语音识别系统 引用地址:基于ATMEGAl28单片机的语音识别系统设计

上一篇:基于单片机的医学信号检测仪的设计应用
下一篇:基于ATMEGA16的无弧交流接触器智能控制系统设计

推荐阅读最新更新时间:2024-03-16 13:19

ST微控制器驱动Anki Drive人工智能模型赛车
横跨多重电子应用领域、全球领先的半导体供应商意法半导体宣布,机器人和人工智能(AI,Artificial Intelligence)领域的创新公司Anki采用STM32微控制器研制该公司的首款模型赛车模型Anki Drive™,消费者可在兼容的iOS设备上下载一个应用程序,然后使用该设备操作智能机器人模型赛车进行比赛。 在赛道上,每辆Anki Drive赛车实时分析赛道数据,速率高达每秒500次。STM32的性能和处理能力给Anki Drive赛车带来优异的实时响应性能,该产品装备光传感器、无线芯片、电机和20,000 多行代码。ARM® Cortex™ M 32位STM32微控制器还为Anki Drive用户提供优异的能效,很
[单片机]
单片机C程序中的指针与指针变量
一个变量具有一个变量名,对它赋值后就有一个变量值,变量名和变量值是两个不同的概念。变量名对应于内存单元的地址,表示变量在内存中的位置,而变量值则是放在内存单元中的数据,也就是内存单元的内容。变量名对应于地址,变量值对应于内容,应以区别。 例如定义一个整形变量int x,编译器就会分配两个存储单元给x。如果给变量赋值,令x=30,这个值就会放入对应的存储单元中。虽然这个地址是由编译器分配的,但我们是无法事先确定的,但可以用取地址运算符&取出变量x的地址,例如取x变量的地址用&x。 &x就是变量x的指针,指针是由编译器分配,而不是由程序指定的,但指针值可以用&x取出。 如果把指针(地址值)也作为一个变量,并定义一个指针变量xp
[单片机]
单片机与串行时钟DS1307的接口设计
在简单介绍串行时钟芯片ds1307的基础上,介绍了时钟电路的rs485接口设计8本文所设计的时钟电路具有体积小、抗干扰性能强、通用性好、调时方便等特点。 0 引言 由单片机构成的测控系统或智能显示屏中,经常需要实时日历时钟,为节省CPU资源,增强实时时钟电路的通用性,本文介绍DS1307的应用及其接口设计,该时钟系统用RS485接口,采用SN75176差分平衡驱动接收,具有抗干扰能力强,可与PC机进行远距离的通信也可以与其他控制电路相连;时钟调时可方便地用PC机或电路中设置的按键进行时间设定和修改。 1、串行时钟DS1307简介 DS1307是I2C总线接口的日历时钟芯片,片内有8个特殊寄存器和56B的SRAM,是一种低功耗、BC
[模拟电子]
感应式循迹小车的设计与实现
传统的循迹小车采用光电传感器作路面轨道检测,其工作可靠性受环境光线的影响很大,实际运行中经常要根据环境光线的变化时传感器的灵敏度进行调整。提出一种感应式循迹小车的设计方法。用金属铝箔胶带代替黑色轨道线,在小车上设置多只金属感应传感器,基于感应的方法来检测铝箔胶带路线的位置,把检测的结果送单片机处理,再由单片机输出相应控制信号驱动小车运行。所提出的方法能够完全消除环境光线对循迹小车的干扰,提高小车运行的可靠性。样品小车的测试结果表明,基于新方法设计的小车运行平稳,在长时间工作中没有出现脱轨现象,小车的整体性能良好。 循迹小车是目前较为普遍的一项智能小车制作竞赛,该制作要求小车能寻着一条黑色轨迹前进直到终点,用达到终点的时间决定竞
[嵌入式]
恩智浦发布适用于AUTOSARTM和非AUTOSAR的汽车实时驱动程序(RTD)软件
恩智浦半导体(NXP Semiconductors N.V.,纳斯达克股票代码:NXPI)发布的实时驱动程序(RTD)软件,为带有Arm® Cortex®-M或Cortex-R52内核的所有S32汽车处理器提供支持,恩智浦履行承诺,解决了汽车软件开发的成本和复杂性问题。RTD是S32软件支持平台中的多个新产品之一,通过一系列旨在简化AUTOSAR和非AUTOSAR应用开发的生产级安全合规型软件驱动程序,为新推出的S32K3和现有S32K1/S32G系列提供支持。使用通用代码库和软件API有助于最大程度提高处理器平台之间的软件重复利用率,而在芯片价格中包含生产许可费能够扩大大众市场开发人员对AUTOSAR的访问。 随着现代汽车向
[汽车电子]
恩智浦发布适用于AUTOSARTM和非AUTOSAR的汽车实时驱动程序(RTD)软件
单片机心率测量仪源代码
将你的食指轻轻地放在传感器上,就能看到LED 指示灯 随着你的心跳而闪动,人体指尖的动脉比较发达,当动脉血管随心脏周期性收缩与舒张时,血管中的血液容积也会发生变化。 上面这个是采集部分的 原理图 全套的 制作 资料请到 http://www.51hei.com/bbs/dpj-22525-1.html 去下载,下面是心率 测量仪 的 单片机 部分源代码 /* Project: Measuring heart rate through fingertip Copyright @ Rajendra Bhatt January 18, 2011 PIC16F628A at 4.0 MHz external clock
[单片机]
<font color='red'>单片机</font>心率测量仪源代码
AVR单片机GCC编程:外部中断基本操作
#include avr/io.h #include avr/interrupt.h #include avr/signal.h int main(void) { MCUCR |= (1 ISC11); //INT1 下降沿触发 MCUCR |= ((1 ISC00) | (1 ISC01)); //INT0 上升沿触发 GICR |= ((1 INT1) | (1 INT0)); //INT0, INT1 使能 sei(); //全局中断使能SREG.I //中断发生时, 通用中断标志寄存器GIFR中相应INTF0,INTF1置位,时入中断服务程序后自动清零,也可以人为清零. } SIGNAL(SIG_INTERR
[单片机]
芯圣电子HC89S003A系列MCU简述
HC89S003A系列是芯圣兼容STM8S系列Flash单片机,内置增强型8051内核,拥有16K的Flash内存以及256Bytes+768Bytes的RAM;HC89S003A系列拥有丰富的外设资源,包括5个16位的定时/计数器、3组12位带死区控制以及1路8位的PWM、16+2路12位的ADC、1个SPI、2个UART、1个IIC以及独立的CRC模块;HC89S003A系列还支持2.0~5.5V的工作电压与-40℃~+105℃的工作温度。 以下为该系列目前在售的型号及对应参数: 此外,HC89S003A系列支持引脚全映射,使其在硬件兼容方面有着得天独厚的优势,可以适用于绝大多数的应用领域,例如消防安防,LED驱动电源
[单片机]
芯圣电子HC89S003A系列<font color='red'>MCU</font>简述
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
热门活动
换一批
更多
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved