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智能語音播放器”了。真機調試方法可以參考文章
。祝您體驗HaaS雲端釘一體智能語音播放器方案愉快。
5、開發者技術支援
如需更多技術支援,可加入釘釘開發者群,或者關注微信公衆号
更多技術與解決方案介紹,請通路
阿裡雲AIoT首頁