设计与开发

功放 单片机 LD3320结合MP3模块加入语音交互功能,实现人和机器交流对话

小编 2024-11-24 设计与开发 23 0

LD3320结合MP3模块加入语音交互功能,实现人和机器交流对话

大家好,我是阿乐。

今天教大家给LD3320语音识别模块加上语音交互的功能。

上节课已经教大家将模块使用起来了,但是使用的时候是我们单方面说出命令,机器识别后并没有给我们一些视觉上或者听觉上的应答反馈,总觉得缺少点什么,所以今天我就教大家给语音识别模块加上语音交互的功能,我们问一句,模块答一句,这样多有意思,这也使得这个机器更加人性化,实用性更强。

好的,介绍一下我们今天将会用到的新模块,就是这个东西,下图是实物图:

模块型号名称是MP3-TF-16P,别看它体积不大,功能可是很强大的。简单来说,它就是一个音乐播放器,可以用来播放U盘、TF卡、NOR FLASH里的MP3、WAV、WMA格式的音频文件,同时它也可以作为电脑的声卡,用来播放电脑的声音。它也可以作为读卡器,通过USB连接电脑后就可以更新TF卡里的内容,用来更新文件。还有更关键的一点是,它价格很便宜,几块钱的东西,很是值得我们入手来开发学习。

这个小东西能用来放音乐,放广播,它不仅支持通过按键来选曲、调音量,还可以通过单片机来操作,这也就是说,我们可以通过编程,通过串口来发指令,指定它什么时候放哪首歌曲,放多大的音量,中途插不插播广告等,根本不用我们动手,程序上就解决了。这就很有灵性了,我们上节课学习了LD3320语音识别模块,它识别到我们的指令后可以对IO口做一系列的操作,用来输出高低电平或者从串口发送数据,我们这样把它俩撮合到一起,这不就成了嘛,一个具有语音交互功能的语音识别系统就这样诞生了。

来,先来看看这个小家伙的这些引脚都有什么作用。看图:

它一共有16个脚,左上角为第一个脚,是模块的电源输入引脚,输入电压范围是3.3-5V,建议用5V供电。

第二个脚是RX,是UART 串行数据输入。

第三个脚是TX,是UART 串行数据输出。

第四个脚是DAC_R,是音频输出右声道,可驱动耳机或者输出音频信号给功放。

第五个脚是DAC_L,是音频输出左声道。

第六个脚是SPK2,是接小喇叭+的,可以驱动小于3W的喇叭。

第七个脚是GND,接电源负极。

第八个脚是SPK1,是接小喇叭-的。

第九个脚是IO1,是触发口,默认上一曲(长按音量-)。

第十个脚也是GND。

第十一个脚是IO2,也是触发口,默认下一曲(长按音量+)。

第十二个脚是ADKEY1,AD口1,当触发时是第一段(长按循环第一段)。

第十三个脚是ADKEY2,AD口2,当触发时是第五段(长按循环第五段)。

第十四个脚是USB+,USB+ DP,接U盘或插电脑的USB口。

第十五个脚是USB-,USB- DM,接U盘或插电脑的USB口。

最后一个是BUSY引脚,它是播放指示,有音频播放时是输出低电平,没有音频播放时是输出高电平。

好,到这一步我们要理一下思路啦,对于命令的传输我们通过串口来发送,当语音识别模块识别到我们的命令后,让它通过串口给这个MP3模块发送一串指令,这MP3模块接收到指令后,就播放相对应的MP3文件,这样不就实现了系统对我们的应答了嘛。

比如我设置这个语音识别模块的一级口令为“创客小秘”,我叫一声“创客小秘”,语音识别模块识别成功后就给MP3模块发送一个指令,指定播放一个MP3文件,而这个文件的内容是“主人,我在”,这样就完成了一个交互的过程。

好,先把硬件连接好,我画了个简单的电路图:

