
前言
Python 語言的是一款非常容易使用的解釋性語言,它的主要特點如下:易學易用;可擴展可移植;豐富的三方庫,正是由于以上這些特點,使得Python在一些邏輯簡單,功能復雜的場景應用非常廣泛,近幾年,隨著人工智能的飛速發展,Python 的優點得到的充分的體現,因此成為了AI開發的首選語言,
Python輕應用主要是基于micropython實作,在保留了python語言主要特性的基礎上,他還對嵌入式系統的底層做了非常不錯的封裝,它的特點如下:
- 安全便捷的上云能力
依托阿里云物聯網平臺,通過客戶自定義物模型,滿足各種不同場景的的資料上云需求,同時通過阿里云安全團隊提供的ID2,保證資料安全, - 豐富強大的AI能力
背靠達摩院,提供150+ 視覺AI演算法,統一視覺演算法的呼叫流程,讓開發者通過簡單的幾個 API 實作各種不同場景的AI需求,
3. 簡單易用的開發除錯手段
基于vscode的IDE插件,提供代碼快速編輯功能,一鍵熱更新功能,實作應用開發和系統開發解耦,降低開發門檻,提高開發效率,
今天要介紹的是如何使用Python 輕應用,連接阿里云的千里傳音服務,打造一個播報音響產品,
方案介紹
什么是千里傳音?
“千里傳音”服務,是阿里云IoT針對帶有語音播報能力的AIoT設備,提供的一個云端一體的解決方案,為播報提醒類設備應用提供從播報語料合成,語料管理,語料推送到設備,播報設備管理等完善功能,配合集成了端側播報能力的HaaS設備,幫助用戶高效完成播報類設備應的開發和長期運行,
“千里傳音”服務以專案為單位來幫助客戶組織應用和管理設備,以便客戶面向不同的用戶來管理設備語料更新,以及批量或單個設備語料推送,同時,“千里傳音”服務為客戶應用提供云端API,通過傳入語料組合邏輯,及設備ID,就可以完成對端設備播報的呼叫,簡單省事,借助阿里云IoT平臺提供的高并發設備通信能力,幫助客戶無憂完成大規模設備部署和長期高可用運行,
它主要有三個部分組成:App,服務器,和播報設備

”千里傳音“,指的就是無論服務的使用者(App)和播放設備之間的物理距離有多遠,都可以通過服務器,將自己想要傳達的音頻資料,傳輸給相關播報設備進行播報,
- 服務的使用者,可以通過千里傳音服務提供的SDK和服務器進行通訊
目前千里傳音服務提供了多種編程語言的SDK,包括Java,JS,Python,PHP 等等,開發者可以選自自己熟悉的開發語言進行開發,除錯階段,可以使用在線除錯工具進行除錯, - 服務器通過MQTT將播放資源和指令下發給播放設備進行播放
目前設備支持本地音頻播放和在線音頻播放,在線音頻的播放需要通過物模型自定義服務,將音頻的url發送給設備端,本地音頻的播放,需要通過千里傳音SpeechPost服務先將音頻鏈接發送給設備端,設備端將音頻檔案以ID 命名并保存,當服務端需要播放的時候,將所有的音頻檔案按照ID 組合起來,通過SpeechBroadcast服務下發給設備端,設備端將音頻組合起來,進行播放,
千里傳音服務提供的能力如下:
● 專案管理
客戶通過專案形式管理不同應用場景中的設備和語料,
● 智能語料生成
通過人工智能演算法幫助客戶快速完成文字到固定播報語料的生成,支持wav和mp3格式輸出,
● 語料組合播報
通過遠程命令,告知特定設備將本地語料以特定順序組合后播報,并支持加入動態數字內容,
● 動態語料合成
支持用戶通過API生成動態播報語料,推送到端側播報,此類語料設備端采用在線播放的形式,將不固化到設備中,
● 語料空中推送
為客戶提供語料空中推送到單個和專案中全量設備的能力,實作設備端固化語料的更新,使設備播報語音內容變得可以運營,
● 云端API
為客戶提供平臺能力對應API,以實作上述播報能力的云端控制,
千里傳音軟體流程?
播報設備指的是阿里云的物聯網硬體設備HaaSEDUK1,App的使用的是在線除錯工具或者PC端的Python 應用,
具體的互動流程如下:

