当前位置: 首页 > news >正文

1元做网站方案凡科建站

1元做网站方案,凡科建站,怎么让google收录网站,陕西省城乡住房建设部网站【Arduino使用SNR9816TTS模块教程】 1.前言2. 硬件连接3. Arduino代码3.1 环境配置3.2 Arduino源码 4. 调试步骤5. 总结 1.前言 在今天的教程中,我们将详细介绍如何使用Arduino IDE开发ESP32C3与汕头新纳捷科技有限公司生产的SNR9816TTS中文人声语音合成模块进行交…

【Arduino使用SNR9816TTS模块教程】

  • 1.前言
  • 2. 硬件连接
  • 3. Arduino代码
    • 3.1 环境配置
    • 3.2 Arduino源码
  • 4. 调试步骤
  • 5. 总结

1.前言

在今天的教程中,我们将详细介绍如何使用Arduino IDE开发ESP32C3与汕头新纳捷科技有限公司生产的SNR9816TTS中文人声语音合成模块进行交互,实现精准的语音播报功能。

2. 硬件连接

名称端口功能购买地址
ESP32C3TXGPIO01 RXGPIO01主控淘宝地址
SNR9816TTSTXRX RXTXTTS模块淘宝地址
  1. 电源连接:将SNR9816TTS模块的5V电源引脚连接到ESP32C3的5V输出端,模块的GND引脚连接到ESP32C3的GND。

  2. 串口通信:将SNR9816TTS模块的RX引脚连接到ESP32C3的GPIO01引脚,模块的TX引脚连接到Arduino的GPIO00引脚。这里使用软件串口(SoftwareSerial)库模拟额外的串行通信端口。

  3. 音响:喇叭(第 3、4 引脚)接到对应SPKN和SPKP引脚上,官方喇叭响度有点大,我拆了四六级听力耳机喇叭好多啦😘😘😘。

在这里插入图片描述

3. Arduino代码

首先,确保您已经安装了ESPSoftwareSerial和UTF8ToGB2312库,这两个库对于与SNR9816TTS模块的串口通信至关重要。

3.1 环境配置

  1. Arduino IDE:下载并安装 Arduino IDE;
  2. ESP32 开发板库:在 Arduino IDE 中添加 ESP32 支持;
    参考博客:【esp32c3配置arduino IDE教程】
    为安装过程留出一些时间,具体时间可能因您的互联网连接而异。

3.2 Arduino源码

