当前位置:   article > 正文

语音模块SYN6288

syn6288

 用到了SYN6288,如图:

这里我们讲的是语音播报模块,它的功能是播放声音,之后我会在更新语音识别的demo。本实验使用的是mega2560,之后会更新stm32、esp32/esp8266,其实原理都是相通的。

我们需要通过软件把自己想要播放的文字转成16进制,然后添加到代码里就好。

syn6288这个模块可以播报中英文,它和单片机的连接走的是串口通信,串口发送包含声音内容的GB2312编码,模块播放声音。

接线:VCC 、GND接对应,TX、RX反接。

程序:

  1. void speech(){
  2. unsigned char i = 0;
  3. unsigned char head[46];//声音内容:早上好,现在是北京时间九点半,努力学习呀
  4. head[0] = 0xFD;
  5. head[1] = 0x00;
  6. head[2] = 0x2B;
  7. head[3] = 0x01;
  8. head[4] = 0x00;
  9. head[5] = 0xD4;
  10. head[6] = 0xE7;
  11. head[7] = 0xC9;
  12. head[8] = 0xCF;
  13. head[9] = 0xBA;
  14. head[10] = 0xC3;
  15. head[11] = 0xA3;
  16. head[12] = 0xAC;
  17. head[13] = 0xCF;
  18. head[14] = 0xD6;
  19. head[15] = 0xD4;
  20. head[16] = 0xDA;
  21. head[17] = 0xCA;
  22. head[18] = 0xC7;
  23. head[19] = 0xB1;
  24. head[20] = 0xB1;
  25. head[21] = 0xBE;
  26. head[22] = 0xA9;
  27. head[23] = 0xCA;
  28. head[24] = 0xB1;
  29. head[25] = 0xBC;
  30. head[26] = 0xE4;
  31. head[27] = 0xBE;
  32. head[28] = 0xC5;
  33. head[29] = 0xB5;
  34. head[30] = 0xE3;
  35. head[31] = 0xB0;
  36. head[32] = 0xEB;
  37. head[33] = 0xA3;
  38. head[34] = 0xAC;
  39. head[35] = 0xC5;
  40. head[36] = 0xAC;
  41. head[37] = 0xC1;
  42. head[38] = 0xA6;
  43. head[39] = 0xD1;
  44. head[40] = 0xA7;
  45. head[41] = 0xCF;
  46. head[42] = 0xB0;
  47. head[43] = 0xD1;
  48. head[44] = 0xBD;
  49. head[45] = 0xA8;
  50. for(i=0; i<46; i++){
  51. Serial.write(head[i]);
  52. }
  53. }
  54. void setup() {
  55. Serial.begin(9600);
  56. }
  57. void loop() {
  58. speech();
  59. delay(10000);
  60. }

声音编码的生成我用到的是函数语音生成器,可以搜一下。

效果:

语音示例1

我们掌握了以上知识,可以扩展一下,我们联系生活,进入超市时候会有个语音播报并打开小栅栏,这个功能,它用到了红外、语音播报、可能还有一个电磁锁控制开门。我们可以做一个简单地红外出发语音播报,就是有客人来的语音提示。

注意:这时你需要一个红外传感器(光电开关),或者一个什么感应模块,来判断是否有人。

我用的是光电开关,如下:

 光电开关连线: 棕色接VCC,蓝色接GND,黑色接5引脚,我用的mega2560,大家可以换别的单片机,思路是通的,代码换个引脚就行。

代码如下:

  1. void speech(){
  2. unsigned char i = 0;
  3. unsigned char head[20];//语音内容:您好,欢迎光临
  4. head[0] = 0xFD;
  5. head[1] = 0x00;
  6. head[2] = 0x11;
  7. head[3] = 0x01;
  8. head[4] = 0x00;
  9. head[5] = 0xC4;
  10. head[6] = 0xFA;
  11. head[7] = 0xBA;
  12. head[8] = 0xC3;
  13. head[9] = 0xA3;
  14. head[10] = 0xAC;
  15. head[11] = 0xBB;
  16. head[12] = 0xB6;
  17. head[13] = 0xD3;
  18. head[14] = 0xAD;
  19. head[15] = 0xB9;
  20. head[16] = 0xE2;
  21. head[17] = 0xC1;
  22. head[18] = 0xD9;
  23. head[19] = 0x95;
  24. for(i=0; i<20; i++){
  25. Serial.write(head[i]);
  26. }
  27. }
  28. void setup() {
  29. Serial.begin(9600);
  30. }
  31. void loop() {
  32. if (digitalRead(5) == LOW) {
  33. speech();
  34. delay(1000);
  35. }
  36. }

效果:

红外触发语音播报

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/396622
推荐阅读
相关标签
  

闽ICP备14008679号