如何使用樹莓派建構DIY人工智慧助手

如何使用樹莓派建構DIY人工智慧助手

想要一個真正聽從你的指示、運行在你自己的硬體上、而且不會因為聽錯而誤點十二個菠蘿的迷你語音助理嗎?用樹莓派自製人工智慧助理出乎意料地簡單、有趣且靈活。你只需要連接喚醒詞、語音辨識(ASR = 自動語音辨識)、自然語言處理模組(規則或語言學習模型)以及文字轉語音(TTS)模組。再加上一些劇本、一兩個服務,並進行一些精心的音訊調整,你就能擁有一個可以隨身攜帶、聽從你指令的智慧音箱。

讓我們帶你從零基礎開始,輕鬆與你的樹莓派對話,告別以往的抓狂。我們將涵蓋零件、設定、代碼、對比、注意事項……所有細節,應有盡有。 🌯

您可能還想閱讀以下文章:

🔗 如何有效學習人工智慧
制定學習計劃、練習專案並追蹤進度。.

🔗 如何創辦人工智慧公司
驗證問題,建立最小可行產品,組成團隊,獲得首批客戶。.

🔗 如何利用人工智慧提高生產力
實現日常任務自動化,簡化工作流程,並提高創意產出。.

🔗 如何將人工智慧融入您的業務
確定高影響力流程,實施試點,衡量投資報酬率,擴大規模。.


如何用樹莓派打造優秀的DIY人工智慧助理✅

  • 預設為私密-盡可能將音訊保留在本地。您可以決定哪些音訊會離開裝置。

  • 模組化-像樂高積木一樣交換組件:喚醒字引擎、ASR、LLM、TTS。

  • 價格實惠——主要使用開源的通用麥克風、揚聲器和樹莓派。

  • 可自訂-想要家庭自動化、儀表板、例行公事、自訂技能?輕而易舉。

  • 可靠-由服務管理,自動啟動並開始監聽。

  • 樂趣無窮——你將學到很多關於音訊、流程和事件驅動設計的知識。

小提示:如果您使用 Raspberry Pi 5 並計劃運行較大型的本機模型,則在持續負載下使用外接散熱器會有所幫助。 (如有疑問,請選擇專為 Pi 5 設計的官方主動式散熱器。)[1]


你需要準備的零件和工具🧰

  • 樹莓派:建議使用 Pi 4 或 Pi 5 以獲得足夠的效能餘裕。

  • microSD 卡:建議使用 32 GB 以上容量。

  • USB麥克風:簡單的USB會議麥克風就很好用。

  • 揚聲器:USB 或 3.5 公釐揚聲器,或 I2S 擴大機 HAT。

  • 網路:乙太網路或Wi-Fi。

  • 選購配件:外殼、主動散熱器、一鍵通按鈕、LED 燈環。 [1]

作業系統和基線設置

  1. Raspberry Pi Imager 刷寫 Raspberry Pi 作業系統。這是取得所需預設的可啟動 microSD 卡的直接方法。 [1]

  2. 啟動系統,連接網絡,然後更新軟體包:

sudo apt update && sudo apt upgrade -y
  1. 音訊基礎知識:在 Raspberry Pi OS 系統中,您可以透過桌面使用者介面或raspi-config 指令。所有型號均支援 USB 和 HDMI 音訊輸出;藍牙輸出僅適用於配備藍牙功能的型號。 [1]

  2. 驗證設備:

arecord -l aplay -l

然後測試錄製和回放。如果音量聽起來不對勁,請先檢查混音器和預設設置,然後再考慮麥克風的問題。.

 

人工智慧樹莓派

建築概覽🗺️

基於樹莓派的合理流程如下:

喚醒字詞 → 即時音訊擷取 → ASR 轉錄 → 意圖處理或 LLM → 回應文字 → TTS → 音訊播放 → 透過 MQTT 或 HTTP 執行可選操作。.

  • 喚醒詞:Porcupine 體積小巧、準確度高,可在本地運行,並支援逐個關鍵字的靈敏度控制。 [2]

  • ASR :Whisper 是一款多語言通用 ASR 模型,經過約 68 萬小時的訓練,對口音和背景噪音具有較強的穩健性。對於裝置端使用, whisper.cpp提供了一個簡潔的 C/C++ 推理路徑。 [3][4]

  • 大腦:您可以根據自身能力選擇—透過 API 使用雲端 LLM、規則引擎或本地推理。

  • TTS :Piper 可在本地產生自然語音,速度足夠快,即使在配置一般的硬體上也能提供快速響應。 [5]


快速對比表🔎

工具 最適合 價格適中 為什麼有效
豪豬喚醒詞 始終監聽觸發器 免費套餐+ 低CPU佔用率、準確、易於綁定[2]
Whisper.cpp 樹莓派上的本地ASR 開源 準確度高,CPU佔用率低[4]
更快的低語 在 CPU/GPU 上實現更快的 ASR 開源 CTranslate2 優化
Piper TTS 本地語音輸出 開源 快速的聲音,多種語言[5]
雲端LLM API 豐富的推理 基於使用情況 卸載繁重的計算任務
Node-RED 策劃行動 開源 視覺化流程,相容於 MQTT

