从语音合成到语音识别:Gravity TTS模块与RDK X5 AI开发板实战测评

电子工程世界 2026-07-03 08:00


Gravity:中英文语音合成模块V2.0测评



作者:jinglixixi

在以往的语音播报应用中,主要是采用串口可知MP3语音模块的方式来实现,其特点是以TF卡来存储播放的语音片段,故语音片段的存储容量很充裕。其不足之处则是,事先需要录制或以语音合成的方式来制作语音片段,因而前期的准备工作较为繁琐。


此次测评的Gravity: 中英文语音合成模块则是一款支持中文、英文及中英文混合的文字转语音(TTS) 合成的功能模块,并具有发音自然准确的特点。


该模块采用Gravity标准接口,可提供I2C与UART双通信协议,且可以轻松兼容Arduino、micro:bit等主流主控板。其最大的优势在于即插即用,该模块板载了喇叭和音频电路,因而无需任何外接元件,单以简单的几行代码即可实现项目语音化工作,因而极大地降低了语音功能的应用门槛。


该模块的应用场景为机器人对话、智能家居提示、环境数据播报等场景,面向创客、教育工作者及开发者而设计。


该模块采用DFROBOT常见的黑色纸盒包装,见图1所示。


从语音合成到语音识别:Gravity TTS模块与RDK X5 AI开发板实战测评图1

图1 外包装


打开外包装后,是果糖般包装的模块和连接配件,见图2所示。


从语音合成到语音识别:Gravity TTS模块与RDK X5 AI开发板实战测评图2

图2 模块及配件

该模块的正反面器件布局见图3所示,其引脚用途见图4所示。


从语音合成到语音识别:Gravity TTS模块与RDK X5 AI开发板实战测评图3

图3 正反面器件布局


从语音合成到语音识别:Gravity TTS模块与RDK X5 AI开发板实战测评图4

图4 引脚功能


该模块的技术规格为:


该模块支持I2C和UART两种通讯模式,有板载的开关可进行模式的切换。


通过连接的卡槽可限定连接的准确性,从而可以避免因连接的错误所导致的模块损伤。


从语音合成到语音识别:Gravity TTS模块与RDK X5 AI开发板实战测评图5

图5 导线连接


应用开发初探

有别于用MP3语音模块播放的方式来输出语音提示信息,该功能模块在使用时需要需要软硬的配合方可实现,所支持的主控板有Arduino UNO、ESP32、micro:bit等,见图1所示。相应的编程环境有Mind+、Arduino IDE、Python等。


从语音合成到语音识别:Gravity TTS模块与RDK X5 AI开发板实战测评图6

图1 常见主控板


Arduino UNO为例,两种通信模式的连接方式如图2所示。

从语音合成到语音识别:Gravity TTS模块与RDK X5 AI开发板实战测评图7

 图2 连接方式

以使用Mind+为例,在完成软件下载后,其内容如图3所示。


从语音合成到语音识别:Gravity TTS模块与RDK X5 AI开发板实战测评图8

 图3 下载内容

在完成安装后,其界面如图4所示。


从语音合成到语音识别:Gravity TTS模块与RDK X5 AI开发板实战测评图9

图4 软件界面 

在该界面中,提供了多种编程模式,如实时模式、上传模式、Python积木模式及microPython积木模式等。


为便于测试,就选取了Python积木模式,见图5所示。该模式支持在电脑或行空板M10上运行,尽管咱没有行空板,电脑起码还是有的。


从语音合成到语音识别:Gravity TTS模块与RDK X5 AI开发板实战测评图10

图5 模式选取


在进入该模式后,其界面分布如图6所示。在模块栏可选取编辑程序所需的功能模块,在资源文件栏有所选模块的拼接组件,在编辑栏可使用组件拼接程序,在运行栏可观察到拼接后的程序代码,在终端窗口则可观察程序的运行结果。


以图中所拼接的程序为例,它会每隔1秒就打印一次“Hello World”。


从语音合成到语音识别:Gravity TTS模块与RDK X5 AI开发板实战测评图11

图6 程序搭建及测试

至此,说明在不连接开发板的情况下,用该软件也可进行程序的测试。后面的测试任务就是该软件如何通过串口来控制中英文语音合成模块。


以RA2E1开发板控制语音播报

打算通过官方建议的开发板来控制语音合成模块进行语音播报,遗憾的是在Mind+软件时无论是离线的还是在现,在串口连接成功后,却无法进行程序的下载。


改用Arduino IDE开发,在程序编译时也没有问题,但在下载时也不成功。

无奈之下,只能走第三条路线,即解析指令直接以串口来控制语音合成及播报。


在破译指令协议的情况下,至于实现了语音合成及播报。


这里选取的开发板是RA-Eco-RA2E1-V1.0开发板,经RASE的配置可生成相应的KEIL工程框架,随后经功能程序的添加,即可实现串口通信功能。


从语音合成到语音识别:Gravity TTS模块与RDK X5 AI开发板实战测评图12

图1 参数配置


添加的功能程序为:

