语音合成模块
大约 4 分钟约 1076 字
语音合成模块
传感器介绍
语音合成模块主要用于将文本(如中文GBK编码或英文)转换为音频信 号,以便通过外置喇叭播放。此模块特别支持中文GBK编码和英文文本的转换。需要注意的是,由于MicroPython不支持GBK编码,中文文本需要预先 通过计算机上的Python程序转换为GBK编码后,再传输给模块进行处理。 这一过程使得语音合成模块能够灵活地应用于各种场景,如智能设备、自动 化播报系统等,实现文字到语音的高效转换和播放。
![]() |
| 工作电压 | 5V |
|---|---|
| 类型 | 执行器 |
| 输入接口类型 | RJ12 |
| 音响接口类型 | 3.5mm音频线 |
| 喇叭接口类型 | XHB2.54-2P |
| 串口波特率 | 9600 |
| 外观尺寸 | 30*25*53mm |
| 适配类型 | 主板/扩展板 |
连线变换:跳线帽默认接左侧,此接法适用于信息科技实验板(MY_R-Tx,MY_T-Rx)
主板连接方式

扩展板(V1.0)连接方式
语音合成模块可以连接的扩展板的串口接口P13/P5,P6/P9,P3/P12,下图为P13/P5端口连接图

接线类型

① USB Type-C数据线
.png)
②PH2.0-4P转RJ12线

③6P6C-RJ12线

④XHB2.54-2P外接喇叭
程序代码(主板)
# -*- coding: utf_8 -*-
from npython import *
def send_text_voicexb(uart, text):
global speak_time, one_word_time, last_speak_time
data = text.encode("utf-8") # 编码数据格式为 UTF-8
data_len = len(data)
if data_len > 255:
raise ValueError(
"编码后数据长度 (%d 字节) 超过协议最大限制 255 字节,请缩短文本长度。"
% data_len
)
command_info = b"\x03\xe8" + bytes([data_len]) + data # 构建命令字
frame_len = 6 + len(command_info)
frame_content = frame_len.to_bytes(2, "big") + b"\x01\x00\x03" + command_info
checksum = sum(frame_content) % 256
packet = b"\x7e" + frame_content + bytes([checksum]) + b"\xef" # 构建完整数据
uart.write(packet)
# 语音合成初始化
uart1 = UART(1, 9600, rx=PINS[1], tx=PINS[0], timeout=10)
time.sleep(0.3)
add = b"\x7e\x00\x0a\x01\x00\x03\x03\xef\x01\x06\x07\xef" # 设置为UTF-8模式,具有掉电存储功能
# 7E 00 0A 01 00 03 03 EF 01 02 03 EF#设置为GBK模式,具有掉电存储功能
uart1.write(add)
time.sleep(0.3)
send_text_voicexb(uart1, "语音合成测试")
程序代码(扩展板)
# -*- coding: utf_8 -*-
from npython import *
def send_text_voicexb(uart, text):
global speak_time, one_word_time, last_speak_time
data = text.encode("utf-8") # 编码数据格式为 UTF-8
data_len = len(data)
if data_len > 255:
raise ValueError(
"编码后数据长度 (%d 字节) 超过协议最大限制 255 字节,请缩短文本长度。"
% data_len
)
command_info = b"\x03\xe8" + bytes([data_len]) + data # 构建命令字
frame_len = 6 + len(command_info)
frame_content = frame_len.to_bytes(2, "big") + b"\x01\x00\x03" + command_info
checksum = sum(frame_content) % 256
packet = b"\x7e" + frame_content + bytes([checksum]) + b"\xef" # 构建完整数据
uart.write(packet)
# 语音合成初始化
uart1 = UART(1, 9600, rx=PINS[5], tx=PINS[13], timeout=10)
time.sleep(0.3)
add = b"\x7e\x00\x0a\x01\x00\x03\x03\xef\x01\x06\x07\xef" # 设置为UTF-8模式,具有掉电存储功能
# 7E 00 0A 01 00 03 03 EF 01 02 03 EF#设置为GBK模式,具有掉电存储功能
uart1.write(add)
time.sleep(0.3)
send_text_voicexb(uart1, "语音合成测试")
程序说明
语音合成模块接实验板通用接口。其中send_text_voicexb(cqdata, encoding='utf-8')为语音编码输出函数,其中参数cqdata为输出内容。
运行效果
若接上外置喇叭,可以听到相应的编码的声音。

