优秀的网站开发沈阳大东区做网站公司

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

优秀的网站开发,沈阳大东区做网站公司,网站建设.国风网络,网站建设公司douyanet【Arduino使用SNR9816TTS模块教程】 1.前言2. 硬件连接3. Arduino代码3.1 环境配置3.2 Arduino源码 4. 调试步骤5. 总结 1.前言 在今天的教程中#xff0c;我们将详细介绍如何使用Arduino IDE开发ESP32C3与汕头新纳捷科技有限公司生产的SNR9816TTS中文人声语音合成模块进行交… 【Arduino使用SNR9816TTS模块教程】 1.前言2. 硬件连接3. Arduino代码3.1 环境配置3.2 Arduino源码 4. 调试步骤5. 总结 1.前言 在今天的教程中我们将详细介绍如何使用Arduino IDE开发ESP32C3与汕头新纳捷科技有限公司生产的SNR9816TTS中文人声语音合成模块进行交互实现精准的语音播报功能。

  1. 硬件连接 名称端口功能购买地址ESP32C3TXGPIO01 RXGPIO01主控淘宝地址SNR9816TTSTXRX RXTXTTS模块淘宝地址 电源连接将SNR9816TTS模块的5V电源引脚连接到ESP32C3的5V输出端模块的GND引脚连接到ESP32C3的GND。 串口通信将SNR9816TTS模块的RX引脚连接到ESP32C3的GPIO01引脚模块的TX引脚连接到Arduino的GPIO00引脚。这里使用软件串口SoftwareSerial库模拟额外的串行通信端口。 音响喇叭(第 3、4 引脚)接到对应SPKN和SPKP引脚上官方喇叭响度有点大我拆了四六级听力耳机喇叭好多啦。 3. Arduino代码 首先确保您已经安装了ESPSoftwareSerial和UTF8ToGB2312库这两个库对于与SNR9816TTS模块的串口通信至关重要。 3.1 环境配置 Arduino IDE下载并安装 Arduino IDEESP32 开发板库在 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) { // Dont 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. 调试步骤 编译并上传将上述代码保存为.ino文件使用Arduino IDE编译并上传至您的开发板。检查硬件连接确保SNR9816TTS模块与Arduino之间的电源、GND及串口引脚连接正确。开启串口监视器在Arduino IDE中打开串口监视器设置波特率为115200bps观察输出信息。触发语音合成上传成功后Arduino将自动发送系统开机文本到SNR9816TTS模块。您应该能在串口监视器中看到系统开机的输出信息。听语音输出连接好喇叭或耳机到SNR9816TTS模块的SPKP引脚第3或4引脚监听是否有对应的语音播报。如果一切正常您应该能听到系统开机的语音输出。调整与调试根据实际听到的语音效果调整文本内容、发音人、语速、语调等参数重复上述步骤进行测试。若遇到问题可通过串口监视器查看通信状态或发送控制命令以查询模块状态。 注意在实际项目中您需要实现UTF8到GB2312的编码转换并根据SNR9816TTS模块的通信协议构造正确的命令帧。您可以使用现有的库或自定义函数来完成这一任务。此外确保为SNR9816TTS模块提供足够稳定的5V电源且电流能力至少为500mA。
  2. 总结 现在我们在本教程中您学习了如何使用ESP32c 3调用TTS模块教程。从而实现对外部世界进行感知充分认识这个有机与无机的环境后期会持续分享esp32跑freertos实用案列科学地合理地进行创作和发挥效益然后为人类社会发展贡献一点微薄之力。 如果你有任何问题可以通过下面的二维码加入鹏鹏小分队期待与你思维的碰撞 参考资源 TTS资料 软硬件资料 demoCode 链接https://pan.baidu.com/s/1SYjj6a_ruBu_QVHq4mydgg 提取码0000