随着移动支付的普及,日常生活中很多时候我们都是采用扫码进行支付,当商家收到付款信息以后,会通过播报音箱将收款信息播放出来,从而快速的完成收款信息确认。
“千里传音”服务,是阿里云IoT针对带有语音播报能力的AIoT设备,提供的一个云端一体的解决方案。为播报提醒类设备应用提供从播报语料合成,语料管理,语料推送到设备,播报设备管理等完善功能,配合集成了端侧播报能力的HaaS设备,帮助用户高效完成播报类设备应的开发和长期运行。
本案例就是通过使用阿里云的千里传音和Python轻应用,快速的打造一个自己的播报音箱产品。
完成本案例的学习只需要M5StackCore2开发板一套即可。
登录阿里云物联网平台控制台页面。
如下图所示,依此点击“增值服务”->“选购增值服务”->“语音智能”,找到“千里传音语音播报服务”,点击“开通服务”。
在项目配置界面,有分别是服务配置和设备管理等选项,其中服务配置是用来配置千里传音服务的,主要是语料管理;设备配置是用来管理项目中设备列表的。
在“语料配置”中的点击“新增语料”,新增自定义语料界面如下:
其中语料标识和语料内容非常重要,语料标识必须是项目级别唯一标识符,它是作为语料组合调用时候的唯一标签,同时也作为设备端保存语料的文件名。语料内容指的就是我们要播报的文本。
除此之外,我们还需要选择此语料的“语音场景”,包括方言场景,童声场景,客服场景以及通用场景(选择不同的语音场景后,生成的语料特色也各不相同);自定义语料的播放速度;自定义语料的播报音量等。
选择不同的“语音场景”、“播报速度”及“播报音量”后点击“试听”直到得到自己满意的播报语料(是不是很有趣?)。
在设备管理界面,有多个标签页可选,默认选中的是“设备列表”标签。
2’. 如果需要创建多个设备可以点击“批量添加”按钮,此时会打开批量创建设备弹窗。
如下图所示,点击需要推送的语料,操作栏中的推送到设备按钮(下图中我们推送的语料id是yuan)
“单个设备”和“分组推送”模式,需要选择自己的设备名或者分组名,选中以后点击确定即可完成推送(需要等到设备端开发步骤完成后语料才能成功的推送到设备上)。
在进行下一步之前请确保M5StackCore2开发板已经烧录HaaSPython固件并且开发环境已经搭建完毕。详情请参考M5StackCore2快速开始的说明。
工程创建
如下图所示,打开VS Code之后在新建一个python工程,设定好工程名称(“broadcast_speaker”)及工作区路径。
点击"立即创建",创建一个Python轻应用的解决方案。这个步骤完成后,HaaS-Studio会自动从云端拉取broadcast_speaker模板的代码到本地。
本地工程创建完成后,只需要如下2步,就可以完成设备端的开发。
修改broadcast_speaker工程里main.py中wifiSsid和wifiPassword的值为读者实际要连接的路由器的名称及密码(请注意名称和密码都需要放在""符号中间)。
# Wi-Fi SSID和Password设置 wifi_ssid = "请填写您的路由器名称" wifi_password = "请填写您的路由器密码"
修改完成之后get_wifi_status函数中的代码就会连接读者自己设定的路由器。
修改broadcast_speaker工程里main.py中productKey、deviceName和deviceSecret的值为读者创建的物联网设备的三元组信息(三元组信息获取可以参考“语料推送”的鉴权信息图),如下所示:
# 三元组信息 productKey = "产品密钥" deviceName = "设备名称" deviceSecret = "设备密钥"
Python脚本的详细说明请参考脚本内嵌的文字版注释。
推送脚本到m5stackcore2上并运行,脚本运行后输出如下日志。其中:
==== python file check /data/pyamp/main.py ==== ==== python execute from /data/pyamp/main.py ==== remote speaker demo version - 1.0.3 wifi_connected: False wifi_connected: False wifi_connected: False ('192.168.3.113', '255.255.255.0', '192.168.3.1', '192.168.3.1') set on_connect and on_service callback, start connect sleep for 1 s establish tcp connection with server(host='xxx.iot-as-mqtt.cn-shanghai.aliyuncs.com', port=[443]) success to establish tcp, fd=54 物联网平台连接成功
在出现“物联网平台连接成功”之后就可以查看“语料推送”小节中的说明从云端推送语料到设备端。
我们已经将常用的音频文件放在了“broadcast_speaker”工程的resource目录下,在推送工程到设备的时候推送到了设备上,因此我们不需要再去重新创建语料,可以直接通过云端进行播报调试。
其中IotInstanceId在企业物联网平台的控制台主页可以看到,如下图:
点击"发起调试",设备端就可以听到支付宝到账10000元的播报提示。此时可以看到设备突出如下日志,其中: on service:代表收到云端的播报发送的服务请求,后面跟的是云端请求播报的语料的标识符。 ['xxx', 'yyy', 'zzz']:设备将接收到的云端标识符和本地语料路径进行组合获得的音频文件列表。
****** on service ******** zfbGet {$10000} yuan ['/data/pyamp/resource/zfbGet.wav', '/data/pyamp/resource/SYS_TONE_1.wav', '/data/pyamp/resource/SYS_TONE_MEASURE_WORD_wan.wav', '/data/pyamp/resource/yuan.wav']
来这里探索更多有趣案例
HaaS开发框架HaaS积木方案,赋能生态开发者,让您快速找到自己需要的解决方案,硬件主板与外设,以及各种应用组件。https://haas.iot.aliyun.com/solution