发布时间:2025-12-10 19:16:32 浏览次数:4
语音模块SYN6288「终于解决」用到了SYN6288,如图:syn6288这个模块可以播报中英文,它和单片机的连接走的是串口通信,串口发送包含声音内容的GB2312编码,模块播放声音。接线:VCC、GND接对应,TX、RX反接。程序:voidspeech(){unsignedchari=0;unsignedcharhead[46];//声音内容:早上好,现在是北京时间九点半,努力学习呀head[0]=0xFD;head[1]=0x00;head[2]=0x2B.
用到了SYN6288,如图:
这里我们讲的是语音播报模块,它的功能是播放声音,之后我会在更新语音识别的demo。本实验使用的是mega2560,之后会更新stm32、esp32/esp8266,其实原理都是相通的。
我们需要通过软件把自己想要播放的文字转成16进制,然后添加到代码里就好。
syn6288这个模块可以播报中英文,它和单片机的连接走的是串口通信,串口发送包含声音内容的GB2312编码,模块播放声音。
接线:VCC 、GND接对应,TX、RX反接。
程序:
void speech(){ unsigned char i = 0; unsigned char head[46];//声音内容:早上好,现在是北京时间九点半,努力学习呀 head[0] = 0xFD; head[1] = 0x00; head[2] = 0x2B; head[3] = 0x01; head[4] = 0x00; head[5] = 0xD4; head[6] = 0xE7; head[7] = 0xC9; head[8] = 0xCF; head[9] = 0xBA; head[10] = 0xC3; head[11] = 0xA3; head[12] = 0xAC; head[13] = 0xCF; head[14] = 0xD6; head[15] = 0xD4; head[16] = 0xDA; head[17] = 0xCA; head[18] = 0xC7; head[19] = 0xB1; head[20] = 0xB1; head[21] = 0xBE; head[22] = 0xA9; head[23] = 0xCA; head[24] = 0xB1; head[25] = 0xBC; head[26] = 0xE4; head[27] = 0xBE; head[28] = 0xC5; head[29] = 0xB5; head[30] = 0xE3; head[31] = 0xB0; head[32] = 0xEB; head[33] = 0xA3; head[34] = 0xAC; head[35] = 0xC5; head[36] = 0xAC; head[37] = 0xC1; head[38] = 0xA6; head[39] = 0xD1; head[40] = 0xA7; head[41] = 0xCF; head[42] = 0xB0; head[43] = 0xD1; head[44] = 0xBD; head[45] = 0xA8; for(i=0; i<46; i++){ Serial.write(head[i]); }}void setup() { Serial.begin(9600);}void loop() { speech(); delay(10000);} 是否还在为Ide开发工具频繁失效而烦恼,来吧关注以下公众号获取最新激活方式。亲测可用!
【正版授权,激活自己账号】:Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】:官方授权 正版激活 自己使用,支持Jetbrains家族下所有IDE…
声音编码的生成我用到的是函数语音生成器,可以搜一下。
效果:
语音示例1
我们掌握了以上知识,可以扩展一下,我们联系生活,进入超市时候会有个语音播报并打开小栅栏,这个功能,它用到了红外、语音播报、可能还有一个电磁锁控制开门。我们可以做一个简单地红外出发语音播报,就是有客人来的语音提示。
注意:这时你需要一个红外传感器(光电开关),或者一个什么感应模块,来判断是否有人。
我用的是光电开关,如下:
光电开关连线: 棕色接VCC,蓝色接GND,黑色接5引脚,我用的mega2560,大家可以换别的单片机,思路是通的,代码换个引脚就行。
代码如下:
void speech(){ unsigned char i = 0; unsigned char head[20];//语音内容:您好,欢迎光临 head[0] = 0xFD; head[1] = 0x00; head[2] = 0x11; head[3] = 0x01; head[4] = 0x00; head[5] = 0xC4; head[6] = 0xFA; head[7] = 0xBA; head[8] = 0xC3; head[9] = 0xA3; head[10] = 0xAC; head[11] = 0xBB; head[12] = 0xB6; head[13] = 0xD3; head[14] = 0xAD; head[15] = 0xB9; head[16] = 0xE2; head[17] = 0xC1; head[18] = 0xD9; head[19] = 0x95; for(i=0; i<20; i++){ Serial.write(head[i]); }} void setup() { Serial.begin(9600);}void loop() { if (digitalRead(5) == LOW) { speech(); delay(1000); }} 效果:
红外触发语音播报