基于Arduino的SYN6288语音TTS模块汉字中文英文数字混合发音代码示例

本文档介绍如何使用Arduino NANO或UNO电路板,配合SYN6288模块,通过发送特定编码数组实现中文发音。重点在于解决“今天气温12摄氏度”这类连读句子的发音问题,通过修改代码和利用UTF8到UNICODE转换,成功实现了连贯的发音功能。提供了完整的ino文件下载链接,方便读者直接使用。
摘要由CSDN通过智能技术生成

Arduino的NANO 电路板(UNO也可以使用),调用SYN6288,按固定格式给其发送编码数组,使其发音。

在网上找了好久,要么只支持英文,要么只支持汉字,一直没办法解决类似“今天气温12摄氏度”这种连读功能。

绕过去的方法是  “今天气温”+“12”+“摄氏度”。但这并不完美。

后来,在一遍PDF的帮助下,解决了这个问题,我修改了一些代码,增加了一些注释后,记录下来。


/*************声明软串口,避免占用硬串口导致的每次刷写插拔操作***********/
#include <SoftwareSerial.h>  
SoftwareSerial TTS_Serial(2,3);//用D2针做为RX,连接SYN6288的的TX口;用D3针做为TX,连接SYN6288的RX口;


void setup() 
{ /***********************初始化硬串口和软串口**************/
  Serial.begin(9600);
  TTS_Serial.begin(9600); //初始化软串口通信;

  spk("jzdriver宇音天下SYN6288模块123%");//输入 utf8 编码字符串
} 

void loop() 
{ 
/*
本示例参考了一个名为《SYN6288中文发声使用说明、》的PDF文档,在此感谢这位未知的作者
我在这基础上,进行了一些修改和注释
仅希望后人不要像我费心了好久才找到解决办法
jzdriver再次感谢所有热爱开源的人们
*/
  
}

void spk(unsigned char utf8str[])
{
/****************参数声明***************************
好的,下面是一个简单的Arduino控制SYN6288语音模块将温湿度传感器读取的变量通过语音播报的例子,代码如下: ```c++ #include <SoftwareSerial.h> #include <DHT.h> #define DHTPIN 2 // DHT11数据引脚连接到Arduino的2号引脚 #define DHTTYPE DHT11 // 使用DHT11温湿度传感器 SoftwareSerial mySerial(10, 11); // 定义软串口对象,RX为10,TX为11 DHT dht(DHTPIN, DHTTYPE); // 定义DHT11对象 float temperature, humidity; // 定义温湿度变量 void setup() { // 初始化串口通信 Serial.begin(9600); mySerial.begin(9600); // 初始化温湿度传感器 dht.begin(); } void loop() { // 读取温湿度传感器的数据 temperature = dht.readTemperature(); humidity = dht.readHumidity(); // 将温湿度数据转换为字符串 String tempStr = String(temperature, 1); String humStr = String(humidity, 1); // 拼接语音播报的字符串 String speechStr = "当前温度为" + tempStr + "摄氏度,当前湿度为" + humStr + "%"; // 发送语音播报指令 mySerial.write(0x7E); // 起始位 mySerial.write(0xFF); // 版本号 mySerial.write(0x06); // 数据长度 mySerial.write(0x0C); // 播放指令 mySerial.write(0x00); // 索引号高位 mySerial.write(0x00); // 索引号低位 mySerial.write(0x01); // 循环播放1次 mySerial.write(0x01); // 音量为1级 mySerial.write(speechStr.length()); // 数据长度 mySerial.print(speechStr); // 数据 mySerial.write(0xEF); // 结束位 // 延时一段时间 delay(5000); } ``` 这个示例代码中,我们使用了DHT11温湿度传感器来获取温湿度数据,然后将数据转换为字符串,并拼接成语音播报的字符串。通过串口通信,将语音播报指令发送给SYN6288语音模块,实现语音播报功能。需要注意的是,SYN6288语音模块需要与Arduino之间使用串口通信,因此我们使用了SoftwareSerial库来模拟一个软串口。 希望这个代码示例可以帮助您实现您的需求。如果您有任何问题,请随时提出。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值