逐步構建:你的第一個語音循環🧩

我們將使用 Porcupine 來處理喚醒詞,Whisper 來進行轉錄,一個輕量級的「大腦」函數來處理回應(替換成你選擇的語言學習模型),以及 Piper 來進行語音辨識。保持簡潔,然後不斷迭代。.

1)安裝依賴項

sudo apt install -y python3-pip portaudio19-dev sox ffmpeg pip3 install sounddevice numpy
  • Porcupine:取得您語言的 SDK/綁定,並依照快速入門指南操作(存取鍵 + 關鍵字清單 + 音訊影格 → .process )。 [2]

  • Whisper(CPU友善型):建構whisper.cpp

git clone https://github.com/ggml-org/whisper.cpp cd whisper.cpp && cmake -B build && cmake --build build -j ./models/download-ggml-model.sh base.en ./build/bin/whisper-sfm -ggml-model.sh base.en ./build/bin/whisper-sm -mbinm

上述情況反映了該專案的快速啟動。 [4]

更喜歡 Python? faster-whisper (CTranslate2) 通常比原生 Python 運作速度更快。

2) 設定 Piper TTS

git clone https://github.com/rhasspy/piper cd piper make # 下載你喜歡的語音模型,例如 en_US-amy echo "Hello there." | ./piper --model voices/en/en_US-amy-medium.onnx --output_file hello.wav

Piper 專為裝置端 TTS 而設計,提供多種語音/語言選項。 [5]

3) Python 中的最小輔助循環

刻意精簡:等待喚醒詞(佔位符),錄音,用whisper.cpp,產生回應(佔位符),然後透過 Piper 說話。您可以將佔位符替換為您喜歡的 LLM 或規則邏輯。

。 "/home/pi/whisper.cpp/build/bin/whisper-cli" # [4] ASR_MODEL = "/home/pi/whisper.cpp/models/ggml-base.en.bin" PIPER_BIN = "/home/pi/piper/build/piper" # [5] PIPER_VOICE = "/home/pi/piper/voices/en/en_US-amy-medium.onnx" os.makedirs(WORKDIR, exist_ok=True) def record_wav(path, seconds=RECORD_SECONDS): audio = sd。 channels=CHANNELS, dtype='int16') sd.wait() with wave.open(path, 'wb') as w: w.setnchannels(CHANNELS); w.setsampwidth(2); w.setframerate(SAMPLE_RATE) w.setsampwidth(2); w。 [ASR_BIN, "-m", ASR_MODEL, "-f", path, "-otxt"] subprocess.run(cmd, check=True, cwd=WORKDIR) with open(path.replace(".wav", ".txt"), "strr", encoding=" generate_reply(prompt): if "weather" in prompt.lower(): return "我看不到雲,但天氣可能還不錯。以防萬一,帶外套吧。" return "您說:" + prompt def speak(text): proc = subprocess.PopenICE([PIPER_IN,PER speak(text): proc = subprocess.PopenICE([PIPER_IN,PER f"{WORKDIR}/reply.wav"], stdin=subprocess.PIPE) proc.stdin.write(text.encode("utf-8")); proc.stdin.close(); proc.wait() subprocess.run(["aplay", f"{WORKDIR/wait() subprocess.run(["aplay", f"{WORKDIR/wue}." print("助手已準備就緒。請輸入喚醒字詞進行測試。") while True: typed = input("> ").strip().lower() if typed == WAKE_WORD: wav_path = f"{WORKDIR}/input.wav" record_Fv(wav_c) genev(wav_b) text_v. print("使用者:", text); print("助手:", reply) speak(reply) else: print("輸入喚醒詞以測試循環。")

要實現真正的喚醒詞檢測,可以整合 Porcupine 的流式檢測器(CPU 佔用低,對每個關鍵字的靈敏度高)。 [2]


真正重要的音頻調校🎚️

一些小小的改動就能讓你的助手感覺智能十倍:

  • 麥克風距離:30-60公分是許多USB麥克風的最佳距離。

  • 電平:避免輸入訊號削波,保持播放正常;在排查程式碼問題之前,先修復路由。在 Raspberry Pi OS 上,您可以透過系統工具或raspi-config。 [1]

  • 房間聲學:堅硬的牆壁會產生迴聲;麥克風下方放置軟墊會有所幫助。

  • 喚醒詞閾值:太敏感→會觸發幽靈喚醒詞;太嚴格→你會對著塑膠大喊大叫。 Porcupine 讓你可以針對每個關鍵字調整靈敏度。 [2]

  • 散熱:在 Pi 5 上進行長時間轉錄時,官方主動式散熱器能帶來持續穩定的效能。 [1]


從玩具到家電:服務、自動啟動、健康檢查🧯

人會忘記執行腳本,電腦也會忘記友善待人。將你的循環腳本轉換為託管服務:

  1. 建立 systemd 單元:

