Skip to content

Latest commit

 

History

History
72 lines (49 loc) · 3.7 KB

File metadata and controls

72 lines (49 loc) · 3.7 KB

English | 繁體中文

Norgo:語音驅動 AI VTuber 系統

Python OpenAI FAISS Live2D Discord License

Note

此為案例展示儲存庫。原始碼維護於私人儲存庫,不對外公開。本 repo 記錄專案的架構、功能與技術決策,作為作品集展示用途。

建構具備長期記憶、情緒表達與即時 Live2D 動畫控制的語音互動虛擬直播主。

Demo

什麼是 Norgo?

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 聯繫。