跳至主要內容

语音合成模块

大约 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数据线

②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为输出内容。

运行效果

若接上外置喇叭,可以听到相应的编码的声音。

上次编辑于: