返回文章列表

樹莓派打造獨立 Alexa 裝置

本文講述如何將 Raspberry Pi 打造成一個獨立的 Alexa 語音助理裝置。文章涵蓋了從硬體設定、軟體安裝、Amazon 開發者平臺設定到最終測試的完整流程。讀者將學習到如何在 Raspberry Pi 上設定麥克風和喇叭、安裝 AVS SDK、註冊裝置以及授權使用 Alexa 語音服務。

物聯網 語音助理

本篇文章詳細說明如何將 Raspberry Pi 轉變為功能齊全的 Alexa 裝置。首先,我們需要準備好 Raspberry Pi 的硬體環境,包括麥克風和喇叭的連線與測試,並確保系統軟體更新到最新版本。接著,我們將逐步引導讀者在 Amazon 開發者平臺上註冊裝置,建立安全設定檔,並取得必要的設定檔資訊。後續步驟包含下載和安裝 AVS Device SDK,設定必要的環境變數,以及執行和授權範例應用程式。最後,我們將驗證設定是否成功,並示範如何使用 Raspberry Pi 上的 Alexa 語音服務。

17.2 Raspberry Pi設定

17.2.1 前置條件

使用您能找到的最快的Pi。我使用了一個Raspberry Pi 4,作業系統為Raspbian GNU/Linux 10 (buster)。 如果您不知道如何進行這些步驟,可以參考相關檔案或觀看教學影片。 如果您不是從新建開始,則在開始之前,請更新您的Pi軟體並重新啟動您的Pi:

  • 更新儲存函式庫套件:sudo apt update
  • 執行更新命令:sudo apt dist-upgrade
  • 按照指示並等待Pi更新。
  • 刪除不需要的檔案:sudo apt clean
  • 重新啟動您的裝置:sudo reboot 如果您需要知道自己正在執行的Pi作業系統,可以輸入cat /etc/os-release。 您可以使用cat /proc/cpuinfo查詢cpu資訊,使用cat /proc/meminfo查詢記憶體資訊。 將麥克風和喇叭/耳機連線到您的Pi並檢查它們是否正常工作。 您可以使用以下命令:
arecord -D hw:2,0 -d 5 -f cd test.wav -c 1
sudo arecord --format=S16_LE --duration=5 --rate=64000 --file-type=raw out.raw

您可以使用以下命令測試麥克風和喇叭的組合:

arecord --format=S16_LE --rate=16000 | aplay --format=S16_LE --rate=16000

您可以使用以下命令設定錄音和播放裝置的音量:alsa-mixer。使用上下鍵改變設定。 您需要一個高品質的麥克風。

內容解密:

以上步驟是為了確保Raspberry Pi能夠正確地執行Alexa Amazon Voice Service (AVS)而進行的設定和測試。這些步驟包括更新Pi的軟體、設定麥克風和喇叭、測試音訊錄製和播放等。透過這些步驟,可以確保您的Raspberry Pi能夠順暢地執行Alexa的語音服務。

Raspberry Pi 作為獨立 Alexa 裝置

17.3 程式

您可以從原始碼或指令碼設定 AVS Device SDK。如果從原始碼設定,AVS 使用點選對話功能,因此需要螢幕和鍵盤。我使用 VNC 無線連線到我的 Pi。以下是指令碼指令的步驟:

  • 註冊您的 AVS 裝置於 Amazon
  • 下載和安裝 AVS SDK
  • 執行和授權樣本應用程式
  • 使用樣本應用程式

17.3.1 註冊您的 AVS 裝置於 Amazon

三個步驟:

a) 登入 Amazon 開發者帳戶(參見 2.2 節)。

b) 註冊一個內建 AVS 裝置。

登入開發者主控臺,選擇 Alexa Voice Service。

選擇「管理您的產品」。

然後選擇「新增產品」。

如果您之前已經建立過 AVS 產品,它們將在此顯示。

在下一個螢幕中,新增有關您的裝置的資訊。產品名稱將顯示給終端使用者在 Alexa App 中,產品 ID 用於授權期間識別裝置。

選擇一個產品名稱和 ID(我使用 Raspberry2 和 Raspberry2),產品型別選擇「具有內建 Alexa 的裝置」,並選擇「否」作為伴侶應用程式,其他選擇「其他」作為產品類別。輸入一些描述(例如,原型),並選擇「免手操作」作為互動方式。

忽略上傳圖片,並對其餘問題回答「否」。

最後,點選「下一步」。

c) 設定您的安全組態檔案。

在下一個螢幕中,您可以選擇現有的安全組態檔案或建立新的組態檔案。

點選「建立新的組態檔案」,並新增組態檔案名稱和描述。

當您點選「下一步」時,您將被提供一個安全組態檔案 ID。複製它,例如:

amzn1.application.8ebda94958345678881551dca2e

選擇「其他裝置和平臺」。

點選「生成 ID」,並複製使用者端 ID,例如:

amzn1.application-oa2-client.049c89d3584a4a4f83b5f23cd4c54321

點選「下載」以取得 config.json 檔案,我們稍後需要它。這個檔案只包含使用者端 ID 和產品 ID:

{ “deviceInfo”: { “clientId”: “amzn1.application-oa2-client.049c89d3584… “, “productId”: “Raspberry2” } }

同意條款並完成。

您的產品應該已經被建立,並且應該列在您的產品清單中。

如果您選擇您的產品,您可以新增功能,例如計時器、提醒、位置服務等。

如果您想要啟用您的安全組態檔案進行商業分佈,請前往 LWA(使用 Amazon 登入),選擇您建立的安全組態檔案,新增一個指向您的隱私政策的連結,並儲存。

現在,我們已經註冊了裝置,並需要在 Pi 上安裝 Alexa Voice Service。

17.3.2 下載和安裝 AVS SDK

在 Pi 上安裝 Alexa Voice Service。我在 Raspberry Pi 4 和 Raspbian GNU/Linux 10(buster)上執行了這個程式。如果您尚未更新 Pi,請現在更新。輸入「sudo apt-get update」,然後輸入「sudo apt-get upgrade」,最後輸入「sudo reboot」。

將您下載的 config.json 檔案傳輸到 Pi 的 /home/pi/ 目錄中。我使用 WinSCP:

輸入以下命令:

cd /home/pi/ Install/setup.sh tall/genConfig.sh tall/pi.sh

注意 Amazon 的警告:

當您執行 setup.sh 時,您會得到一個錯誤訊息:

編輯 setup.sh 以替換 git 命令:

git clone https://github.com/alexa/avs-device-sdk.git

git clone https://github.com/alexa/avs-device-sdk.git -b v1.26.0.0

圖表翻譯:

內容解密:

以上步驟描述瞭如何在 Raspberry Pi 上設定 Alexa Voice Service。首先,註冊您的 AVS 裝置於 Amazon,然後下載和安裝 AVS SDK。接下來,執行和授權樣本應用程式,最後使用樣本應用程式。這些步驟將幫助您在 Raspberry Pi 上建立一個獨立的 Alexa 裝置。

Raspberry Pi作為獨立Alexa裝置

17.3.3 執行和授權樣本應用程式

要執行樣本應用程式,請在home/pi目錄下執行以下命令:

sudo bash startsample.sh

您應該會看到一則訊息,指出您的裝置目前未授權,並要求您輸入授權碼。

授權裝置

要授權裝置,請瀏覽至指定的網站,登入您的Amazon開發者帳戶,輸入授權碼,並選擇「允許」。

@startuml
skinparam backgroundColor #FEFEFE
skinparam componentStyle rectangle

title 樹莓派打造獨立 Alexa 裝置

package "安全架構" {
    package "網路安全" {
        component [防火牆] as firewall
        component [WAF] as waf
        component [DDoS 防護] as ddos
    }

    package "身份認證" {
        component [OAuth 2.0] as oauth
        component [JWT Token] as jwt
        component [MFA] as mfa
    }

    package "資料安全" {
        component [加密傳輸 TLS] as tls
        component [資料加密] as encrypt
        component [金鑰管理] as kms
    }

    package "監控審計" {
        component [日誌收集] as log
        component [威脅偵測] as threat
        component [合規審計] as audit
    }
}

firewall --> waf : 過濾流量
waf --> oauth : 驗證身份
oauth --> jwt : 簽發憑證
jwt --> tls : 加密傳輸
tls --> encrypt : 資料保護
log --> threat : 異常分析
threat --> audit : 報告生成

@enduml

圖表翻譯:

此圖表描述了授權裝置的流程。首先,瀏覽至指定的網站,然後登入您的Amazon開發者帳戶,接著輸入授權碼,並最終選擇「允許」以完成授權。

17.4 使用樣本應用程式

現在,您可以像使用正常的Alexa裝置一樣使用您的Raspberry Pi。試試說:

"Alexa,今天的天氣如何"

"Alexa,告訴我一個笑話"

或其他許多Alexa命令。

內容解密:

以上內容描述了使用Raspberry Pi作為獨立Alexa裝置的過程。首先,我們需要設定Pi硬體和建立Alexa Voice Service產品。接著,我們安裝AVS SDK並執行樣本應用程式。授權裝置後,我們就可以使用樣本應用程式執行Raspberry Pi Alexa裝置。這個過程需要仔細按照步驟進行,以確保裝置正常運作。

從使用者經驗視角來看,將 Raspberry Pi 打造成獨立的 Alexa 裝置,需要經歷繁瑣的軟硬體設定及授權流程。本文詳細介紹了從系統準備、軟體安裝、Amazon AVS 註冊到最終測試的完整步驟,涵蓋了技術堆疊的各個層級。透過多維比較分析,可以發現,雖然使用指令碼簡化了部分操作,但仍需使用者具備一定的 Linux 基礎和除錯能力。技術限制深析顯示,設定過程中可能遭遇網路連線問題、套件版本衝突等挑戰,需要使用者參考官方檔案或社群資源尋求解決方案。

展望未來,隨著 AVS Device SDK 的持續發展和社群支援的完善,預計設定流程將更加簡化,使用者門檻也會降低。然而,維持系統安全性和隱私性仍是關鍵挑戰。對於希望快速體驗 Raspberry Pi Alexa 的使用者,建議採用預先設定好的映像檔或套件,以減少設定的複雜度。對於追求客製化和深入瞭解 AVS SDK 的開發者,則可以參考本文提供的步驟,逐步建構自己的 Raspberry Pi Alexa 裝置。玄貓認為,根據 Raspberry Pi 的 Alexa 裝置,在智慧家庭、物聯網等領域具有廣闊的應用前景,值得持續關注和探索。