天天看點

HaaS100 雲端釘一體智能語音播放器設計1、端測:硬體平台搭建2、端測:軟體開發3、阿裡雲IoT平台4、釘釘小程式

1、端測:硬體平台搭建

HaaS100 雲端釘一體智能語音播放器設計1、端測:硬體平台搭建2、端測:軟體開發3、阿裡雲IoT平台4、釘釘小程式

圖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、源碼介紹

HaaS100 雲端釘一體智能語音播放器設計1、端測:硬體平台搭建2、端測:軟體開發3、阿裡雲IoT平台4、釘釘小程式

圖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裝置和阿裡雲物聯網平台連結的關鍵密鑰資訊(四元組)。

HaaS100 雲端釘一體智能語音播放器設計1、端測:硬體平台搭建2、端測:軟體開發3、阿裡雲IoT平台4、釘釘小程式

圖3: HaaS100開源SDK中修改audio_demo四元組資訊

每位使用者應該根據自己在

"阿裡雲物聯網平台

"中建立的産品資訊中可以擷取到一下四元組資訊。隻有在audio_demo/linkkit_example_solo.c中填寫了正确的四元組資訊,HaaS100語音播放器才能正确連接配接使用者自己賬号的阿裡雲物聯網平台。

  • "ProductKey":使用者建立的産品類型的Key(唯一ID)
  • "ProductSecret":使用者建立的産品類型的密鑰(和ProductKey一一對應)
  • "DeviceName": 該産品類型下的某個具體裝置名字(某個産品類型下可以有很多量産裝置)
  • "DeviceSecret": 該産品類型下的名字為DeviceName裝置的密鑰(和DeviceName一一對應)
HaaS100 雲端釘一體智能語音播放器設計1、端測:硬體平台搭建2、端測:軟體開發3、阿裡雲IoT平台4、釘釘小程式

圖4: 阿裡雲物聯網平台擷取四元組資訊頁面

2.2.3、components/service/uvoice

在我們的uvoice元件中內建了阿裡巴巴的

“智能語音互動”

的部分功能,例如免費試用版的“語音合成”功能,需要商用的使用者可以付費開通商用版。

使用者需要登陸

首頁,并根據引導建立一個包含“語音合成”功能的項目。項目建立完成後,項目首頁中會生成該項目的“Appkey”, 總覽首頁中可以擷取到“AccessToken”兩個重要資訊。

HaaS100 雲端釘一體智能語音播放器設計1、端測:硬體平台搭建2、端測:軟體開發3、阿裡雲IoT平台4、釘釘小程式

圖5: 建立智能語音互動項目和擷取AppKey

HaaS100 雲端釘一體智能語音播放器設計1、端測:硬體平台搭建2、端測:軟體開發3、阿裡雲IoT平台4、釘釘小程式

圖6: 擷取智能語音互動AccessToken

在HaaS100 SDK的components/service/uvoice/test/test_tts.c中,我們需要填寫正确的AppKey和AccessToken資訊才可以使用阿裡巴巴“智能語音互動 - 語音合成”功能。值得注意的是,AccessToken是動态重新整理的,周期是每個使用者賬戶可配置的,預設是2天變化一次。是以在功能開發階段,需要周期性的更新固件中的AccessToken,否則可能出現語音合成功能通路失敗的問題。如果是産品量産階段,可以基于阿裡雲端一體的安全通道周期更新裝置端AccessToken。

阿裡雲智能語音合成功能提供了

Java/ C++/ Restful

等多種SDK,開發者也可以自己下載下傳SDK适配。

HaaS100 雲端釘一體智能語音播放器設計1、端測:硬體平台搭建2、端測:軟體開發3、阿裡雲IoT平台4、釘釘小程式

圖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
           
HaaS100 雲端釘一體智能語音播放器設計1、端測:硬體平台搭建2、端測:軟體開發3、阿裡雲IoT平台4、釘釘小程式

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

阿裡雲物聯網平台建立産品、裝置的過程可以參考文章

《阿裡雲物聯網平台快速入門實踐》

。其中“雲端釘一體的智能語音播放器”物模型設計可以參考:“智能語音播放器物模型”。

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

HaaS100 雲端釘一體智能語音播放器設計1、端測:硬體平台搭建2、端測:軟體開發3、阿裡雲IoT平台4、釘釘小程式

圖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。
HaaS100 雲端釘一體智能語音播放器設計1、端測:硬體平台搭建2、端測:軟體開發3、阿裡雲IoT平台4、釘釘小程式

圖10: 通路阿裡雲物聯網平台的密鑰資訊

  • DeviceName + ProductKey:指定釘釘小程式需要控制的使用者物聯網平台中的某個HaaS100裝置。修改代碼路徑是./pages/HaasAudioPlayer/HaasAudioPlayer.js
HaaS100 雲端釘一體智能語音播放器設計1、端測:硬體平台搭建2、端測:軟體開發3、阿裡雲IoT平台4、釘釘小程式

圖11: 通路阿裡雲物聯網平台某個HaaS裝置的密鑰資訊

4.2.2、修改播放清單

開發者可以自己修改歌曲播放清單,配置檔案位于./mock/data.json。每首歌曲資訊包含:

  • id: 歌曲在播放清單中的id
  • copyrightId:歌曲版權資訊,可忽略
  • picS: 歌曲在播放頁面中顯示的圖檔資訊
  • songName: 歌曲名
  • singerName: 歌手名
  • url: 歌曲連結,可以是本地檔案系統中的歌曲檔案,例如fs:/data/6.mp3,也可以是浏覽器可以直接播放的網絡歌曲連結。

經過以上2個簡單步驟,開發者就已經快速開發好一個簡單的“HaaS智能語音播放器”了。真機調試方法可以參考文章

。祝您體驗HaaS雲端釘一體智能語音播放器方案愉快。

5、開發者技術支援

如需更多技術支援,可加入釘釘開發者群,或者關注微信公衆号

HaaS100 雲端釘一體智能語音播放器設計1、端測:硬體平台搭建2、端測:軟體開發3、阿裡雲IoT平台4、釘釘小程式

更多技術與解決方案介紹,請通路

阿裡雲AIoT首頁

繼續閱讀