大家好,我是『芯知识学堂』的SingleYork,前面给大家简单介绍了<基于STM32的智能垃圾桶之成员简介>和<基于STM32的智能垃圾桶之语音识别>,今天笔者将要给大家介绍我们这个DIY智能垃圾桶套件中“语音播报模块”的详细使用。
这个“语音播报模块”是集成到了我们『芯知识学堂』出的OWL Micro F1 – EXT扩展板上,主芯片使用的是WTS-16S这款功能强大的高品质MP3芯片的模拟U盘版本。,其特点如下:
另外,这款芯片还有TF卡版本的,两个版本之间使用上有差异,大家可以根据实际情况选择,TF卡版本的特点如下:
由于我们这个DIY智能垃圾桶项目的语音文件比较小,因此,板载FLASH采用的是WT25Q64A这款存储空间为64Mbit(8M byte)的存储芯片,这款FLASH芯片是SPI接口的,兼容市面上的GD FLASH。板载功放采用的是LM4890这颗MSOP8 1W功率的语音芯片通用功放,整个OWL Micro F1 – EXT扩展板的原理图如下:
语音播报模块的硬件部分其实很简单,大家按照厂家提供的手册设计就OK了,在介绍完硬件部分后,我们就要来开始使用这个模块了。
首先,我们用Mirco USB线将扩展板跟电脑连起来(这个时候,扩展板可以不用连底板),这个时候,在我们的电脑盘符里面,就会出现一个如下一个提示:
这是因为我们是第一次使用这个语音播报模块,我们需要先将这个模块的FLASH格式化一下,按照如下选项格式化即可:
在格式化完成后,我们就可以来复制音频文件到这个盘里面了,在复制音频文件之前,笔者先跟大家来介绍一下,如何制作音频,当然咯,大家也可以选择自己录制视频,哈哈,不过,笔者要跟大家介绍的是“如何使用文字转音频文件”,这样的话,我们就不用担心自己说话不好听,或者发音不标准了。
笔者在将文字转音频文件的时候,使用的是“闪电文字语音转换软件”这款软件,这款软件可以免费试用,但是免费的会带有厂家植入的广告,可能还需要自己再做剪辑。笔者试用的是收费版,几十块年终生使用,大家如果需要制作什么音频的话,可以跟我联系,免费帮大家制作音频文件哈!
当然咯,市面上这类软件,也是多如牛毛,大家如果有更好用的免费的软件,也可以互相推荐一下。笔者就以这款“闪电文字语音转换软件”来给大家介绍一下如何实现“文字转语音”吧!
首先,我们用鼠标左键双击“闪电文字语音转换软件”的这个图标:
在打开的软件界面中,我们选择“文字转语音”,然后在输入框内输入“可回收垃圾”,右侧的设置选项里面,大家可以根据自己的实际情况选择,比如笔者这里设置语音类型为“标准女生”,无语音背景,输出格式为MP3格式:
输出文件的目录,可以自定义,比如,笔者这里是在桌面建立了一个名为“文字转语音音频文件”的文件夹,然后,选择这个文件夹即可:
在制作语音文件的时候,我们可以先点击右下角的“试听”按钮试听一下语音的效果,如果是我们想要的,再点击“开始转换”按钮,即可进行文字转语音,当出现如下“导出成功”的提示后,我们的文字就成功的转换成了音频文件:
默认生产的音频文件是系统自动命名的,我们可以根据语音内容来重新修改文件名:
比如,我们可以将刚才生产的这个音频文件命名为“01 可回收垃圾”:
按照同样的方法,我们可以快速制作出我们的DIY智能垃圾桶项目所需要的其他几个音频文件“02 厨余垃圾”、“03 有害垃圾”、“04 其他垃圾”、“05 主人请吩咐”:
其中,前面4个音频为垃圾分类,最后一个“主人请吩咐”的音频主要用于唤醒口令的应答,也就是说,当我们对着语音识别模块说出唤醒口令“猫头鹰”的时候,如果语音识别模块识别成功,主控板便会让语音播报模块应答“主人请吩咐”。这样一来,人机交互会体验会更友好。
音频文件制作好之后,接下来我们就需要将音频文件复制到语音播报模块当中了,在复制语音文件的时候,尤其是要注意复制的先后顺序,因为我们使用的WTS-16S 这个MP3芯片“指定SPI-FLASH索引播放”功能,而对于这个SPI-FLASH中音频文件的索引来说,并不是我们之前命名时的01、02、03、04、05,而是根据我们复制音频文件时的先后顺序自动生成的索引,也就是说,如果我们要让“01 可回收垃圾”这个音频文件的索引排在第一位,那么,我们就要在复制音频文件的时候,将这个“01 可回收垃圾”音频文件第一个复制进去,这就是笔者之前命名的时候为什么要在音频文件前面加前缀了,主要是方便大家区分先后复制。
当然咯,如果我们大家的音频文件跟笔者的在本地文件家中排序顺序是一样的话,那么我们也可以直接先“ALT+A”全选,然后“CTRL+C”复制,然后在“CTRL+V”粘贴到语音模块所在盘符中,这样操作,也是可以让语音模块中音频文件的索引从01-05依次递增的。
音频文件复制完成后,我们就可以来测试音频语音播报的功能了。从原理图上我们可以看到,语音模块的串口控制引脚为扩展板上丝印的PB10和PB11这两个引脚:
我们使用USB转TTL模块来进行串口指令控制,在使用语音播报功能的时候,我们需要将语音下载接口的USB拔掉,接上扬声器,然后通过USB转TTL模块给OWL Micro F1 – EXT扩展板供电,硬件连线大致为:
语音播报模块PB11 --> USB模块RXD语音播报模块PB10 --> USB模块TXD语音播报模块GND --> USB模块GND语音播报模块5V0 --> USB模块VCCIO
接下来,我们来看下WTS-16S 这个MP3芯片“指定SPI-FLASH索引播放”功能的指令帧格式:
这里主要是要注意两个地方,一个是“长度”,另一个是“校验码”,其中:
长度:指的是“长度+命令码+参数+校验和”的总个数;
校验码:指的是“长度+命令码+参数”的累加和的低字节;
弄明白这个指令控制的帧格式后,那么,我们如果要让语音播报模块播放第一个音频文件,即:“01 可回收垃圾”这个音频文件,我们便可以通过串口助手发送十六进制的:7E 05 A0 00 01 A6 EF 即可,具体操作流程如下:
打开电脑设备管理器,找到USB转串口模块的COM号,本例中为COM5;
打开串口助手,选择端口号为COM5,波特率为9600,数据位为 8,校验位为“无”,停止位为1,然后点击“打开串口”;
发送和接收均勾选“16进制”,然后在“发送区1”输入7E 05 A0 00 01 A6 EF这条指令,然后点击旁边的“手动发送”按钮;
这个时候,我们就可以听到语音播报模块在播报“可回收垃圾”音频,同时,串口助手也会返一个“00”字符。
如果我们要播放其他音频文件,只需要修改“曲目索引号”和重新计算“校验码”即可,是不是非常的方便?
在后面的的单片机程序讲解中,笔者会写一个函数,直接计算校验码,只需要在调用函数的时候,选择“曲目索引号”即可播放指定的音频文件。
通过上一篇文章<基于STM32的智能垃圾桶之语音识别>和今天的这篇文章,不知道大家有没有发现,其实笔者在讲解语音识别和语音播报的同时,也在教大家一种调试的方法。
很多初学者在做项目的时候,一拿到东西就直接把线连起来,然后开始写程序,结果发现怎么调都不对:舵机动不了、语音不播报等,感觉自己写的程序貌似没什么问题,但就是怎么找也找不到原因,究竟是语音模块识别不了,还是语音播报模块指令写的有问题?无从下手!
但是,如果大家按照笔者的这种“分模块调试”的思路来做的话,就会发现,如果把每个模块都单独调通了,那么在各个模块联调的时候,分分钟就搞定了!
在很多大型项目中,有经验的硬件工程师在设计板子的时候,旺旺就考虑到了后期调试这一块的问题,所以,早就在板子上做了很多的测试点,包括UART口的测试点、电压测试点、电流测试点等,不要感觉这种设计占地方且多余,其实这种设计是非常有用的!
好了,关于我们这款DIY项目中的另一个关键模块—语音播报模块的使用就介绍到这里了,在下一篇文章中,笔者将会给大家介绍4个舵机的控制程序,敬请关注!
欢迎大家点赞、分享、转发,你们的关注是我坚持写作的动力!感谢大家的支持!
如果你喜欢我们的这个DIY项目,欢迎分享、转载,在项目内容全部介绍完成后,笔者将会给大家免费分享所有设计资料,你们的关注是我坚持写作的动力!感谢大家的支持!
end
如果觉得《智能垃圾桶c语言程序 『开源』基于STM32的智能垃圾桶之语音播报》对你有帮助,请点赞、收藏,并留下你的观点哦!