//first you should install ESPSoftwareSerial and UTF8ToGB2312 liberary
#include <SoftwareSerial.h>
#include "UTF8ToGB2312.h"#define MYPORT_TX 0
#define MYPORT_RX 1EspSoftwareSerial::UART myPort;uint8_t voicedata[] = { 0xFD, 0x00, 0x06, 0x01, 0x01, 0x5B, 0x76, 0x31, 0x5D };  //voicedata[7] =  0x31 ~ 0x39
uint8_t mandata[] = { 0xFD, 0x00, 0x06, 0x01, 0x01, 0x5B, 0x6D, 0x31, 0x5D };
uint8_t wemandata[] = { 0xFD, 0x00, 0x06, 0x01, 0x01, 0x5B, 0x6D, 0x30, 0x5D };
void setup() {Serial.begin(115200);myPort.begin(115200, SWSERIAL_8N1, MYPORT_RX, MYPORT_TX, false);if (!myPort) {  // If the object did not initialize, then its configuration is invalidSerial.println("Invalid EspSoftwareSerial pin configuration, check config");while (1) {  // Don't continue with invalid configurationdelay(1000);}}speech("系统开机");delay(1000);for (int i = 0; i < sizeof(voicedata) / sizeof(voicedata[0]); i++) {myPort.write(voicedata[i]);}delay(1000);speech("系统音量以调小");// delay(2000);for (int i = 0; i < sizeof(mandata) / sizeof(mandata[0]); i++) {myPort.write(mandata[i]);}delay(2000);speech("系统初始化男声成功");// delay(1000);// voicedata[7] = 0x31;for (int i = 0; i < sizeof(wemandata) / sizeof(wemandata[0]); i++) {myPort.write(wemandata[i]);}delay(2500);speech("系统初始化女声成功");// delay(5000);
}void loop() {//  speech("  系统初始化成功,网络地址如下");delay(1000);
}void speech(String data) {//0--空闲  1--繁忙  2--异常while (workstate() > 0) {if (workstate() == 1) Serial.println("tts busy");if (workstate() == 2) Serial.println("tts wrong");}String utf8_str = data;String gb2312_str = GB.get(utf8_str);unsigned char head[gb2312_str.length() + 6];// 定义无符号字符类型数组,将 GB2312 编码的字符串复制到数组中unsigned char gb2312_data[gb2312_str.length() + 1];memset(gb2312_data, 0, sizeof(gb2312_data));strncpy((char *)gb2312_data, gb2312_str.c_str(), gb2312_str.length());// head bytehead[0] = 0xFD;// length bytesunsigned int dat_len = gb2312_str.length() + 3;head[1] = dat_len >> 8;head[2] = dat_len;// cmd bytehead[3] = 0x01;// para bytehead[4] = 0x01;// send each character individuallyfor (int i = 0; i < gb2312_str.length(); i++) {head[i + 5] = gb2312_data[i];}// 计算异或值并添加到数组,额这个是syn那个芯片的例程,这个异或计算有没有用我懒得改了。反正代码能跑。head[gb2312_str.length() + 5] = head[0];for (int i = 1; i < gb2312_str.length() + 5; i++) {head[gb2312_str.length() + 5] ^= head[i];}// 发送字符数组到串口for (int j = 0; j < gb2312_str.length() + 6; j++) {myPort.write(head[j]);}delay(gb2312_str.length() * 300);Serial.println(data);
}
// 查询tts合成工作状态 返回1表示繁忙 0表示空闲
int workstate() {unsigned char head[4] = { 0xFD, 0x00, 0x01, 0x21 };// 发送字符数组到串口for (int j = 0; j < 4; j++) {myPort.write(head[j]);}// 等待myPort的返回while (myPort.available() < 1) {// 可以在这里加入一些延时,以防止过快地查询delay(150);}// 读取并处理返回的数据byte response = myPort.read();// 返回相应的状态值if (response == 0x4E) {// 繁忙return 1;} else if (response == 0x4F) {// 空闲return 0;} else {// 未知状态,可以根据需要进行处理return 2;}
}

代码解析

本代码示例旨在为ESP(如ESP32或ESP8266)开发项目实现语音控制和文本转语音(TTS)功能,利用ESPSoftwareSerial库实现软件串口通信,以及UTF8ToGB2312库进行字符编码转换以及男女声音切换。

4. 调试步骤

  1. 编译并上传:将上述代码保存为.ino文件,使用Arduino IDE编译并上传至您的开发板。
  2. 检查硬件连接:确保SNR9816TTS模块与Arduino之间的电源、GND及串口引脚连接正确。
  3. 开启串口监视器:在Arduino IDE中打开串口监视器,设置波特率为115200bps,观察输出信息。
  4. 触发语音合成:上传成功后,Arduino将自动发送系统开机文本到SNR9816TTS模块。您应该能在串口监视器中看到系统开机的输出信息。
  5. 听语音输出:连接好喇叭或耳机到SNR9816TTS模块的SPKP引脚(第3或4引脚),监听是否有对应的语音播报。如果一切正常,您应该能听到系统开机的语音输出。
  6. 调整与调试:根据实际听到的语音效果,调整文本内容、发音人、语速、语调等参数,重复上述步骤进行测试。若遇到问题,可通过串口监视器查看通信状态或发送控制命令以查询模块状态。

注意:在实际项目中,您需要实现UTF8到GB2312的编码转换,并根据SNR9816TTS模块的通信协议构造正确的命令帧。您可以使用现有的库或自定义函数来完成这一任务。此外,确保为SNR9816TTS模块提供足够稳定的5V电源,且电流能力至少为500mA。
在这里插入图片描述

5. 总结

🥳🥳🥳现在,我们在本教程中,您学习了如何使用ESP32c
3调用TTS模块教程。🛹🛹🛹从而实现对外部世界进行感知,充分认识这个有机与无机的环境,后期会持续分享esp32跑freertos实用案列🥳🥳🥳科学地合理地进行创作和发挥效益,然后为人类社会发展贡献一点微薄之力。🤣🤣🤣

如果你有任何问题,可以通过下面的二维码加入鹏鹏小分队,期待与你思维的碰撞😘😘😘

参考资源: TTS资料 软硬件资料 demoCode
链接:https://pan.baidu.com/s/1SYjj6a_ruBu_QVHq4mydgg 提取码:0000

http://www.dt0577.cn/news/15070.html

相关文章:

  • 如何外贸seo网站建设网站关键词优化应该怎么做
  • 网站开发时数据库的工作商业推广
  • 河北网站建设电话seo建站系统
  • 百度云服务器搭建网站步骤企业宣传软文
  • wordpress 政府 模板百度seo技术优化
  • 去哪个网站找建筑图纸西点培训学校
  • 做婚庆网站的功能定位太原关键词排名提升
  • 上海本地生活论坛江北关键词优化排名seo
  • 金方时代做网站怎么样大连百度关键词优化
  • 做数据分析的网站关键词林俊杰mp3免费下载
  • 做网站ps能用美图秀秀么百度搜索引擎入口
  • 外贸网站建设560元黑帽seo排名优化
  • 做ps可以在哪些网站上找素材河南seo
  • 潍坊企化网站建设搜索引擎关键词优化方案
  • 广州网站建设外包成都网站排名生客seo怎么样
  • 河南网站怎么备案搜索引擎营销的英文缩写是
  • 朝阳建设局网站今日国内热点新闻头条事件
  • 网站做一样没有侵权吧学习软件的网站
  • 建网站麻烦吗百度seo报价方法
  • 动态网站开发常用流程seo分析案例
  • 简述网站建设步骤怎么去做推广
  • 温州云海和联欣哪个做网站比较好站长素材官网免费
  • 手机网站专业代做能翻到国外的浏览器
  • 手机软件制作和做网站相同长沙网站快速排名提升
  • 做海报的简易网站seo引擎优化
  • 做网站那个语言好2345网址导航智能主板
  • 网站建设 dw 时间轴自己怎么做网址
  • 在长沙阳光医院做网站编辑宁德市旅游景点大全
  • 有域名怎么建网站中国网站排名
  • 做一个学校网站怎么做我想注册一个网站怎么注册