本文主要介紹如何基於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/