本文主要介紹如何基于HaaS100硬體平臺搭建“云端釘一體”(阿里云IoT平臺 + HaaS100 + 釘釘小程式)的智能語音播放器,
該智能語音播放器包含如下功能,
- 小程式:加載/卸載HaaS100上的聲卡模塊,
- 小程式:TTS (Text to Speech),智能語音合成功能,
- 小程式:開始/停止錄音,錄音檔案路徑/data/rec.pcm
- 小程式:音樂播放功能,例如音量調節/播放/暫停/上一首/下一首/播放串列等,
- 本地CLI: 音量調節,本地音樂/ 網路音樂播放(.mp3, .m4a等格式)等,
- 本地CLI: TTS (Text to Speech),智能語音合成功能,
1、端測:硬體平臺搭建

圖1: HaaS100智能語音播放器系統框架
基于HaaS100開發“云端釘一體”的智能語音播放器,需要的硬體模塊包括:
- HaaS100開發版(電源/ WIFI天線): 購買HaaS100硬體套裝時已經提供,
- microUSB資料線,
- 模擬MIC:硅麥一般有正負兩級,HaaS100和硅麥的正/負極之間分別需要“1uF電容 + 2K電阻”上/下拉濾波,確保HaaS100可以采集到干凈清晰的錄音信號,具體連接方式參考上圖,
- 喇叭:分為3線(VCC + GND + DIN)和4線(VCC + GND + DIN_P + DIN_N)兩種經典的喇叭連接方式,上圖中我們采用的是3線制喇叭,和HaaS100的連接參考上圖,
2、端測:軟體開發
2.1、AliOS Things開發環境準備
- AliOS Things基礎工具:aos-cube, git工具安裝,
- VS code IDE:《使用VS code IDE開發》
- HaaS100代碼獲取、編譯、燒錄:《HaaS100快速開始》
2.2、代碼修改
2.2.1、原始碼介紹

圖2: 云端釘一體智能語音播放器軟體框架
云端釘一體智能語音播放器軟體模塊包括:
- audio_demo: 主要打通HaaS100和阿里云物聯網平臺連接、通信,物模型決議,播放器功能邏輯的實作,
- uVoice組件:是AliOS Things上智能語音解決方案的核心組件,提供了本地音頻,URL音頻,TTS合成等基礎功能,音頻格式支持mp3, m4a, wav, opus等主流格式,
- A2SA組件:是AliOS Things上音頻服務框架,兼容ALSA應用介面訪問,支持音頻硬體驅動抽象,多音頻驅動加載/卸載,VFS介面支持等功能,多播放焦點管理,混音,softvol,重采樣等功能設計中,
- 麥克風/喇叭硬體:HaaS100上已經集成了模擬麥和Speaker的硬體驅動,
2.2.2、application/example/audio_demo
在檔案audio_demo/linkkit_example_solo.c中包含了HaaS100設備和阿里云物聯網平臺鏈接的關鍵密鑰資訊(四元組),

圖3: HaaS100開源SDK中修改audio_demo四元組資訊
每位用戶應該根據自己在"阿里云物聯網平臺"中創建的產品資訊中可以獲取到一下四元組資訊,只有在audio_demo/linkkit_example_solo.c中填寫了正確的四元組資訊,HaaS100語音播放器才能正確連接用戶自己賬號的阿里云物聯網平臺,
-
- "ProductKey":用戶創建的產品型別的Key(唯一ID)
- "ProductSecret":用戶創建的產品型別的密鑰(和ProductKey一一對應)
- "DeviceName": 該產品型別下的某個具體設備名字(某個產品型別下可以有很多量產設備)
- "DeviceSecret": 該產品型別下的名字為DeviceName設備的密鑰(和DeviceName一一對應)

圖4: 阿里云物聯網平臺獲取四元組資訊頁面
2.2.3、components/service/uvoice
在我們的uvoice組件中集成了阿里巴巴的“智能語音互動”的部分功能,例如免費試用版的“語音合成”功能,需要商用的用戶可以付費開通商用版,
用戶需要登陸“智能語音互動”主頁,并根據引導創建一個包含“語音合成”功能的專案,專案創建完成后,專案主頁中會生成該專案的“Appkey”, 總覽主頁中可以獲取到“AccessToken”兩個重要資訊,

圖5: 創建智能語音互動專案和獲取AppKey

圖6: 獲取智能語音互動AccessToken
在HaaS100 SDK的components/service/uvoice/test/test_tts.c中,我們需要填寫正確的AppKey和AccessToken資訊才可以使用阿里巴巴“智能語音互動 - 語音合成”功能,值得注意的是,AccessToken是動態重繪的,周期是每個用戶賬戶可配置的,默認是2天變化一次,因此在功能開發階段,需要周期性的更新韌體中的AccessToken,否則可能出現語音合成功能訪問失敗的問題,如果是產品量產階段,可以基于阿里云端一體的安全通道周期更新設備端AccessToken,
阿里云智能語音合成功能提供了Java/ C++/ Restful等多種SDK,開發者也可以自己下載SDK適配,

