Note
此為案例展示儲存庫。原始碼維護於私人儲存庫,不對外公開。本 repo 記錄專案的架構、功能與技術決策,作為作品集展示用途。
建構具備長期記憶、情緒表達與即時 Live2D 動畫控制的語音互動虛擬直播主。
Norgo 是一套受 Neuro-sama 啟發的 AI VTuber 系統。透過語音與虛擬角色即時對話 — 它會聽、會思考、用語音回應,並透過 Live2D 即時表達情緒。
國立雲林科技大學資訊管理系畢業實務專題,指導教授:黃昭義 博士。
- 完整語音迴路 — Voice in, voice out。基於 VAD 的靜音偵測、OpenAI Whisper 語音辨識、Cartesia Sonic 語音合成(TTFB 40ms)。
- 長期記憶 — 對話自動摘要並存入 FAISS 向量資料庫。系統透過自研的概率加權檢索引擎,從歷史會話中召回相關上下文。
- 情緒驅動動畫 — LLM 每次回應附帶情緒標籤。連續情緒狀態機驅動 Live2D 表情變化,搭配 Perlin 噪聲與緩動過渡實現自然表現。
- BreezyVoice 支援 — 整合聯發科開源台灣普通話 TTS,透過 prompt 快取實現語音克隆。此項工作衍生出 BreezyVoiceX。
- 多平台輸出 — 同一核心引擎同時驅動 Discord Bot(文字 + 語音)、VTube Studio(Live2D)與 OBS Studio(串流字幕)。
- 事件驅動 & 模組化 — 所有模組透過發布-訂閱事件通訊。新增平台零修改核心邏輯。
- 角色可設定 — 透過單一 JSON 檔定義個性、溝通風格與行為約束。
系統採用事件驅動設計,語音輸入、LLM 推理、語音合成與動畫更新透過非同步事件派發同時運行。單次語音互動的流程:
STT(靜音偵測 + 語音辨識)→ RAG(記憶檢索)→ LLM(回應 + 情緒標記)→ 並行:TTS(語音合成)+ VTS(動畫)→ 輸出
| 類別 | 技術 |
|---|---|
| 語言 | Python 3.11+ |
| LLM | OpenAI API (GPT-4o-mini),結構化 JSON 輸出 |
| STT | OpenAI Whisper, WebRTC VAD |
| TTS | Cartesia Sonic / BreezyVoice(語音克隆) |
| 記憶 | FAISS, Jina Embeddings v3 |
| 動畫 | VTube Studio API, Live2D, Perlin 噪聲 |
| 平台 | Discord.py, OBS WebSocket |
| 非同步 | asyncio, ThreadPoolExecutor |
系統架構師 & 核心開發者,3 人團隊,歷時 14 個月。
- 設計整體系統架構(事件驅動、模組化、全非同步)
- 建構 LLM 整合層,實現 JSON 結構化輸出
- 建構語音互動管線(VAD 錄音 → STT → 對話處理)
- 整合 BreezyVoice 並實作 prompt 快取語音克隆
- 設計事件監聽系統,實現模組間解耦通訊
- BreezyVoiceX — 從本專案衍生的開源 TTS 增強版
如需了解技術細節,歡迎透過 Email 聯繫。