以上代碼邏輯,均在Python輕應用中實作,并上傳到了IDE的云端工程
物品清單
硬體
- HaaSEDUK1 開發板一塊
- 音頻擴展板一個
- usb 線 一根
- 喇叭一個

注意事項: 音頻擴展板以及喇叭購買鏈接請加入釘釘開發者群咨詢!
如何實作
韌體燒錄
請參考Python輕應用快速上手 中燒錄相關章節,
千里傳音產品和設備創建
請參考如何在物聯網平臺創建千里傳音產品和設備
輕應用工程創建和運行
- 創建BroadcastSounder輕應用工程,具體操作輕參考 工程創建

2.修改main.py 中的三元組資訊為第二步創建的千里傳音產品和設備資訊
productSecret = "xxxxxxxx"
productKey = "xxxxxxx"
deviceName = "xxxxxxx"
3. 推送到設備上運行(務必保證設定上已經保存了需要連接的wifi資訊,wifi熱點可用)
除錯
語料推送
在創建完成設備以后,我們就可以回到語料配置界面,將新增的語料推送到相應的設備上面進行測驗了,
如下圖所示,點擊需要推送的語料,操作欄中的推送到設備按鈕(下圖中我們推送的語料id是 yuan)

進入語料推送界面,如下圖所示,默認支持單個設備推送,分組推送和全部設備推送,

單個設備和分組模式,需要選擇自己的設備名或者分組名,選中以后點擊確定即可完成推送,
設備端在收到推送訊息以后會將語料下載到 /data/pyamp/resource/ 目錄中
組合播報
OpenAPI除錯
- 打開OpenAPI除錯并登錄
- 如下如所示,選中SpeechByCombination,選擇右側服務器華東(上海),設定我們需要發送的語音序列資訊,數字請使用{$xxx} 進行表示,其它語音請以此按照千里傳音后臺的語料ID 進行配置,最后設定需要除錯的設備DeviceName 和 ProductKey,

3. 點擊發起除錯即可
SDK除錯
- 安裝SDK核心庫
pip install aliyun-python-sdk-core
2. 修改如下Python代碼中的KeyID 和 Secret,并保存為SpeechByCombination.py
#coding=utf-8
from aliyunsdkcore.client import AcsClient
from aliyunsdkcore.request import CommonRequest
from aliyun_key import *
client = AcsClient(accessKeyId, accessSecret, 'cn-shanghai')
request = CommonRequest()
request.set_accept_format('json')
request.set_domain('iot.cn-shanghai.aliyuncs.com')
request.set_method('POST')
request.set_protocol_type('https') # https | http
request.set_version('2018-01-20')
request.set_action_name('SpeechByCombination')
request.add_query_param('RegionId', "cn-shanghai")
request.add_query_param('CombinationList.1', "welcome")
# request.add_query_param('CombinationList.1', "zfbGet")
# request.add_query_param('CombinationList.2', "{$10000.056}")
# request.add_query_param('CombinationList.3', "yuan")
request.add_query_param('ProductKey', "a1Ba4rCO9iM")
request.add_query_param('DeviceName', "py_voice_01")
response = client.do_action(request)
# python2: print(response)
print(str(response, encoding = 'utf-8'))
3. 執行python SpeechByCombination.py
開發者支持
如需更多技術支持,可加入釘釘開發者群,或者關注微信公眾號,

更多技術與解決方案介紹,請訪問HaaS官方網站https://haas.iot.aliyun.com,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/321421.html
標籤:其他
上一篇:博客第一步
下一篇:智能設備遠程運維服務指南