unsigned char cmd3[] = {0xFD0x000x0B0x010x000x310x200x320x200x330x200x340x200x35};unsigned char cmd5[] = {0xFD0x000x0C0x010x030x110x620x310x720x600x4F0x2D0x4E0xFD0x56};void hal_entry(void){int i=0;err = R_SCI_UART_Open(&g_uart9_ctrl, &g_uart9_cfg);assert(FSP_SUCCESS == err);err = R_SCI_UART_Read(&g_uart9_ctrl, uart_rx_buffer, 1);assert(FSP_SUCCESS == err);_write(cmd3,14);while(1){      if(uart_receive_complete_flag)      {          uart_receive_complete_flag = false;          if(uart_rx_buffer[0] == 0x41 )          {               if(i==0)               {                      _write(cmd5,15);               }               else               {                      _write(cmd3,14);               }               i=(i+1)%2;          }          err = R_SCI_UART_Read(&g_uart9_ctrl, uart_rx_buffer, 1);          assert(FSP_SUCCESS == err);      }            R_BSP_SoftwareDelay (3000, BSP_DELAY_UNITS_MILLISECONDS);}}

经程序的编译和下载,其测试结果如图2所示,说明程序设计正确。


从语音合成到语音识别:Gravity TTS模块与RDK X5 AI开发板实战测评图13

图2 测试结果 

从语音合成到语音识别:Gravity TTS模块与RDK X5 AI开发板实战测评图14

图3 器件连接
中英文信息的合成与播放

其实在了解播放指令协议的基础上,没有开发板也照样可用控制语音的合成与播放,无非是通过串口来发送指令罢了。利用开发板的主要原因无非是借助于开发板将播放的内容包装成相应的控制指令而已。


只要了解其指令的协议构成,用串口依然可用进行语音合成与播放。


以播放语音“AB”为例,在波特率为115200bps的情况下,按图1所示发送HEX码即可得到预期的效果,其回文是41H。


从语音合成到语音识别:Gravity TTS模块与RDK X5 AI开发板实战测评图15

图1 播放测试


此外,经测试它是不区分大小写,见图2所示。


从语音合成到语音识别:Gravity TTS模块与RDK X5 AI开发板实战测评图16

图2 大小写测试

在日常应用中,涉及最多的是数值播报功能,当然对于有视觉障碍的人群来说,其意义更明显。


由于连续播报的原因,在数字间应适当地添加空格加以停顿和分断,其测试结果见图3所示。


从语音合成到语音识别:Gravity TTS模块与RDK X5 AI开发板实战测评图17

图3 数字发音测试 

此外,还可以对问候语进行测试,见图4所示,其效果不是很满意。


从语音合成到语音识别:Gravity TTS模块与RDK X5 AI开发板实战测评图18

图4 词语测试

对我们来说,中文发音才是最实用的,图5是测试“个十百千万”的发音结果。


从语音合成到语音识别:Gravity TTS模块与RDK X5 AI开发板实战测评图19

图5 数量级发音测试

至此,字符、数字、词语以及中文就都可以播放啦!



RDK X5 ROS机器人AI开发板测评



作者:空耳-

非常荣幸能够参与RDK X5 ROS机器人AI开发板的测评。最吸引我的,莫过于它搭载的10 TOPS强劲算力,为边缘端AI应用提供了坚实保障。


从外观上看,RDK X5的板型设计与树莓派5高度一致,尺寸、接口布局几乎如出一辙,这也意味着可以方便地使用为树莓派设计的部分配件和扩展板。


从语音合成到语音识别:Gravity TTS模块与RDK X5 AI开发板实战测评图20  

从语音合成到语音识别:Gravity TTS模块与RDK X5 AI开发板实战测评图21


从外包装上看RDK X5的外包装明显比树莓派5更加厚重,详细的细节对比如下:

核心差异

对比维度
RDK X5
树莓派5
结论
AI算力10 TOPS
 BPU专用加速
依赖CPU/外接NPU
X5完胜
,原生AI推理能力是最大亮点
CPU架构
八核Cortex-A55
四核Cortex-A76
树莓派单核性能更强,X5多核均衡
USB接口4×USB 3.0
2×USB 3.0 + 2×USB 2.0
X5的USB带宽更充裕
网络
Wi-Fi 6 + 蓝牙5.4
Wi-Fi 5 + 蓝牙5.0
X5无线规格领先一代
视频输出
全尺寸HDMI
micro HDMI ×2
X5实用性好
,无需转接线
价格
约623-776元
约500-600元
X5略贵,但算力加持下性价比突出


唯一可惜的是两者都没有emmc,都需要外接sd卡。最后就是两张RDK X5的靓图:


从语音合成到语音识别:Gravity TTS模块与RDK X5 AI开发板实战测评图22

从语音合成到语音识别:Gravity TTS模块与RDK X5 AI开发板实战测评图23


本次我们来一步步实现这个“语音控制LED”项目,步骤如下:

一,环境搭建

1.1 硬件环境准备

请确保带麦克风的音频设备已正确连接到RDK X5的3.5mm接口,或者采用USB麦克风。我这里使用的是USB麦克风。