左边这个是语音识别模块,右边的是MP3模块,它们电源正极和地都需要接,这个不用说,然后就是数据的传输了,通过串口来,它们的RX和TX交叉来接,RX接TX,TX接RX,这就完成了,很简单。当然,如果我们还要去控制家电,那就像上节课一样通过一个三极管控制继电器就好了。我这里增加了一路是用来控制这个小风扇的开与关的,IO口控制三极管,然后三极管直接控制风扇。

好,接下来讲讲怎样生成我们需要的MP3文件,我们先设想一下对话的过程,简单举五个例子吧,第一句,就是我说出一级口令,我叫一声“创客小秘”,语音识别模块识别成功后回我一句“主人,我在”;

第二句,我说“打开继电器”, 语音识别模块识别成功后回我一句“好的”,同理,我说“关闭继电器”回我“好的”。第三句,我说“打开风扇”,回我“已开风扇”。第四句,我说“关闭风扇”,回我“已关风扇”。第五句,我说“拜拜”,回我“主人再见,很高兴为您服务!”

好,下一步就是生成MP3文件了,我们需要生成的MP3文件有:1、主人,我在;2、好的;3、已开风扇;4、已关风扇;5、主人再见,很高兴为您服务!

生成这些MP3文件我用的软件是朗读女,我们只要输入文字,它就会合成语音,选择想要的发音人,然后就可以直接生成MP3文件啦,非常好用。当然还有其它软件,比如灵云朗读软件、TTS语音合成工具、讯飞快读等,大家根据自己需要来选用。

好,我们生成这些MP3文件后,把它们拷贝到TF卡里,然后把卡插到MP3播放模块上就可以了。

到此为止,我们硬件上的准备已经就绪,接下来要做的就是要修改程序。到这一步要跟大家说一下控制这个MP3模块播放的指令和格式。举个例子,指定播放一个MP3文件的指令是这样的:7E FF 06 03 00 00 01 FE F7 EF,很长吧,我们从语音模块通过串口给MP3模块发这一串东西,MP3模块收到后就知道这是要播放第一个MP3文件了,在这里简单说一下每个字节表示的意思:7E是起始位,固定不变的,都要有它;FF这是这个模块的版本信息,也是固定不变的;06,指的是从上一字节开始,到后面的字节个数,也就是说,从FF开始,到06 03 00 00 01为止,一共有六个字节。然后这个03在这里,指的是指定曲目播放,也是固定不变的。00在这里指的是不需要反馈信息,如果是01,就是要反馈信息,这里的反馈信息指的是MP3播放模块反馈给语音识别模块的信息。到这个00 01,这里指的是歌曲序号,00是数据高字节,01是数据低字节,低字节01在这里表示的就是播放第一首歌曲。FE和F7指的是累加和校验,是用来给数据查错的,最后一位EF是结束位,当接收到这一位,就说明整个数据发送完毕了。在这里可能大家听得比较懵逼,它设置那么复杂的指令是为了提高数据传输时的准确性,大家听不懂也没关系,懂得有这么一回事就得了。在这里我们要关注的是03 00 00 01这四个字节,代表的就是指定播放第一首歌曲,不需要信息反馈。

好,看下面的图片,MP3模块官方给出的例程,在这里我只给大家简单介绍3个函数,首先是这个串口发送函数,就是把我们上面的这一串东西发送出去的函数,你看它最先发送出去的是起始位的7E,然后通过一个自加循环,i++,按顺序的把这一串数据全部发送出去,后面EF就是结束位了。

​如下图,往下这个是求和校验函数,为什么要这个函数呢,它是怕数据在传输的过程中出错,经过这个函数处理,配合下一个要讲的函数,它就知道这个数据在传输的过程有没有出错。举个例子,比如原先我是想传00010001这个数据,结果数据在传输的过程中受到干扰,有一位数据受到影响由0变成1了,那在接收的那一端收到的数据可能就变成了00010011了,如果没有校验函数去校验,接收端就无法判断数据的准确性,这就很容易出现大问题,所以这个函数存在的意义就在这里了。这个函数在这里具体是怎么校验的就不深入给大家讲了,解释进去又是另一片天地了。

