CATALOG

芯步30W网络音频音柱的核心优势在于其全开放HTTP接口——只需向指定URL POST一个JSON,就能实现远程语音播报、暂停、音量调节等控制。以下从鉴权机制、核心命令、代码示例到播放状态管理,给出完整对接方案。

一、 对接概述

芯步的智能语音音柱(包括30W型号)摒弃了复杂的私有SDK或音视频协议,转而采用设备端TTS(文字转语音)HTTP API相结合的方式。

  • 对接原理:你的业务系统作为客户端,向芯步的开放API网关发送HTTP请求,携带控制指令(如播放、停止、音量调节)。云端将指令推送给对应ID的音柱,音柱接收到指令后,在本地合成语音并实时播放

  • 核心优势:无需处理音频文件上传,只需发送文本,设备端毫秒级响应(约80-120ms),支持公网/局域网,兼容任何编程语言

二、 关键对接步骤与鉴权

在开始编码前,请确保已在芯步平台完成设备配网,并获取了以下三个核心凭证:

  1. AppId: 应用唯一标识。

  2. AppSecret: 应用密钥(用于加密)。

  3. Device ID: 30W音柱的设备编号(如 820720)。

由于HTTP接口是开放的,为了防止恶意调用,所有请求必须携带签名(Sign)。其生成逻辑如下(伪代码逻辑):

注:ts 为秒级时间戳,主要用于防止请求重放攻击。

三、 实现“播放与暂停”的核心命令

针对 30W 网络音频音柱,要实现语音播报的播放与暂停控制,主要依赖 order 参数中的不同指令字段。

1. 播放/播报文本

这是最核心的功能。系统直接下发需要朗读的文字,音柱收到后会立刻打断当前播放并播报新内容。

  • 场景:实时通知、告警、工单派发。

  • 命令格式{"play:gbk:16": "你要播报的文字内容"}

  • 编码说明gbk 代表编码格式,16 代表音量或其他参数标识(通常保留默认)。

2. 停止/暂停播放

当需要紧急静默或停止长文本朗读时,使用停止指令。

  • 场景:紧急情况下的静音、下班关闭提示音。

  • 命令格式{"stop": "1"}

  • 效果:该命令会使音柱立即停止当前所有的语音输出

3. 音量调节(辅助控制)

音柱支持30W功率输出,音量过大或过小时可动态调节。

  • 命令格式{"volume": "5"} (音量级通常为0-9,数值越大声音越大)

四、 详细代码实现示例

以下以最常见的 PythonShell (Curl) 环境为例,展示如何发送一个完整的控制请求。

1. Python 实现示例

使用 requests 库构建请求,处理签名逻辑,控制音柱播放“仓库出货通知”并随后暂停。

2. Curl 命令行实现

适合在脚本或简单测试中使用。

五、 针对30W音柱的“播放状态”管理

虽然HTTP接口能快速下发指令,但由于30W音柱常用于公共场所(如车间、停车场),网络环境可能复杂且存在多用户控制冲突。为了确保“暂停”操作精准,采用以下架构优化:

  1. 引入业务ID(Serial No)进行回显校验在播放长文本时,可以在文本头部增加自定义标识。例如播报 “【ID:1001】请注意,XXX”。这虽然不是API的显式返回,但在无法通过MQTT获取设备状态的情况下,通过人为的语音播报前缀来辅助运维人员确认当前播放的任务来源。

  2. “先停后播”策略当前的 play 命令默认是“打断播报”。如果你的场景是必须确保前一条重要通知彻底消失(例如机器故障警报解除),无论当前是否有声音,都先发送 {"stop":"1"},等待极短延时(如100ms)后再发送 play 命令。这是一种确保音柱完全重置的“硬重置”方法

  3. 心跳与保活30W音柱多用于室外,依赖Wi-Fi/4G。虽然API接口本身是异步的,但在关键控制(特别是停止)场景下,如果音柱离线,指令将无法送达。集成设备状态查询接口(若有),或在UI上提示“设备离线,无法静音”。

六、 常见问题排查(针对“暂停”无效)

在对接过程中,如果发现执行了 {"stop":"1"} 但音柱依然在播放,通常由以下原因导致:

  • 签名错误 (401):检查时间戳 ts 是否与服务器时间相差过大(通常不能超过几分钟),以及签名算法中的拼接顺序(MD5结果是小写)

  • 设备ID错误:确认 device 字段是否填写的数字格式,该ID是否为30W大功率音柱的ID(不同型号的喇叭ID混用会导致指令不生效,但接口层面可能返回成功)。

  • 多点并发:如果多个业务系统同时在给该音柱下发指令,后发的 stop 指令可能在 play 指令到达之前被执行,导致播放继续。需确保逻辑上的串行化。