从语音合成到语音识别:Gravity TTS模块与RDK X5 AI开发板实战测评图24

从语音合成到语音识别:Gravity TTS模块与RDK X5 AI开发板实战测评图25

1.2 软件环境准备

本次使用的语音识别算法是官方SenseVoice语音算法包(该包会自动下载约470MB的模型文件,安装过程可能需要几分钟)。


# 1. 更新软件源sudo apt update# 2. 一键安装语音包sudo apt install tros-humble-sensevoice-ros2

第二步:语音识别开发与GPIO控制(核心代码)

#!/usr/bin/env python3import rclpyfrom rclpy.node import Nodefrom rclpy.qos import QoSProfile, QoSReliabilityPolicy, QoSDurabilityPolicy
# 导入 /audio_smart 的消息类型try:    from audio_msg.msg import SmartAudioData    MSG_TYPE = SmartAudioData    HAS_MSG = Trueexcept ImportError:    print("Warning: audio_msg not found, using fallback")    from rclpy.msg import Any    MSG_TYPE = Any    HAS_MSG = False
# 板载 ACT LED 的控制路径LED_BRIGHTNESS_PATH = "/sys/class/leds/ACT/brightness"
def set_led(state):    """state: True 熄灭, False 点亮"""    with open(LED_BRIGHTNESS_PATH, 'w'as f:        f.write('0' if state else '1')
class VoiceLEDControl(Node):    def __init__(self):        super().__init__('voice_led_control')        self.get_logger().info("使用 ACT LED 进行控制")
        # 设置与 /audio_smart 匹配的 QoS        qos = QoSProfile(            depth=10,            reliability=QoSReliabilityPolicy.RELIABLE,            durability=QoSDurabilityPolicy.VOLATILE        )
        self.sub = self.create_subscription(            MSG_TYPE,            '/audio_smart',            self.callback,            qos        )        self.get_logger().info("已订阅 /audio_smart,等待语音命令...")
    def callback(self, msg):        if HAS_MSG:            cmd = msg.cmd_word        else:            cmd = getattr(msg, 'cmd_word'str(msg))
        self.get_logger().info(f"收到命令: {cmd}")
        if cmd == "开灯":            set_led(True)            self.get_logger().info("ACT LED 已点亮")        elif cmd == "关灯":            set_led(False)            self.get_logger().info("ACT LED 已熄灭")
def main(args=None):    rclpy.init(args=args)    node = VoiceLEDControl()    try:        rclpy.spin(node)    except KeyboardInterrupt:        node.get_logger().info("用户中断,退出")    except Exception as e:        node.get_logger().error(f"错误: {e}")    finally:        node.destroy_node()        rclpy.shutdown()
if __name__ == '__main__':    main()

第三步:运行与测试

  1. 开启语音识别另开一个新终端,执行以下命令启动SenseVoice节点。

source /opt/tros/humble/setup.bash          # 配置ROS2环境变量[reference:8]ros2 run sensevoice_ros2 sensevoice_ros2 --ros-args -p micphone_name:=plughw:1,0    # 运行SenseVoice节点

从语音合成到语音识别:Gravity TTS模块与RDK X5 AI开发板实战测评图26

2.另开一个新终端,查看话题列表

source /opt/ros/humble/setup.bashros2 topic list

3.修改命令词

sudo nano /opt/tros/humble/lib/sensevoice_ros2/config/cmd_word.json

从语音合成到语音识别:Gravity TTS模块与RDK X5 AI开发板实战测评图27

4.运行控制脚本:再开一个终端,在脚本所在目录执行以下命令。


source /opt/ros/humble/setup.bashpython3 led.py
5.发出语音指令:对着麦克风清晰说出“开灯”或“关灯”,即可看到LED的亮起与熄灭。

资源推荐



精彩文章推荐


· END ·

请将我们设为“星标”,这样就会第一时间收到推送消息。

欢迎关注EEWorld旗下订阅号:“机器人开发圈”

声明:内容取材于网络,仅代表作者观点,如有内容违规问题,请联系处理。 
AI 开发板 语音识别
more
最强Cortex-M85单片机,测评免费送开发板!
微核芯携高性能RISC-V处理器及开发板亮相2026中关村论坛中关村常设展
从开箱到实战:STM32U385RG开发板30天体验全记录【MCU优选 第11期】
奔驰发布开源汽车开发板
【瑞萨RA MCU软件架构与开发实践】系列直播,看直播抽开发板、定制礼物!
RDK S600 要来 Xbotics 现场了:一起上手开发板,把 Demo 跑起来
从语音合成到语音识别:Gravity TTS模块与RDK X5 AI开发板实战测评
1.9秒!这块99元的国产开发板如何让工业HMI实现“秒级开机”?
极海APM32E030R Micro-EVB开发板评测合集!【国产MCU专栏 第123期】
【0元领板赢LABUBU】极海APM32E030/F402 Micro-EVB开发板测评活动即可得到!
Copyright © 2025 成都区角科技有限公司
蜀ICP备2025143415号-1
  
川公网安备51015602001305号