📌 本文重點
- 用 Whisper+Ollama 做完全本地語音助理
- 語音→文字→LLM→語音的完整閉環
- 30 分鐘內跑起最小可行版本
- 資料與聲音全留在自己機器上
一句話就能叫得動電腦,而你的聲音和資料完全留在自己機器上,這就是用 Whisper+Ollama 做本地語音助理要解決的問題。
參考原文:Build a Fully Local Voice Assistant With Whisper and Ollama(Towards AI)
https://pub.towardsai.net/build-a-fully-local-voice-assistant-with-whisper-and-ollama-e5e6f713a220
核心架構:一句話進,AI 一句話回
這個本地語音助理由三塊組成:
- Whisper:把「語音 → 文字」(Speech-to-Text)
- Ollama + 本地 LLM:負責理解與生成文字回應
- 任一 TTS(Text-to-Speech):把「文字 → 語音」再念出來
整體流程:
- 按快捷鍵開始錄音
- Whisper 辨識成文字指令
- 文字送到本地 LLM(透過
Ollama)推理 - 回傳文字答案,再由 TTS 念出
💡 關鍵: Whisper+Ollama+TTS 組成「完全本地、無需雲端」的語音互動閉環。
下文會先講三個核心功能,再看哪些人適合用,最後給一個可以在 30 分鐘內跑起來的最小範例。
核心功能:你可以用聲音做什麼
1. 聲控指令:一句話叫電腦做事
你可以用自然語言下達指令,背後由 LLM 把「人話」轉成實際操作(shell 指令、API 呼叫或執行特定程式)。
可做的事例如:
- 「幫我開啟 VS Code 並打開
project資料夾」 - 「開始錄音會議,結束時幫我整理重點」
- 「幫我查今天的天氣,再念給我聽」
實作上,你可以:
- 在 LLM 回應中約定一個格式,例如輸出
{"action": "open_app", "target": "VSCode"} - 程式解析 JSON,對應到不同的系統操作(Python 用
subprocess、Node 用child_process)
2. 問答與解說:本地 ChatGPT,用嘴巴問
Ollama 支援多種本地模型(如 Llama、Qwen),你可以當成「只在本地跑的 ChatGPT」:
- 「用白話講一次這段程式在做什麼」
- 「幫我設計一個 3 天東京行程,預算一天 5000 台幣」
- 「這篇英文信幫我改寫得更禮貌」
如果你在意隱私(公司機密、未發表研究),這類內容只會停留在你的機器,不會上雲端。
💡 關鍵: 對隱私敏感的程式碼、文件與會議內容,都可以在本地模型中處理而不外流。
3. 筆記與總結:會議錄完直接變摘要
結合 Whisper 長錄音能力,你可以:
- 開會時一直錄音,會後自動產出:
- 決議事項
- 待辦清單
- 各參與者的責任分工
- 學習影片邊聽邊錄,最後生成「重點整理 + 閱讀筆記」
做法:
- 持續錄音,分段送 Whisper 辨識
- 把完整文字餵給 LLM,提示詞(prompt)中要求輸出特定格式:例如「請用 5 點整理會議重點,並列出行動項目」
適合誰用:具體場景示例
1. 常開線上會議的知識工作者
使用方式:
- 開會前按快捷鍵啟動錄音
- 會議中不必手寫紀錄
- 開完會輸出「摘要+待辦」,貼回 Notion / Obsidian
好處:
- 不用依賴雲端錄音服務
- 內部機密內容留在公司內網或個人電腦
2. 開發者的語音 Coding 小助手
使用方式:
- 「幫我生成一個 Python 函數,讀取 CSV 並輸出 JSON」
- 「這段錯誤訊息說什麼?幫我猜可能原因」
- 「把這段程式重構成 class 寫法」
你可以直接把 LLM 回應輸出到檔案,或搭配編輯器 API 完成簡單的自動插入。
3. 家庭中控 / 桌面自動化
使用方式:
- 「關掉 Spotify,改播 YouTube 音樂」
- 「打開家裡 NAS 的網頁介面」
- 「查一下電價 API,現在是不是離峰」
背後是:
- LLM 產生要呼叫的 API 名稱 + 參數
- 程式把它映射到實際的 REST API or Shell 指令
工具比較:Whisper、Ollama、TTS
| 名稱 | 核心功能 | 免費方案 | 適合誰 |
|---|---|---|---|
| Whisper | 語音轉文字(STT) | 開源、免費 | 要離線語音辨識的人 |
| Ollama | 管理與執行本地 LLM | 開源、免費 | 想在本地跑各種模型的人 |
| Coqui TTS | 本地語音合成(TTS) | 開源、免費 | 想客製化聲音的開發者 |
pyttsx3 / edge-tts |
簡單 TTS,快速上手 | 免費 | 只要能聽到回應即可的人 |
Whisper GitHub:https://github.com/openai/whisper
Ollama 官網:https://ollama.com
怎麼開始:30 分鐘跑起一個最小版本
下面以 Python+Whisper+Ollama+簡單 TTS 為例,目標是做到:
按快捷鍵 → 說話 → AI 在本地回答並念出來
💡 關鍵: 只要有 8GB RAM 和 Python 環境,大多數電腦在約 30 分鐘內就能完成這套本地語音助理的基本版。
1. 最小硬體與環境需求
- 作業系統:macOS / Linux / Windows(建議 10 以上)
- RAM:至少 8 GB(12–16 GB 更順)
- GPU:有當然更快,沒有也可跑小模型
- Python
3.10+(或 Node 也可以,本文用 Python)
2. 安裝 Ollama 與模型
- 到 https://ollama.com 下載並安裝
- 開啟終端機,拉一個小模型(例如
llama3.2或qwen2.5):
ollama pull llama3.2
# 或
ollama pull qwen2.5
- 測試一次:
ollama run llama3.2
能對話就表示後面 Python 可以直接透過 HTTP 使用它。
3. 安裝 Whisper 與 TTS
建立虛擬環境(可選,但建議):
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
安裝必要套件:
pip install openai-whisper sounddevice numpy requests pyttsx3
說明:
openai-whisper:Whisper STTsounddevice:錄音pyttsx3:離線 TTS(Windows/macOS/Linux 都可用)requests:呼叫 Ollama HTTP API
4. 最小可行 main.py
下面是一個簡化範例:按 Enter 開始錄音,Ctrl+C 結束程式。你可以之後再綁定系統快捷鍵(如 AutoHotkey、Karabiner)。
import sounddevice as sd
import numpy as np
import whisper
import requests
import pyttsx3
MODEL_NAME = "llama3.2" # 或改成 "qwen2.5" 等你已拉下的模型
OLLAMA_URL = "http://localhost:11434/api/generate"
whisper_model = whisper.load_model("small") # 可換 tiny / base / small / medium
engine = pyttsx3.init()
SAMPLE_RATE = 16000
DURATION = 5 # 錄音秒數,可改成你想要的
def record_audio(duration=DURATION):
print("開始錄音,請說話...")
audio = sd.rec(int(duration * SAMPLE_RATE), samplerate=SAMPLE_RATE, channels=1)
sd.wait()
print("錄音結束")
return np.squeeze(audio)
def speech_to_text(audio):
print("正在轉文字...")
result = whisper_model.transcribe(audio, fp16=False)
text = result["text"].strip()
print(f"你說:{text}")
return text
def call_ollama(prompt):
print("正在思考...")
resp = requests.post(
OLLAMA_URL,
json={"model": MODEL_NAME, "prompt": prompt},
stream=False,
)
data = resp.json()
answer = data.get("response", "")
print(f"AI:{answer}")
return answer
def speak(text):
engine.say(text)
engine.runAndWait()
if __name__ == "__main__":
try:
while True:
input("按 Enter 開始錄音(Ctrl+C 結束):")
audio = record_audio()
text = speech_to_text(audio)
if not text:
continue
answer = call_ollama(text)
speak(answer)
except KeyboardInterrupt:
print("\n結束程式")
執行:
python main.py
流程:
- 按 Enter → 錄音 5 秒
- Whisper 轉文字 → 顯示你說的話
- 文字送到
Ollama→ LLM 回答 pyttsx3把文字念出來
你已經完成一個基本版「本地語音 ChatGPT」。接下來就可以:
- 把錄音時間改成動態(按住鍵才錄)
- 在
call_ollama的 prompt 中加入系統指令,例如:「你是一個會輸出 JSON 指令的系統助手」 - 在
answer中解析 JSON,呼叫不同的系統功能
換成本地 Qwen、Llama 模型與低配機調整建議
換模型:Qwen、Llama 等
Ollama 已經預設支援多個模型,換模型只要:
- 先拉模型:
ollama pull qwen2.5
ollama pull llama3.1
- 把
MODEL_NAME改成相對應名稱,例如:
MODEL_NAME = "qwen2.5"
# 或
MODEL_NAME = "llama3.1"
- 重新執行
main.py即可。
低配機(8GB RAM / 無 GPU)調優建議
- Whisper 模型:改用
tiny或base:
python
whisper_model = whisper.load_model("tiny") - LLM 模型:優先選擇
*-mini或 3B 以內的小模型(例如llama3.2small 版) - TTS:選
pyttsx3這種輕量離線 TTS,避免重型神經網路 TTS - 錄音長度:縮短單次錄音(例如 3–5 秒),減少 STT 負載
- 批次模式:需要長會議紀錄時,可先用系統錄音軟體錄整段,之後分段丟給 Whisper 處理
總結:把「叫電腦做事」變成一句話
你現在已經有一套可以在本地跑的語音助理:
- Whisper 負責聽懂你說什麼
- Ollama+本地模型負責思考與生成回應
- TTS 負責把答案念出來
從這個最小版本開始,你可以一步步加上:「控制應用程式」、「呼叫 API」、「自動整理會議紀錄」,最後變成一個完全客製化的本地語音中控系統。
🚀 你現在可以做的事
- 安裝
Ollama並拉下llama3.2或qwen2.5模型,在終端測試對話- 建立 Python 虛擬環境,安裝
openai-whisper、sounddevice、pyttsx3等套件後跑起main.py- 改寫
call_ollama部分,讓回應輸出 JSON 指令,開始用語音控制你的桌面或 API