圖7: uvoice組件中修改AppKey和AccessToken代碼位置
2.3、代碼編譯、下載
編譯audio_demo的命令如下,編譯成功之后參考《HaaS100快速開始》文章將韌體更新到HaaS100板子上,最新的版本支持Windows, Mac下刷機,
aos make clean && aos make distclean
aos make audio_demo@haas100 -c config
aos make
韌體燒寫成功后,可以通過以下方法快速驗證HaaS100的喇叭和麥克風之間的硬體連接是否正常,
串口終端:insmod_audio_drv
串口終端:loopback 0 start
敲完以上兩個命令之后,HaaS100進入錄音/播放的loopback測驗模式,用戶靠近麥克風說話,喇叭正常有聲音輸出,
2.4、配網、連接物聯網平臺
HaaS100 WIFI配網方法如下,如果配網資訊和四元組資訊都正確的情況下,HaaS100和物聯網平臺連接成功后有如下HardwareError ping-pong日志列印,
netmgr -t wifi -c {ssid} {password}
例如: netmgr -t wifi -c EthanIPhone 12345678

圖8: 連接物聯網平臺成功后的ping-pong日志列印
如果,有些開發者發現自己的HaaS100板子WIFI連接路由器困難,那么可以嘗試以下方法排查,
- 更新github上的最新韌體
- 串口終端:>> aos_mac WIFI,獲取WIFI MAC地址,如果是全0,那么需要更新MAC地址,
- HaaS VIP釘群中咨詢@谷飲,獲取唯一的WIFI MAC地址,
- 串口終端:>> aos_mac WIFI XX:XX:XX:XX:XX:XX,更新WIFI MAC地址,
3、阿里云IoT平臺
阿里云物聯網平臺創建產品、設備的程序可以參考文章《阿里云物聯網平臺快速入門實踐》,其中“云端釘一體的智能語音播放器”物模型設計可以參考:“智能語音播放器物模型”,
在開發者創建自己產品時,可以選擇匯入我們提供的“智能語音播放器物模型”來生成一個臨時產品,從而快速的驗證云端釘一體的智能語音播放器方案,請參考下圖步驟,

圖9: 創建產品時快速匯入物模型
4、釘釘小程式
4.1、快速開始
參考文章《30分鐘上手HaaS小程式開發》, 文中介紹了小程式開發工具IDE、HaaS釘釘小程式示例代碼獲取、釘釘小程式申請、小程式真機除錯等基礎內容,開發者可以根據這篇文章快速上手一個自己的小程式應用開發,
4.2、小程式:HaaS語音播放器
下載的“HaaS釘釘小程式示例代碼”中包含了“HaaS智能語音播放器”示例原始碼,HaaS語音播放器中創建了2個page,分別是HaasAudioPlayer和playList,
- HaasAudioPlayer頁面功能有:加載/卸載HaaS100聲卡,打開/關閉錄音,TTS語音合成入口,當前播放音樂的基礎資訊(歌曲名、歌手名、專輯圖片),播放模式選擇,音效選擇,音量控制,播放控制(播放、暫停、上一首、下一首)以及播放串列入口,
- playList頁面:自動從./mock/data.json中匯入用戶與設定好的播放串列資訊,
4.2.1、小程式賬號資訊修改
要成功使用HaaS智能語音播放器小程式,開發者需要正確輸入用戶的賬號資訊,包括
- accessKeyId + accessKeySecret: 釘釘小程式訪問用戶“阿里云物聯網平臺”賬戶的密鑰資訊,修改代碼路徑是./pages/app.js,

圖10: 訪問阿里云物聯網平臺的密鑰資訊
- DeviceName + ProductKey:指定釘釘小程式需要控制的用戶物聯網平臺中的某個HaaS100設備,修改代碼路徑是./pages/HaasAudioPlayer/HaasAudioPlayer.js

圖11: 訪問阿里云物聯網平臺某個HaaS設備的密鑰資訊
4.2.2、修改播放串列
開發者可以自己修改歌曲播放串列,組態檔位于./mock/data.json,每首歌曲資訊包含:
- id: 歌曲在播放串列中的id
- copyrightId:歌曲著作權資訊,可忽略
- picS: 歌曲在播放頁面中顯示的圖片資訊
- songName: 歌曲名
- singerName: 歌手名
- url: 歌曲鏈接,可以是本地檔案系統中的歌曲檔案,例如fs:/data/6.mp3,也可以是瀏覽器可以直接播放的網路歌曲鏈接,
經過以上2個簡單步驟,開發者就已經快速開發好一個簡單的“HaaS智能語音播放器”了,真機除錯方法可以參考文章《30分鐘上手HaaS小程式開發》,祝您體驗HaaS云端釘一體智能語音播放器方案愉快,
5、開發者技術支持
如需更多技術支持,可加入釘釘開發者群

更多技術與解決方案介紹,請訪問阿里云AIoT首頁https://iot.aliyun.com/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/243659.html
標籤:其他
上一篇:【搶茅臺腳本】,教程詳情
