CATALOG

一、为什么要做这件事?

大家坐地铁的时候应该都有体会——早高峰闸机口需要提醒“请刷卡出站”、站台上要播报“开往XX方向的列车即将进站”、换乘通道里得引导“前往X号线请往这边走”。这些语音提示如果全靠人工拿着大喇叭喊,既不现实也显得太原始。

所以现在地铁运营方都会部署智能语音设备,芯步的15W壁挂音箱就是其中比较常用的一款。问题来了:设备有了,怎么让咱们自己的软件系统“使唤”它? 也就是说,当闸机检测到有人刷错卡时,系统能自动让旁边的音箱喊一嗓子“请重新刷卡”。

这篇方案就是讲这件事怎么干——把15W语音音箱通过芯步的开放接口,接到你的地铁项目软件里。

二、先认识一下这个音箱

芯步的15W智能语音壁挂音箱Pro,有几个特点值得提一下:

  • 功率15W:地铁站里环境嘈杂,功率小了听不清,15W基本能覆盖一个中等大小的站台区域或闸机口

  • WiFi联网:用2.4G WiFi,不需要额外布线拉信号线,接上电就能用

  • HTTP接口控制:这是最关键的——你不用管它底层怎么通信,直接发HTTP请求就能让它说话

  • 真人发声:推送文字就能播,不用提前录MP3,支持男声女声切换

简单说,这玩意儿就是个“会说话的网络音箱”,你给它发一条HTTP请求,它就把文字念出来。

三、对接的整体思路

从软件层面看,对接的结构大概是这样的:

你的软件不需要直接和音箱打交道,中间经过芯步的平台。你只需要做两件事:

  1. 拿到凭证:去芯步的控制台注册个应用,拿到AppID和AppSecret

  2. 调用接口:在你的代码里发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