CATALOG

芯步的40W壁挂音箱开放了标准HTTP接口,文本推送的核心是签名计算命令结构。以下方案涵盖接口原理、签名算法、代码示例及进阶玩法,可直接复用。

一、 对接概述与前置准备

1.1 适用产品确认

本文方案适用于芯步 智能语音壁挂音箱Pro 40W 型号(UNI-YY-YX-BG-PRO-40W)。该设备支持WiFi 2.4G/有线以太网连接,拥有40W大功率发声单元,适合会议室、车间、大厅等大面积室内场景

1.2 准备关键参数

在开始对接前,请登录芯步开发者后台获取以下信息:

  • AppID:应用的唯一标识(在控制台的“开发设置”中获取)。

  • AppSecret:用于计算签名,保障接口调用安全。

  • Device ID:设备的唯一标识(在控制台“设备列表”或设备铭牌上查看,支持在命令中传入多个ID,用逗号隔开)。

二、 接口协议详解

该设备的控制核心是一个支持POST方法的HTTP接口,请求与响应均为JSON格式。

2.1 请求地址(Endpoint)

POST https://api.thingboot.com/{AppId}/device/control/?sign={sign}&ts={ts}
  • {AppId}:路径参数,替换为你的应用ID。

  • sign:动态请求签名。

  • ts:Unix时间戳(秒)。

2.2 安全机制 —— 签名算法

接口采用双重MD5加密防止重放攻击,生成sign的步骤必须严格按照以下逻辑在Server端实现

  1. AppSecret 进行一次MD5加密,得到 secret_md5

  2. secret_md5 拼接上当前时间戳 ts(字符串格式),得到 tmp_str

  3. tmp_str 再次进行MD5加密,得到最终的 sign(32位小写)。

公式:sign = MD5( MD5(AppSecret) + ts )

2.3 请求Body结构

  • device:字符串,必填。指定受控设备。

  • order:对象,必填。定义具体动作指令。

三、 核心功能:文本语音合成推送

这是最常用的功能,即将字符串文本实时合成为语音并播放。

3.1 播报指令

order对象中,使用 "play:gbk:16" 作为Key,待播报文本作为Value。

技术特性:该指令触发设备端芯片级TTS,支持GBK编码字符集,实测响应延迟约80-120ms

3.2 语音参数调节

若需改变播放音色或语速,可通过辅助指令预先设置。这些指令同样通过order字段发送,一般在播报前调用。

功能指令Key取值范围示例
音量volume0-9 (9为最大){"volume": 7}
音色voice0(女声,默认),1(男声){"voice": 1}
语速speed0-9 (5为正常){"speed": 6}
语调tone0-9 (5为正常){"tone": 5}
停止播报stop"" (空或任意值){"stop": ""}

数据格式:数据均为 Key:Value 对。

四、 实战代码示例(HTTP文本推送)

以下示例展示如何通过代码构建合法的签名请求,并推送文本。

4.1 Python 3 实现

4.2 Java (Unirest) 实现

五、 高级特性与场景优化

5.1 多播控制与分组广播

芯步接口支持一次性向多个设备推送相同消息,只需在device字段中用英文逗号拼接设备ID

5.2 多音字与数字读法优化

针对中文多音字和数字格式,系统内置了智能处理引擎

  • 数字读法:金额(100元 → 一百元)、手机号(138... → 幺三八...)自动识别。

  • 自定义停顿:在文本中加入
    或特定标点符号调节语速节奏。

5.3 混合提示音播报

在实际业务中,往往希望先播放一声“叮咚”或“警报”再播报内容。采用分步调用或一次性构建复杂命令(具体视固件支持),或者代码中先发送ring指令,间隔200ms再发送play指令

六、 常见问题排查

  1. HTTP 401/403 签名错误

    • 检查时间戳ts是否为Unix秒级时间戳,且与服务器时间误差不宜超过5分钟。

    • 确认ts在计算签名和拼接URL时使用的是同一个字符串值。

    • 确认签名经过两次MD5,且第一次MD5后的字符串拼接ts时无任何分隔符。

  2. 设备不在线

    • 确保设备供电正常并连接了2.4G WiFi(注意不支持5G WiFi频段)

    • 设备后台可能开启了“离线休眠”,尝试先发送一条stopvolume唤醒设备。

  3. 文本播报乱码或无声音

    • 确认play:gbk:16中的编码标注与文本编码一致,一般中文环境使用GBK或UTF-8兼容模式。

    • 检查volume音量值是否设置为0。

总结

要完成“HTTP接口文本推送”,核心在于 签名的正确计算order字段的灵活运用。芯步的开放接口屏蔽了底层硬件细节,开发者只需按照上述RESTful规范集成,通常1小时内即可完成从注册到第一个“Hello World”语音的推送全流程。