想要一個真正聽從你的指示、運行在你自己的硬體上、而且不會因為聽錯而誤點十二個菠蘿的迷你語音助理嗎?用樹莓派自製人工智慧助理出乎意料地簡單、有趣且靈活。你只需要連接喚醒詞、語音辨識(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]
作業系統和基線設置
-
Raspberry Pi Imager 刷寫 Raspberry Pi 作業系統。這是取得所需預設的可啟動 microSD 卡的直接方法。 [1]
-
啟動系統,連接網絡,然後更新軟體包:
sudo apt update && sudo apt upgrade -y
-
音訊基礎知識:在 Raspberry Pi OS 系統中,您可以透過桌面使用者介面或
raspi-config 指令。所有型號均支援 USB 和 HDMI 音訊輸出;藍牙輸出僅適用於配備藍牙功能的型號。 [1] -
驗證設備:
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]
從玩具到家電:服務、自動啟動、健康檢查🧯
人會忘記執行腳本,電腦也會忘記友善待人。將你的循環腳本轉換為託管服務:
-
建立 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
-
啟用它:
sudo cp assistant.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable --now assistant.service
-
原木尾端:
journalctl -u 助手 -f
現在它能開機啟動,崩潰後自動重啟,整體表現得像個智慧型裝置。雖然有點乏味,但比以前好多了。.
技能係統:讓它在家中真正發揮作用🏠✨
語音輸入和語音輸出功能完善後,新增操作:
-
意圖路由:用於常見任務的簡單關鍵字路由。
-
智慧家庭:向 MQTT 發布事件或呼叫 Home Assistant 的 HTTP 端點。
-
外掛程式:快速 Python 函數,如
set_timer、what_is_the_time、play_radio、run_scene。
即使有雲端 LLM 在迴路中,為了速度和可靠性,也應先路由明顯的本地命令。.
本地部署 vs 雲端部署:權衡取捨,您將切身感受到🌓
僅限本地使用。
優點:私密、離線、成本可預測。
缺點:在小型電路板上,較複雜的模型運行速度可能較慢。如果將 Whisper 保存在設備本地或附近的伺服器上,其多語言訓練功能有助於提高模型的穩健性。 [3]
雲輔助的
優點:強大的推理能力、更大的上下文視窗。
缺點:資料會離開裝置、依賴網路、成本不穩定。
混合模式通常更受歡迎:喚醒詞 + ASR 本地 → 呼叫 API 進行推理 → TTS 本地。 [2][3][5]
故障排除:奇怪的小故障及快速修復方法👾
-
喚醒詞誤觸發:降低靈敏度或嘗試使用其他麥克風。 [2]
-
ASR 延遲:使用較小的 Whisper 模型或使用發布標誌(
-j --config Releasewhisper.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]
參考
-
樹莓派軟體與散熱– 樹莓派鏡像工具(下載及使用)及樹莓派5主動式散熱器產品訊息
-
Porcupine喚醒詞– SDK及快速入門(關鍵字、靈敏度、本地推理)
-
Whisper(ASR 模型) ——多語言、強大的 ASR 系統,訓練長度約 68 萬小時
-
Radford 等人, 《基於大規模弱監督的魯棒語音辨識(Whisper)》:閱讀更多
-
-
whisper.cpp – 帶有命令列介面和建置步驟的 CPU 友好型 Whisper 推理
-
Piper TTS – 快速、在地化的神經文字轉語音系統,支援多種語音/語言