我是靠谱客的博主 贪玩雪糕,最近开发中收集的这篇文章主要介绍stm32语音播报模块_语音助手控制小车,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

近年来随着人工智能的快速发展,国内语音行业也可谓是百花齐放,尤其是最近几年,人工智能AI技术以及智能家居得到了飞速的发展。本设计采用的是非特定语音识别芯片LD3320和SYN6288语音合成模块有机的结合,设计开发了一种能通过语音来控制小车运行、拨打电话、发送短信以及播放音乐的语音识别系统。这个东西虽然科技含量不高,但是非常具有可玩性,看完你也可以做一个。

9fab0ce10d4b2440e91ab38c2f1b7754.gif

系统架构介绍

9fab0ce10d4b2440e91ab38c2f1b7754.gif

系统主要由语音识别模块LD3320、SYN6288语音合成模块、GSM、摄像头等组成,主控采用MK60FX单片机,采用串口通信与SYN6288语音合成以及GSM之前进行指令传输。具体流程图如下所示。

038c39d96eafc45fc551b9e465ace93f.png

系统上电之后首先通过预先设置的唤醒指令进行激活该模块,例如我在程序中设置的唤醒指令是“小宝贝”。接着进入语音识别状态,然后通过“主人”发送的相关指令执行相应的操作。这些相关指令都是事先要写进模块中,当模块收到指令之后便会与事先设定的词汇进行对比,相一致则执行相应操作,通过给相应的引脚高电平让单片机进行捕捉,然后单片机在捕捉到相应的高电平后随即发送相应的指令给外设(如GSM、语音播报、摄像头)。

在语音合成的程序中需要写入文字信息所以在编码的时候需要将编码格式改为ANSI,一般默认的是UTF8,如果使用默认的格式会造成中文乱码。由于我使用的K60的编译软件是IAR,这个修改编码格式的地方没有找到ANSI的格式,刚刚好在语音识别模块LD3320上集成了一块51芯片,于是我便使用LD3320模块上的51写了语音合成的程序,将语音合成SYN6288模块的RX和TX与语音识别LD3320模块的RX和TX进行连接,让他们进行串口通信传输指令。

9fab0ce10d4b2440e91ab38c2f1b7754.gif

LD3320语音识别模块

9fab0ce10d4b2440e91ab38c2f1b7754.gifLD3320语音模块的特点:1、该模块是“语音识别模块”,可以识别所有普通话中文,不具有语音播报功能;2、采用LD3320语音识别芯片,该芯片集成语音信号采集、识别算法;3、模块上有一个单片机(STC11L08XE),单片机和LD3320语音模块进行SPI通信;4、模块上的单片机共引出16个单片机IO口;

因为我已经将模块上单片机的串口与SYN6288语音合成模块的串口相连了,所以采用的其他IO口语K60进行反馈,如果主控采用其他单片机的话,便可以通过串口与主控之间进行反馈,采用串口进行反馈相对而言比较节约IO资源以及识别精确度更高一点。

0dacc9dbaea27099c79dccc9f69f0159.png 9fab0ce10d4b2440e91ab38c2f1b7754.gif

SYN6288语音合成模块

9fab0ce10d4b2440e91ab38c2f1b7754.gifSYN6288语音合成模块的特点:1、该模块可以合成任意的中文文本,支持英文字母的合成;2、每次合成的文本量最多可达200字节;3、支持串口数据通讯接口,支持三种通讯波特率:9600bps,19200bps,38400bps;4、支持16级音量调整,播放文本的前景音量和播放背景音乐的背景音量可分开控制; fa2af74c504154f9406021b17985703f.png

另外关于GSM和摄像头这两部分我已经在之前的文章中做过详细介绍,这里就不再重复说明,感兴趣的可以去看之前的文章。

9fab0ce10d4b2440e91ab38c2f1b7754.gif

软件设计

9fab0ce10d4b2440e91ab38c2f1b7754.gif

本套系统的核心便是语音识别部分,接下来直接看程序。

47300659d62b7862af1b366fdd49c589.png

这部分程序是修改我们所需要的词汇,第一条是唤醒指令,后面的便都是操作指令。

eed7b03afbe826ca3c96114d7d6a8850.png

这里的便是设置该执行什么操作,比如第一个if语句下的便是唤醒成功后该执行的操作,然后下面的便是设置的命令指令,和上面的设置词汇顺序一致。

(注意,如果使用的是keil编程的单片机,建议此处使用串口进行通信来向主控传达指令,我这里是通过模块上集成51的IO口来输出高电平,再通过主控上的检测IO输入电平来进行控制的,相对精确性而言没有串口高。) 721f0ccecea210211d0322d56f027cd0.png

此处设置的便是设置相应的引脚。

645df442469057963d723c7297284d2f.png

然后此处是语音合成的程序。

下面就都是主控K60中的程序。

1eda34ce4273bc9b7540c25c62c96a84.png 4e8ce3d92ace5a8ebc6efdd34a5a66a9.png a2290765fa6c9d841e7bc33e3ff9528b.png fa6add7bf813c51b7a5e5a754464f5e5.png e017be1ba6f014e1092b14feb9f87b6e.png fc067e4fbface7b330e4a29a24132568.png

这里我随便写的程序比较简陋,使用的都是单个变量,程序写的比较好的可以采用数组来写,就比较好看美观一点。

对于GSM部分的程序在前面的文章中都有详细的讲解,这里不再重复。

最后

以上就是贪玩雪糕为你收集整理的stm32语音播报模块_语音助手控制小车的全部内容,希望文章能够帮你解决stm32语音播报模块_语音助手控制小车所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部