[單元] 描述=DIY語音助理 After=network.target sound.target [服務] 使用者=pi 工作目錄=/home/pi/assistant ExecStart=/usr/bin/python3 /home/pi/assistant/assistant.py Restart=always RestartSec=3 [安裝] W7mmistant/assistant.py Restart=always RestartSec0
  1. 啟用它:

sudo cp assistant.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now assistant.service
  1. 原木尾端:

journalctl -u 助手 -f

現在它能開機啟動,崩潰後自動重啟,整體表現得像個智慧型裝置。雖然有點乏味,但比以前好多了。.


技能係統:讓它在家中真正發揮作用🏠✨

語音輸入和語音輸出功能完善後,新增操作:

  • 意圖路由:用於常見任務的簡單關鍵字路由。

  • 智慧家庭:向 MQTT 發布事件或呼叫 Home Assistant 的 HTTP 端點。

  • 外掛程式:快速 Python 函數,如set_timerwhat_is_the_timeplay_radiorun_scene

即使有雲端 LLM 在迴路中,為了速度和可靠性,也應先路由明顯的本地命令。.


本地部署 vs 雲端部署:權衡取捨,您將切身感受到🌓

僅限本地使用。
優點:私密、離線、成本可預測。
缺點:在小型電路板上,較複雜的模型運行速度可能較慢。如果將 Whisper 保存在設備本地或附近的伺服器上,其多語言訓練功能有助於提高模型的穩健性。 [3]

雲輔助的
優點:強大的推理能力、更大的上下文視窗。
缺點:資料會離開裝置、依賴網路、成本不穩定。

混合模式通常更受歡迎:喚醒詞 + ASR 本地 → 呼叫 API 進行推理 → TTS 本地。 [2][3][5]


故障排除:奇怪的小故障及快速修復方法👾

  • 喚醒詞誤觸發:降低靈敏度或嘗試使用其他麥克風。 [2]

  • ASR 延遲:使用較小的 Whisper 模型或使用發布標誌( -j --config Release whisper.cpp 。 [4]

  • TTS 斷斷續續:預先產生常用短語;請確認您的音訊設備和取樣率。

  • 未偵測到麥克風:請檢查arecord -l和混音器。

  • 過熱降頻:為確保 Pi 5 的持續效能,請使用官方的 Active Cooler 散熱器。 [1]


您應該認真閱讀的安全與隱私提示🔒

  • 使用 APT 更新您的樹莓派。.

  • 如果您使用任何雲端 API,請記錄您發送的內容,並考慮先在本機上刪除個人資訊。.

  • 以最小權限運行服務;除非必要,否則避免在 ExecStart 中sudo

  • 提供本地模式或靜音時段。


組合搭配:像三明治一樣自由組合🥪

  • 超在地化:Porcupine + whisper.cpp + Piper + 簡單法則。私密穩定。 [2][4][5]

  • 快速雲端輔助:Porcupine +(較小的本地 Whisper 或雲端 ASR)+ 本地 TTS + 雲端 LLM。

  • 家庭自動化中心:新增 Node-RED 或 Home Assistant 流程,用於例程、場景和感測器。


範例技能:透過 MQTT 控制燈光開啟💡

。 state.lower().startswith("on") else "OFF" client.publish(TOPIC, payload, qos=1, retain=False) client.disconnect() # if "turn on the lights" in text: set_light("on")

加上一句語音,例如:“打開客廳的燈”,你就會感覺自己像個魔法師。.


為什麼這套技術堆疊在實踐中行之有效🧪

  • Porcupine 在小型電路板上能夠有效率且準確地偵測喚醒詞,這使得持續監聽成為可能。 [2]

  • Whisper 龐大的多語言訓練使其能夠適應各種環境和口音。 [3]

  • whisper.cpp可以讓像 Pi 這樣的純 CPU 裝置也能利用這種強大的效能。 [4]

  • Piper 能夠保持快速回應,而無需將音訊傳送到雲端 TTS。 [5]


太長了,沒看完。

構建一個模組化、私有的DIY AI 助手,方法是結合 Porcupine(用於喚醒詞)、Whisper(透過whisper.cpp )進行自動語音識別 (ASR)、選擇合適的語音處理器進行回复,以及 Piper 進行本地文本轉語音 (TTS)。將其封裝為 systemd 服務,調整音頻,並整合 MQTT 或 HTTP 操作。它的成本比你想像的要低,而且使用起來出奇地令人愉悅。 [1][2][3][4][5]


參考

  1. 樹莓派軟體與散熱– 樹莓派鏡像工具(下載及使用)及樹莓派5主動式散熱器產品訊息

  2. Porcupine喚醒詞– SDK及快速入門(關鍵字、靈敏度、本地推理)

  3. Whisper(ASR 模型) ——多語言、強大的 ASR 系統,訓練長度約 68 萬小時

    • Radford 等人, 《基於大規模弱監督的魯棒語音辨識(Whisper)》:閱讀更多

  4. whisper.cpp – 帶有命令列介面和建置步驟的 CPU 友好型 Whisper 推理

  5. Piper TTS – 快速、在地化的神經文字轉語音系統,支援多種語音/語言

在官方人工智慧助理商店尋找最新人工智慧產品

關於我們


返回博客