语音智能机器人助手的设计与实现
(作者小波QQ463431476)
(博文来源http://blog.chinaaet.com/zhaocundang/p/5100017667)
(博文来源:http://www.cnblogs.com/xiaobo-Linux/p/5637861.html)
之前学STM32的时候做的一个项目,我问大家语音识别哪家强?就目前来看,貌似是ICRoute公司吧?然后如果抛弃其它的硬件识别只是基于STM32 Cortex M 核心的话,纯软件去实现,识别效果肯定会不好,应用也是比较差劲的吧。这种识别方式必须先进行录音,然后对你的录音进行匹配,达到识别的目的。
之前拿这个项目参加华为杯比赛来着,没想到没评上,浪费了老师的200块钱,有点小失望,所以把这个项目写出来分享给大家看看吧。
项目实现功能概要:主要实现语音识别,模拟HID键盘,语音控制电脑HID键盘,语音控制外部设备,像台灯、风扇灯。实现语音调整RTC,OLED显示等等。
项目整体设计:
第一副图片是自己手工模块搭建的
第二幅图片是做了一个PCB外扩直插板子
简单介绍一点原理内容:
简介
1. 作品背景及意义
(1)社会背景
随着电脑的普及程度化越来越高,几乎每家每户都有电脑,但是家里的小孩、老人、以及伤残人士不太会或者不方便使用操作电脑,所以设计一款用语音来操作电脑的语音机器人助手是非常必要的,可以在他们不方便地时候提供了方便。
(2)生活窘况
往往早晨的生活是繁忙的,一大早起床,出门。如果我们想一边干别的事情,例如出门前一边系鞋带,或者拿一些东西,一边还想看当前时间、温度是多少的话,不得不抬头去看手机,看钟表,那多麻烦啊!只要我们通过语音,随口这么一说,智能机器人助手就可以实时语音播报当前的时间和温度,这是多么便捷贴心!
(3)PC软件不行硬件行
电脑Win10上的小娜就可以识别语音指令,但是体验效果比较差劲,尤其是电脑配置不够的情况下,打开小娜,也会比较卡。因此,如果采用基于硬件设计的语音机器人助手,语音处理都由硬件完成,指令只要发送出去就好了。这样的效率肯定比电脑软件实现的效果要好很多。
(4)个人工作助手
我想,大概每一个人都想要一个属于自己的智能机器人吧?协助自己处理一些事情,还更加贴心的虚汗温暖,让自己的生活更加富有生活情趣色彩。例如:自己在电脑前,旁边就是自己的小助手,自己累了,或者自己的桌面文件太多,随口这么一说,“打开Word文档”,语音机器人助手就可以帮你打开文档。或者想听歌看电影了,随口这么一说,“播放音乐”, “播放电影”,助手就可以在很短的时间内帮你打开音乐播放器和暴风影音,让你马上聆听音乐,观看电影。。。。。。,啊!生活很美好!
2. 系统简介
本作品是基于STM32微控制器的多功能嵌入式语音控制设备。基于语音识别和嵌入式技术,语音机器人助手能识别人的语音命令,让人们简单、方便的使用计算机,机器人设计主要包括语音识别、MCU主控、USB通信、台灯控制、风扇控制、OLED显示屏,RTC时钟,温度采集,语音播报,电源电路等几个部分,设计小巧、实用!
它能实现语音识别功能,通过采集近距离音频信号来实现相应的指令控制。通过STM32微控制器连接电脑的USB口,将STM32枚举成一个HID人体学输入设备的个性键盘,通过语音识别功能采集人的命令,如“打开暴风影音”语音识别指令后,通过USB发送给电脑键盘键值,便可以播放电影,“打开QQ音乐播放器”便可以播放音乐,此外还可以通过硬件方式对电脑实现休眠和锁屏,以及语音输入电脑登录密码来解锁和电脑唤醒功能。
可以通过语音识别来控制外部设备,例如夏天使用的小风扇,语音控制小风扇的开关,语音识别后也可以通过继电器控制书桌上的台灯开关。也可以温度采集,将采集到的室内温度数值传到微控制器中,OLED显示温度值和语音实时播报室内温度。RTC时钟功能可以在系统关闭的情况下实现对时间的准确计时,也可以进行语音播报时间。另外通过语音输出指令,机器人回答一次,这样实现人机互动功能。系统框图如图1所示。
图1 系统框图
3. 系统创新
(1) 给不会使用或不方便使用电脑的用户带来福利
社会上肯定有不少不会使用电脑的群体,这样一来通过语音控制电脑的方式,就可以简单方便快速地使用电脑,特别是对老年人和伤残人士,在他们不方便地时候提供了一些方便。
(2) 缓解压力,趣味语音交互
(3) 通过一问一答,说一句执行一句命令的方式实现人机交互的功能
可以在繁忙的工作中缓解压力,培养生活兴趣,使生活丰富多彩。
(4) 通过语音可以实现时间小时分钟的调整
语音实现对时间的小时、分钟的快速调整,解放了双手,使生活富有情趣。
(5) 实现对USB台灯、USB风扇的控制
可以对书桌台灯和小风扇控制,给不方便的时候提供了方便。
(6) 与用电脑软件实现的语音控制计算机相比,本作品性能更稳定,使用更方便。
(7) 语音播报
可以实时播报当前室内温度和当前的时间,这样一来就可以通过听的方式获取信息,同时还可以干一些自己的事情,提升生活效率。
一 系统设计
1.1. 系统设计方案
(1) 系统采用STM32作为主控制器,STM32最小系统设计包括MCU核心芯片,电源电路,时钟电路和复位电路。
(2) 语音识别方案选择
目前,STM32语音识别方案有2种,一种是直接基于STM32实现语音识别,第二种是基于LD3320语音模块来实现语音识别。第一种识别方式经过语音采样,放大滤波电路,ADC将模拟量转成微控制器可以识别的数字量,事先进行语音训练,也就是录音,最后将采集到的音频与实现录音好的音频匹配识别。第二种基于LD3320语音识别模块来进行语音识别,这种识别方式效率要高于采用微控制器的直接识别,所以本设计采用这种高效率的识别方式。
(3) USB串口设计
通用异步传输,又称通用异步串行口,微控制器里常用的通信方式,将微控制器PA9 PA10引脚(RX TX)与外部设备连接,实现串口发送数据。
(4) USB 从机设计
直接连接微控制器的PA11 USBDM 和PA12 USBDP引脚,即可让电脑识别成USB设备。
(5) 继电器控制电路,控制台灯、风扇的开关。
(6) USB风扇、台灯接口,通用接口,实用方便。
(7) DS18b20温度采集电路,用于实时采集当前的温度。
(8) 语音文本朗读,将文本朗读成语音模块,用来播报当前的温度和当前的时间。
(9) OLED显示系统菜单,OLED右侧显示系统功能菜单,可以实时切换。
(10)RTC时钟,显示当前时间,也可以语音调节分钟,小时。
1.3 UCOS II操作系统运行框图
(http://www.cnblogs.com/xiaobo-Linux/ QQ463431476 小波)
项目加入UCOS II操作系统,使程序并发运行,把功能分成几个模块,便于维护和删减项目功能,项目UCOS II操作系统运行框图如图1.3和图1.4所示:
图1.3 UCOS II任务创建
二 系统硬件设计
2.1系统硬件电路设计
(1) 电源电路
STM32主控制器采用3.3V电压,因此,电源电路采用5V转3.3V稳压供电,为微控制器已经外部设备提供主要的供电,电源电路如图2.1.1所示。
图2.1.1 电源电路
(2) STM32最小系统电路
STM32最小系统电路包括STM32主控制芯片、时钟电路、复位电路等几个部分,最小系统如图2.1.2所示。
图2.1.2 STM32最小系统电路
3.1 系统PCB制板设计
(1)第一板PCB开发板设计,设计比较大,跑线也比较多,PCB如图3.1.1所示。
图3.1.1 第一板PCB
(2)第二板设计注重简洁,去掉了多余的GPIO口和LCD,增加了OLED,引出UART,整体上比较实用,如图3.1.2所示。
图3.1.2第二板PCB
(3)第三板将STM32核心板单处拿出,方便移植连接外部设备,避免手工焊接STM32 144引脚芯片照成整个板子无法使用的情况。如图3.1.3所示。
图3.1.4第三板PCB
STM32被枚举成USB设备后,连接电脑,电脑将识别为USB HID键盘,(学校请无视= =)如图4.4.3所示:
图4.4.3STM32被电脑识别
四 简单实现原理介绍
一、系统功能实现原理
1.1 STM32F103芯片硬件USB从机接口原理
(1)在STM32F103芯片中,USB接口区使用一个专用的512字节的SRAM数据缓冲存储器用于和PC之间进行数据的发送和接收,该缓冲区能被USB外设直接访问,芯片USB外设结构如图1.1所示。
图1.1 芯片USB结构
2.4.3 LD3320语音识别原理
用户通过MIC输入音频流,对输入的音频流进行放大滤波整形后,LD3320芯片进行频谱分析,对输入的音频进行特征提取,另外一方面,在MCU中编写语音关键词拼音,在语音识别器中,芯片对音频和拼音串 进行匹配,匹配成功后,输出识别结果,识别流程如图2.4.3所示。
图2.4.3 识别流程
先简单介绍到这么多,看下视频演示吧!(http://v.qq.com/page/g/0/i/g03050r660i.html)
如果感兴趣,或者有什么想法想要探讨的话,请在下面留言!或者联系QQ463431476一起学习吧!
设计代码下载:https://item.taobao.com/item.htm?spm=686.1000925.0.0.6wFecf&id=534809801064