HaaS100 雲端釘一體智能語音播放器設計

本文主要介紹如何基於HaaS100硬件平臺搭建“雲端釘一體”(阿里雲IoT平臺 + HaaS100 + 釘釘小程序)的智能語音播放器。

該智能語音播放器包含如下功能,

  • 小程序:加載/卸載HaaS100上的聲卡模塊。
  • 小程序:TTS (Text to Speech),智能語音合成功能。
  • 小程序:開始/停止錄音,錄音文件路徑/data/rec.pcm
  • 小程序:音樂播放功能,例如音量調節/播放/暫停/上一首/下一首/播放列表等。
  • 本地CLI: 音量調節,本地音樂/ 網絡音樂播放(.mp3, .m4a等格式)等。
  • 本地CLI: TTS (Text to Speech),智能語音合成功能。

 

1、端測:硬件平臺搭建

image.png

圖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開發環境準備

 

2.2、代碼修改

2.2.1、源碼介紹

image.png

圖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設備和阿里雲物聯網平臺鏈接的關鍵密鑰信息(四元組)。

image.png

圖3: HaaS100開源SDK中修改audio_demo四元組信息

 

每位用戶應該根據自己在"阿里雲物聯網平臺"中創建的產品信息中可以獲取到一下四元組信息。只有在audio_demo/linkkit_example_solo.c中填寫了正確的四元組信息,HaaS100語音播放器才能正確連接用戶自己賬號的阿里雲物聯網平臺。

    • "ProductKey":用戶創建的產品類型的Key(唯一ID)
    • "ProductSecret":用戶創建的產品類型的密鑰(和ProductKey一一對應)
    • "DeviceName": 該產品類型下的某個具體設備名字(某個產品類型下可以有很多量產設備)
    • "DeviceSecret": 該產品類型下的名字爲DeviceName設備的密鑰(和DeviceName一一對應)

image.png

圖4: 阿里雲物聯網平臺獲取四元組信息頁面

 

2.2.3、components/service/uvoice

在我們的uvoice組件中集成了阿里巴巴的“智能語音交互”的部分功能,例如免費試用版的“語音合成”功能,需要商用的用戶可以付費開通商用版。

用戶需要登陸“智能語音交互”主頁,並根據引導創建一個包含“語音合成”功能的項目。項目創建完成後,項目主頁中會生成該項目的“Appkey”, 總覽主頁中可以獲取到“AccessToken”兩個重要信息。

image.png

圖5: 創建智能語音交互項目和獲取AppKey

image.png

圖6: 獲取智能語音交互AccessToken

 

在HaaS100 SDK的components/service/uvoice/test/test_tts.c中,我們需要填寫正確的AppKey和AccessToken信息纔可以使用阿里巴巴“智能語音交互 - 語音合成”功能。值得注意的是,AccessToken是動態刷新的,週期是每個用戶賬戶可配置的,默認是2天變化一次。因此在功能開發階段,需要週期性的更新固件中的AccessToken,否則可能出現語音合成功能訪問失敗的問題。如果是產品量產階段,可以基於阿里雲端一體的安全通道週期更新設備端AccessToken。

阿里雲智能語音合成功能提供了Java/ C++/ Restful等多種SDK,開發者也可以自己下載SDK適配。

image.png

圖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

image.png

圖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平臺

阿里雲物聯網平臺創建產品、設備的過程可以參考文章《阿里雲物聯網平臺快速入門實踐》。其中“雲端釘一體的智能語音播放器”物模型設計可以參考:“智能語音播放器物模型”。

在開發者創建自己產品時,可以選擇導入我們提供的“智能語音播放器物模型”來生成一個臨時產品,從而快速的驗證雲端釘一體的智能語音播放器方案,請參考下圖步驟。

image.png

圖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。

image.png

圖10: 訪問阿里雲物聯網平臺的密鑰信息

 

  • DeviceName + ProductKey:指定釘釘小程序需要控制的用戶物聯網平臺中的某個HaaS100設備。修改代碼路徑是./pages/HaasAudioPlayer/HaasAudioPlayer.js

image.png

圖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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章