再看到下边的图片,图片上面那个是Uart_SendCMD函数,我们一起结合下面main函数里的操作来看,如下图:

先看下面的main函数,在main函数里首先初始化串口寄存器,然后执行Uart_SendCMD这个函数,这个函数的括号里有3个数据,0x03指的是播放指定的MP3文件,中间的0指的是无需反馈,0x01指的是播放第一首歌曲,这三个数据会分别赋值给上面这个函数括号里的CMD、feedback和dat,然后大家看到上边Uart_SendCMD函数里边,CMD放画红色横线1的位置,feedback放画红色横线2的位置,dat放画红色横线3的位置,而且这个dat分高字节和低字节的,这6个字节的数据是不是就是我们刚才讲过的从FF开始到01的这6个,是了吧,然后进行校验,最后就把这些数据通过串口给发送出去了。

好,我们需要做的就是把这3个函数复制粘贴到语音识别模块的大程序中去,进行融合,如下图:

然后我们在语音识别程序处理函数这里加上我们想要播放的音乐就得了,还记得我们刚才生成的MP3文件吗?我们按顺序放到TF卡里,第一首是“主人,我在”,第二首是“好的”,第三首是“已开风扇”,第四首是“已关风扇”,第五首是“主人再见,很高兴为您服务”。

来啦,如下图:

当我们说出一级口令,识别成功后我们就调用第一首音乐,把这个函数放过来,里面三个数据就是0x03,0,0x01,0x01在这里指的就是播放第一首歌曲嘛,就是播放“主人我在”。

好,然后下面,如下图:

打开继电器关闭继电器都是调用“好的”这个MP3文件,那我们把这个函数放过来,里面三个数据就是0x03,0,0x02。0x02在这里指的就是播放第二首歌曲。

同理,看下面的图片:

当我说出“打开风扇”时,调用的就是第三首歌曲,IO口给个高电平;当我说出“关闭风扇”时,调用的就是第四首歌曲,IO口给个低电平。

看上面的图片,最后,当我说出拜拜时,IO口不用做任何操作,只发送串口数据,调用“主人再见,很高兴为您服务!”这个MP3文件,一样的,我们把这个函数放过来,里面三个数据就是0x03,0,0x05,后面的这个0x05在这里指的就是播放第五首歌曲。

好的,这就完成了编程的整个过程,我们将程序编译下载,就完成了给语音识别模块添加语音交互的这个功能,整个过程有点繁琐,也有点难度,需要大家有一定的基础,在这里主要是给大家粗略看一下开发的大致框架与过程,给大家提供一个思路,大家也可以根据自己的需求加入更好的创意和想法,还是挺好玩的一个作品。

详细视频教程请移步到我的主页观看,本期图文教程就讲这么多,后面再给这个语音控制系统加一个无线传输数据、无线控制的功能,比如在家里,我想在一个房间通过语音识别,去控制另一个房间的灯的开关,那就需要一个无线模块去完成通讯了,我们先做一对一的,看进度可以的话再做一对多,不断完善丰富我们的系统。

本期教程就到这里了,我们下期再见,拜拜。

20个经典模拟电路(12)场效应管放大电路

1 场效应管的分类,特点,结构,

场效应管是利用输入电压产生的电场效应来控制输出电流的,所以又称之为电压控制型器件。它工作时只有一种载流子(多数载流子)参与导电,故也叫单极型半导体三极管。它具有很高的输入电阻,能满足高内阻信号源对放大电路和要求,是较理想的前置级器件。它还具有热稳定性好,功耗低,噪声低,制造工艺简单,便于集成等特点。

转移特性和输出特性曲线:

2 场效应放大电路的特点:

1)场效应管是一种电压控制器件,即通过UGS控制ID

2)场效应管输入端几乎没有电流,所以其直流输入电阻和交流输入电阻都非常高。

