一、为什么要做这件事?
大家坐地铁的时候应该都有体会——早高峰闸机口需要提醒“请刷卡出站”、站台上要播报“开往XX方向的列车即将进站”、换乘通道里得引导“前往X号线请往这边走”。这些语音提示如果全靠人工拿着大喇叭喊,既不现实也显得太原始。
所以现在地铁运营方都会部署智能语音设备,芯步的15W壁挂音箱就是其中比较常用的一款。问题来了:设备有了,怎么让咱们自己的软件系统“使唤”它? 也就是说,当闸机检测到有人刷错卡时,系统能自动让旁边的音箱喊一嗓子“请重新刷卡”。
这篇方案就是讲这件事怎么干——把15W语音音箱通过芯步的开放接口,接到你的地铁项目软件里。
二、先认识一下这个音箱
芯步的15W智能语音壁挂音箱Pro,有几个特点值得提一下:
功率15W:地铁站里环境嘈杂,功率小了听不清,15W基本能覆盖一个中等大小的站台区域或闸机口
WiFi联网:用2.4G WiFi,不需要额外布线拉信号线,接上电就能用
HTTP接口控制:这是最关键的——你不用管它底层怎么通信,直接发HTTP请求就能让它说话
真人发声:推送文字就能播,不用提前录MP3,支持男声女声切换
简单说,这玩意儿就是个“会说话的网络音箱”,你给它发一条HTTP请求,它就把文字念出来。
三、对接的整体思路
从软件层面看,对接的结构大概是这样的:
你的软件不需要直接和音箱打交道,中间经过芯步的平台。你只需要做两件事:
拿到凭证:去芯步的控制台注册个应用,拿到AppID和AppSecret
调用接口:在你的代码里发HTTP请求,告诉平台“让XX设备说XX话”
芯步这个开放平台是永久免费的,不管你是自己测试还是正式上线,调用接口都不收费。而且支持私有化部署,如果地铁内部网络要求不能连外网,可以把整套东西部署到内网环境。
四、具体怎么接?(手把手版)
第一步:准备工作
先去芯步官网注册个账号,登录后创建一个“工作台”,然后在“物联网控制台”里找到“开发设置”页面,你会看到两串关键信息:
AppID:你的应用ID,相当于用户名
AppSecret:你的应用密钥,相当于密码,别泄露给别人
同时把音箱配网,让它连上地铁站的WiFi。配网过程在控制台里有指引,跟着做就行。
第二步:搞清楚怎么让音箱说话
音箱有一个核心播报命令,格式是这样的:
这个play:gbk:16是什么意思?play表示播报,gbk表示文字编码(用GBK编码支持中文),16是音量级别。如果你想用男声或者调快语速,还有别的参数可以配。
完整的一批常用命令包括:
| 功能 | 命令示例 | 说明 |
|---|---|---|
| 播报文字 | {"play:gbk:16":"请勿倚靠车门"} | 最常用,音量16 |
| 调节音量 | {"volume":"8"} | 0-9,数字越大越响 |
| 切换音色 | {"voice":"1"} | 0女声,1男声 |
| 调节语速 | {"speed":"6"} | 0-9,数字越快 |
| 播放提示音 | {"message":"3"} | 内置提示音1-5 |
| 停止播报 | {"stop":"1"} | 紧急情况下用 |
第三步:计算签名(这个有点绕,但照做就行)
芯步的接口要求每个请求都带一个sign签名,防止别人乱调用。签名算法是:
其中ts是当前时间的秒级时间戳(10位数字)。说白了就是:先把你的AppSecret做一次MD5,然后在这个结果后面拼上时间戳,再对整个字符串做一次MD5。
不同编程语言的写法略有差异,但逻辑是一样的。比如用PHP就是:
用Python就是:
第四步:发请求让音箱播报
一切就绪后,构造一个HTTP POST请求:
请求地址:
请求体(JSON格式):
用curl测试的话大概是这样的:
如果一切顺利,接口会返回{"code":200