基于ARM的非特定人语音识别系统设计

0 引言本文引用地址:http://www.eepw.com.cn/article/247359.htm

随着高新技术在军事领域的广泛运用,武器装备逐步向高、精、尖方向发展。传统的军事训练由于训练时间长、训练费用高、训练空间窄,常常不能达到预期的训练效果,已不能满足现代军事训练的需要。为解决上述问题,模拟训练应运而生。

为进一步提高训练效果,本文利用智能语音交互芯片设计了某模拟训练器的示教与回放系统。示教系统为操作人员生动的演示标准操作流程及相应的操作现象,极大地缩短了对操作人员的培训时间,提高了培训效果。回放系统通过记录操作训练过程中各操作人员的口令、声音强度、动作、时间、操作现象等,待操作训练结束后通过重演训练过程,以便操作者及时纠正自己的问题。示教系统也可理解为对标准操作训练过程的回放。该系统不需要虚拟现实技术的支持,在小型的嵌入式系统上就可以实现。

1 系统原理

该模拟训练器由一台测控计算机和多台从设备组成。如图1所示。在此仅对一台从设备进行介绍,其硬件系统主要由测控计算机、Arduino mega2560 控制器、语音识别单元、声强检测单元、语音合成单元、面板控制单元、仪器面板等组成。面板控制单元较为复杂,包含多种控制电路,在模拟训练中负责该从设备在Arduino mega2560 控制器的控制下完成整个训练过程,在示教与回放系统中完成对刚才操作训练操作现象的重演,其具体电路设计在此不做介绍。

b856fdab54aa89d876cabb9eced5500b.jpg

语音识别单元负责识别操作人员的操作口令;声强检测单元负责检测声强大小并以此作为判断是哪台从设备操作人员口令的依据;Arduino mega2560控制器负责监视仪器面板各元件的状态来识别操作人员的动作,从而完成对操作训练过程的记录。各仪器的操作现象根据操作动作事先编制无需记录。在操作回放过程中,测控计算机根据所记录的数据,通过控制相应从设备的Arduino mega2560控制器重现所记录的操作过程。

2 单元系统设计

2.1 语音识别单元设计

目前,语音识别技术的发展十分迅速,按照识别对象的类型可以分为特定人和非特定人语音识别。特定人是指识别对象为专门的人,非特定人是指识别对象是针对大多数用户,一般需要采集多个人的语音进行录音和训练,经过学习,从而达到较高的识别率。

本文采用的LD3320语音识别芯片是一颗基于非特定人语音识别(Speaker Independent Automatic SpeechRecognition,SI ASR)技术的芯片。该芯片上集成了高精度的A/D 和D/A 接口,不再需要外接辅助的FLASH 和RAM,即可以实现语音识别、声控、人机对话功能,提供了真正的单芯片语音识别解决方案。并且,识别的关键词语列表是可以动态编辑的。其语音识别过程如图2所示。

54b2ea349ffdc5bf272099416e5505d8.jpg

语音识别单元采用ATmega168 作为MCU,负责控制LD3320完成所有和语音识别相关的工作,并将识别结果通过串口上传至Arduino mega2560 控制器。对LD3320芯片的各种操作,都必须通过寄存器的操作来完成,寄存器读写操作有2种方式(标准并行方式和串行SPI方式)。在此采用并行方式,将LD3320的数据端口与MCU的I/O口相连。其硬件连接图如图3所示。

98d0640adb485befd49f30591f47f9a0.jpg

语音识别流程采用中断方式工作,其工作流程分为初始化、写入关键词、开始识别和响应中断等。MCU的程序采用ARDUINO IDE编写[5],调试完成后通过串口进行烧录,控制LD3320完成语音识别,并将识别结果上传至Arduino mega2560控制器。其软件流程如图4所示。

1567b3a8f11f5efd7945529b92867346.jpg

2.2 声强检测单元设计

在进行语音识别时需要判断是某一台从设备操作人员的口令,为此设计声强检测单元电路,该电路仅需能够判断出相对声强的大小,无需检测声级,对检测精度要求较低。

电容式MIC声音传感器将外部声音信号转换成电信号,经NE5532放大电路进行放大,将输入的微弱音频信号转换为具有一定幅值的电压信号,该电压信号经AC/DC有效值转换电路进行装换后进行再次放大,最终由Arduino mega2560控制器的A/D进行采样。图5给出了声强检测单元的电路原理图,其中D1 端接Arduinomega2560控制器的A/D,INT1端接Arduino mega2560控制器的外部中断1.当外界声音信号大于预设的阈值时,三极管导通INT1端由高电平变为低电平产生外部中断,控制器响应中断并进行A/D 采样,采样数据经均值滤波后保存,待测控计算机查询时上传该声强数据。

在电路城上一篇详细介绍了特定语音识别模块LD3320原理图、示例代码、开发手册等,资料下载链接:https://www.cirmall.com/circuit/5439/detail?3 现在讲讲语音识别模块LD3320 在Arduino上的应用。 LD3320 语音识别模块概述: 采用SPI通信接口,板载咪头和有源晶振,方便在电子产品中实现语音识别、声控和人机对话等功能。注意事项: 由于该模块使用3.3V电压,所以将其和Arduino连接时,请务必注意供电电压。 本教程主要实现:通过语音模块控制LED的亮和灭。说“开灯”,LED点亮;说“关灯”,LED熄灭。 LD3320 语音识别模块概述: 采用SPI通信接口,板载咪头和有源晶振,方便在电子产品中实现语音识别、声控和人机对话等功能。 注意事项: 由于该模块使用3.3V电压,所以将其和Arduino连接时,请务必注意供电电压(如配合Arduino UNO R3使用,建议加上电平转换模块);对于使用UNO PLUS开发板来说,切换电压很简单,只需将电压跳线帽配置为3.3V即可。 硬件准备: UNO PLUS I/O Expansion Shield LD3320 Shield 硬件连接: 1. 将IO Expansion Shield接入UNO PLUS,用跳线帽将两个板的电压配置为3.3V 2. 连接 LD3320 语音模块 3.3V -- VCC GND -- GND MISO -- D12 MOSI -- D11 SCK -- D13 NSS -- D4 RST -- D9 IRQ -- D2 WR -- GND 3. 将 D8 与XBEE接口的15号引脚连接,控制板载的 STATE LED闪烁。如果你动手能力比较腻害,可以用洞洞板连接一个LED驱动电路,其实就一个1K电阻和一个发光二极管,D8为控制引脚;当识别到“开灯”时,D8输出高电平;反之输出低电平。 程序截图: 说明: 源码下载见附件内容,如果下载后编译出错,将ld3320目录复制到Arduino sketchbook location地址的libraries文件夹内(在File->Preferenees里查看) 原文出处:https://www.waveshare.net/study/article-11-1.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值