3 )由于场效应管是利用多数载流子导电的,因此,与双极性三极管相比,具有噪声小,受幅射的影响小、热稳定性较好而且存在零温度系数点等特性。

4 )由于场效应管的结构对称,有时漏极和源极可以互换使用,而各项指标基本上不受影响,因此应用时比较方便灵活。结型场效应管漏极和源极可以互换使用,但栅源电压不能接反;衬底单独引出的MOS管漏极和源极可以互换使用,NMOS管衬底连电路最低电位,PMOS管衬底连电路最高电位。MOS管在使用时,常把衬底和源极连在一起,这时漏极、源极不能互换。

5)场效应管的制造工艺简单,有利于大规模集成。

6)由于MOS场效应管的输入电阻可高达1015Ω,因此由外界静电感应所产生的电荷不易泄漏,而栅极上的SiO2绝缘层又很薄,这将在栅极上产生很高有电场强度,易引进绝缘层击穿而损坏管子。应在栅极加有二极管或稳压管保护电路。

7)场效应管的跨导很小,当组成放大电路时,在相同的负载电阻下,电压放大倍数比双极型三极管低。

3 场效应放大电路的应用场合:

MOS管与结型管相比开关特性更好。结型场效应管主要用途是在模拟电路中用做放大元件,既可作分立元件使用,也可制作成集成电路。

相关问答

帮忙讲解一下 单片机 可以吗?

这里讲解的单片机仅仅只是大轮廓的一个概念,具体要详细学习单片机最好是网上购买单片机入门至制作,才可以真正意义上...帮忙讲解一下单片机可以吗?★实话实说,...

介绍几个大功率的 功放 集成块?-ZOL问答

其实更建议你用单片机那样成本更少功能还跟强大!TDA7293,7294,7295,LM3886TF这是目前烧友中用得较多的大功率集成功放了,都有50瓦的额定功率它就连在CD机芯里...

etc 功放 机哪个型号好?

3GAk200功放机怎么样?3GAk200功放机感觉很好很不错。3GAk200功放机基于低功耗CMOS工艺,是一种集成了领先边缘功率管理单元、模拟基带和无线电电路的功放音响...

ktv 功放 音箱价格一般是多少?-设计本有问必答

功放音箱一体机价格是599元左右。功能特点:内置工控电脑,7寸液晶显示器,功放音箱,320万高清数码展台,键盘鼠标,网络电子白板,无线麦克风.综合了所...

什么叫 双解码 功放 ?-ZOL问答

传统的功放只能接收和处理单一的音频信号源,而双解码功放则可以同时连接并处理多个来源。这意味着你可以将多个音频设备(如CD播放器、电视、手机等)连接到双解...

一般vcc接什么器件?

一般vcc接电源管理芯片。电源管理芯片,是在电子设备系统中担负起对电能的变换、分配、检测及其他电能管理的职责的芯片。主要负责识别CPU供电幅值,产生相应的...

IC电子物料回收公司哪家好

[回答]收二手设备,比如二手机床设备、二手印刷设备、二手化工设备、二手电子设备、二手五金设备、二手木工设备等,整厂回收,免费上门,价格合理,当...我们...

高科技追踪器介绍?

GSM模块将GSM射频芯片、基带处理芯片、存储器、功放器件等集成在一块线路板上,具有独立的操作系统、GSM射频处理、基带处理并提供标准接口的功能模块。开发人...

各位大侠急需了解,长沙放心的VCO厂家,VCO使用教程?

[回答]是想做扫频的话那就要做个300MHz到5...。你要是想做扫频的话那就要做个300MHz到500MHz的VCO,然后再用一个DA来控制VCO的调谐电压,让它从0到,不停的...

三极管放大信号的应用,怎么理解?简单举例说明一下?

所谓的三极管放大作用就是指,在三极管输入端输入一个幅度较小的信号(这个信号可以是电压或电流),三极管可以按照输入信号的变化规律将其转为幅度较大的信号。...

猜你喜欢