RealChar:讓 AI 角色「活」起來的開源平台

在 AI 聊天機器人氾濫的 2026 年,大多數產品仍然停留在「文字對話」的層面——你輸入文字,AI 返回文字,互動方式單調且缺乏沉浸感。RealChar 的出現打破了這一僵局:這是一個完全開源的 AI 即時角色互動平台,讓你不只能建立具有獨特個性和背景的 AI 角色,還能透過語音與它們進行即時對話,就像和一個真實的人聊天一樣。

RealChar 專案在 GitHub 上獲得了超過 8,000 Star,被 LangChain 官方部落格推薦為「使用開源工具建立 AI 夥伴」的典範案例。它的核心理念很簡單:讓每個人都能零程式碼建立自己的 AI 角色,並透過最自然的方式——語音——與之互動。

本文將從技術架構、部署方式、角色建立、即時互動機制等多個維度,深度解析 RealChar 這個開源專案,幫助你快速上手並探索其在教育、娛樂、客服等情境的應用潛力。

技術架構:模組化設計,靈活可擴展

RealChar 的技術堆疊採用了典型的現代 Web 應用架構,但在 AI 能力整合上做了大量創新。整個系統可以分為四個核心層:

前端互動層

RealChar 提供了三種客戶端:

  • Web 端:基於 React.js 和 Vanilla JS 建構,透過 WebSocket 實現即時雙向通訊。介面簡潔直觀,支援文字和語音兩種互動模式。
  • 行動端:使用 Swift 原生開發(iOS),同樣基於 WebSocket,提供流暢的行動端體驗。RealChar 是少數開源行動端 AI 角色應用的專案之一。
  • 終端機 CLI:面向開發者的命令列客戶端,適合快速測試和整合。

後端服務層

後端採用 FastAPI 框架,這是一個高效能的 Python Web 框架,原生支援非同步處理和 WebSocket。FastAPI 負責:

  • 管理使用者工作階段和角色狀態
  • 協調 LLM 推理、語音辨識、語音合成的呼叫流程
  • 透過 WebSocket 向前端推送即時音訊串流
  • 提供 RESTful API 供外部系統整合

資料儲存使用 SQLite(開發環境)或 PostgreSQL(生產環境),儲存角色設定、對話歷史、使用者資訊等結構化資料。

AI 能力層

這是 RealChar 的核心競爭力所在,整合了多個頂尖的 AI 服務:

大型語言模型(LLM):支援多種主流 LLM,包括: - OpenAI GPT-4 / GPT-3.5 - Anthropic Claude 2 - Anyscale Llama2(開源模型) - ReByte 平台(推薦,提供統一的 API 介面) - 本機 LLM(透過 OpenAI 相容 API)

語音辨識(STT): - Local Whisper / WhisperX(本機部署,推薦) - OpenAI Whisper API - Google Speech-to-Text

語音合成(TTS): - Edge TTS(預設,免費) - ElevenLabs(高品質,支援聲音複製) - Google Text-to-Speech

向量資料庫:使用 Chroma 儲存角色的知識庫,支援 RAG(檢索增強生成)能力,讓角色能夠基於特定領域的知識進行對話。

資料攝入層

透過 LlamaIndex 實現知識攝入,可以將文件、網頁、資料庫等外部知識來源轉換為向量儲存到 Chroma 中。這使得你可以為角色賦予特定領域的專業知識,比如建立一個「歷史學家」角色並餵給它歷史文獻,或建立一個「產品專家」角色並匯入產品手冊。

Docker 部署:5 分鐘快速啟動

RealChar 提供了完善的 Docker 支援,這是最推薦的部署方式。整個過程只需要 3 個步驟:

步驟 1:複製儲存庫並設定環境變數

BASH
git clone https://github.com/Shaunwei/RealChar.git
cd RealChar
cp .env.example .env

編輯 .env 檔案,填入你的 API Key。最簡設定只需要一個 LLM 的 API Key:

BASH
# 方式 1:使用 ReByte(推薦)
REBYTE_API_KEY=your_rebyte_api_key

# 方式 2:使用 OpenAI
OPENAI_API_KEY=your_openai_api_key

# 語音辨識設定(推薦本機 Whisper)
SPEECH_TO_TEXT_USE=LOCAL_WHISPER
LOCAL_WHISPER_MODEL=base

# 語音合成設定(Edge TTS 免費)
EDGE_TTS_DEFAULT_VOICE=en-US-ChristopherNeural

步驟 2:啟動 Docker 容器

BASH
docker compose up

這個指令會自動建構並啟動三個服務:

  • db:PostgreSQL 資料庫服務
  • backend:FastAPI 後端服務(連接埠 8000)
  • web:React 前端服務(連接埠 3000)

docker-compose.yaml 的完整設定如下:

YAML
version: '3.8'

services:
  db:
    build:
      context: .
      dockerfile: Dockerfile.postgres
    restart: always
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: postgres
      PGDATA: /var/lib/postgresql/data/realchar
    ports:
      - '5432:5432'
    volumes:
      - db:/var/lib/postgresql/data
    healthcheck:
      test: ["CMD-SHELL", "pg_isready -U postgres"]
      interval: 10s
      timeout: 5s
      retries: 5

  backend:
    build: 
      context: .
      dockerfile: Dockerfile
    ports:
      - "8000:8000"
    depends_on:
      db:
        condition: service_healthy
    env_file:
      - ./.env
    environment:
      - DATABASE_URL=postgresql://postgres:***@db:5432/postgres
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8000/status"]
      interval: 10s
      timeout: 5s
      retries: 5

  web:
    build:
      context: ./client/next-web/
      dockerfile: Dockerfile.dev
    ports:
      - "3000:3000"
    depends_on:
      backend:
        condition: service_healthy
      db:
        condition: service_healthy
    environment:
      - NEXT_PUBLIC_API_HOST=http://localhost:8000
      - API_HOST=http://backend:8000

volumes:
  db:
    driver: local

步驟 3:存取應用

打開瀏覽器存取 http://localhost:3000,即可看到 RealChar 的 Web 介面。選擇一個預設角色,開始對話!

注意事項: - 如果使用 Docker Desktop(Windows/Mac),確保配置了足夠的記憶體(建議 8GB+) - 首次啟動會下載依賴和模型,可能需要 10-20 分鐘 - 如果需要遠端存取,必須設定 SSL(WebSocket 要求 HTTPS)

Python 部署:開發者友善

如果你更喜歡直接控制 Python 環境,或者需要修改原始碼,可以使用 Python 部署方式:

環境準備

BASH
# 複製儲存庫
git clone https://github.com/Shaunwei/RealChar.git
cd RealChar

# 安裝系統依賴
# macOS
brew install portaudio ffmpeg

# Ubuntu
sudo apt update
sudo apt install portaudio19-dev ffmpeg

# 建立虛擬環境(推薦)
python -m venv venv
source venv/bin/activate  # Linux/macOS
# venv\Scripts\activate   # Windows

# 安裝 Python 依賴
pip install -r requirements.txt

# (可選)安裝 WhisperX 以獲得更快的本機語音辨識
pip install git+https://github.com/m-bain/whisperX.git

資料庫初始化

BASH
# 建立 SQLite 資料庫
sqlite3 test.db "VACUUM;"

# 執行資料庫遷移
alembic upgrade head

啟動服務

BASH
# 設定環境變數
cp .env.example .env
# 編輯 .env 填入 API Key

# 啟動後端
python cli.py run-uvicorn
# 或直接使用 uvicorn
uvicorn realtime_ai_character.main:app

# 啟動前端(新終端機視窗)
cd client/next-web
cp .env.example .env
npm install
npm run dev

存取 http://localhost:3000 即可使用。

建立自訂 AI 角色

RealChar 的核心價值在於讓你建立獨特的 AI 角色。有兩種方式:

方式 1:透過 Web UI 建立(零程式碼)

  1. 登入 Web 介面後,點擊「Create Character」
  2. 填寫角色資訊: - Name:角色名稱 - Description:角色簡介 - Personality:個性描述(如「友善、幽默、耐心」) - Background:背景故事(如「中世紀騎士,曾參與十字軍東征」) - Greeting:角色的開場白
  3. 上傳角色頭像(可選)
  4. 選擇語音(如果使用 ElevenLabs,可以複製特定聲音)
  5. 點擊「Save」建立角色

方式 2:透過程式碼建立(進階)

在 realtime_ai_character/character_catalog/ 目錄下建立一個新的 YAML 檔案:

YAML
# my_character.yaml
name: "歷史學家亞里斯多德"
description: "古希臘哲學家,精通哲學、科學、政治"
personality: |
  你是一位博學的古希臘哲學家,說話充滿智慧,喜歡用比喻和故事解釋複雜概念。
  你對知識充滿熱情,總是引導對話者思考問題的本質。
background: |
  亞里斯多德(西元前 384-322 年)是古希臘哲學家,柏拉圖的學生,亞歷山大大帝的老師。
  他的著作涵蓋了物理學、形上學、倫理學、政治學、生物學等多個領域。
  你相信透過觀察和邏輯推理可以理解世界的本質。
greeting: "你好,年輕的求知者。我是亞里斯多德,讓我們一起探索真理的奧秘。"
voice: "en-US-ChristopherNeural"  # Edge TTS 語音
# 或 ElevenLabs: voice_id: "your_voice_id"

儲存後重新啟動後端服務,角色會自動載入。

為角色新增知識庫

RealChar 支援 RAG(檢索增強生成),可以讓角色基於特定知識對話:

PYTHON
# 使用 LlamaIndex 攝入知識
from llama_index import VectorStoreIndex, SimpleDirectoryReader
from realtime_ai_character.database.chroma import get_chroma

# 讀取文件
documents = SimpleDirectoryReader("knowledge_docs/").load_data()

# 建立向量索引
index = VectorStoreIndex.from_documents(documents)

# 儲存到 Chroma
chroma = get_chroma()
chroma.add_character_knowledge("aristotle", index)

現在,當你問「亞里斯多德」關於倫理學的問題時,他會基於你提供的文獻給出專業回答,而不是泛泛而談。

即時互動機制

RealChar 的「即時」體驗是其最大亮點。整個互動流程如下:

語音互動流程

  1. 使用者說話:瀏覽器透過麥克風擷取音訊
  2. 語音辨識:音訊透過 WebSocket 傳送到後端,呼叫 Whisper/WhisperX 轉換為文字
  3. LLM 推理:文字傳送給 LLM(如 GPT-4),生成回覆
  4. 語音合成:回覆文字呼叫 ElevenLabs/Edge TTS 轉換為音訊
  5. 即時推送:音訊透過 WebSocket 串流推送到前端播放

整個過程在 1-3 秒內完成,延遲主要來自 LLM 推理和語音合成。

降低延遲的技巧

  • 使用 GPT-3.5 而非 GPT-4(推理更快)
  • 使用 Local WhisperX(本機 GPU 加速)
  • 使用 ElevenLabs V2(更快的 TTS)
  • 開啟 串流回應(RealChar 預設支援)

文字互動

如果不想使用語音,也可以直接在文字框輸入文字,RealChar 會跳過語音辨識和合成步驟,直接返回文字回覆。

應用情境

RealChar 的靈活架構使其適用於多種情境:

1. 虛擬助手

建立一個「產品經理助手」角色,餵給它產品文件、使用者回饋、競爭資訊。團隊成員可以透過語音詢問:「上週使用者回饋的主要痛點是什麼?」角色會基於知識庫給出準確回答。

2. 線上教育

建立「物理老師牛頓」角色,匯入物理學教材。學生可以與「牛頓」討論力學問題,獲得沉浸式的歷史+物理學習體驗。這種「與歷史人物對話」的方式比傳統教材更有趣。

3. 娛樂陪伴

建立一個「幽默的脫口秀演員」角色,設定搞笑的個性和背景。使用者可以與它閒聊解悶,甚至進行「脫口秀對戰」。

4. 客服機器人

為電商客服建立一個「專業客服小王」角色,匯入產品手冊、退換貨政策、常見問題解答。客戶可以透過語音諮詢訂單狀態、退換貨流程等問題,比傳統文字客服更自然。

5. 語言學習

建立一個「英語外教 Emma」角色,設定為耐心友善的美國老師。學生可以與她進行口語練習,Emma 會糾正發音並提供學習建議。

與其他 AI 聊天平台對比

RealChar 與市面上的 AI 聊天產品有顯著差異:

特性 RealChar Character.AI Chatbot
開源 ✅ 完全開源 ❌ 閉源 ❌ 閉源
語音互動 ✅ 即時語音 ❌ 僅文字 ❌ 僅文字
自部署 ✅ Docker/Python ❌ 僅雲端 ❌ 僅雲端
LLM 選擇 ✅ 多模型支援 ❌ 固定模型 ❌ 固定模型
知識庫 ✅ RAG 支援 ❌ 有限 ❌ 有限
聲音複製 ✅ ElevenLabs ❌ 不支援 ❌ 不支援
資料隱私 ✅ 本機部署 ❌ 雲端儲存 ❌ 雲端儲存
可訂製性 ✅ 高度可訂製 ⚠️ 有限 ⚠️ 有限

RealChar 的優勢: - 完全開源:可以自由修改原始碼,滿足特定需求 - 即時語音:真正的「對話」體驗,而非文字聊天 - 資料隱私:本機部署,資料不上傳雲端 - 靈活擴展:模組化設計,易於整合新功能

RealChar 的劣勢: - 需要自己部署和維護 - 需要 API Key(有一定成本) - 行動端僅支援 iOS

未來發展路線圖

根據 RealChar 的 GitHub Roadmap,未來將重點發展以下功能:

  • ✅ 工作階段管理:支援多輪對話的上下文管理
  • ✅ RAG 增強:更強大的知識庫管理能力
  • ✅ Agents/GPTs 支援:整合 Agent 能力,讓角色能執行複雜任務
  • ✅ 更多 TTS 服務:支援更多語音合成引擎
  • ⏳ 多模態互動:未來可能支援影像、影片輸入
  • ⏳ 角色市集:使用者分享和下載角色設定

社群方面,RealChar 在 Discord 有活躍的開發者和使用者群體,定期更新和維護。專案採用 MIT 授權條款,鼓勵社群貢獻。

總結

RealChar 是一個極具潛力的開源 AI 角色互動平台。它不僅提供了完整的技術堆疊,讓你快速建立和部署 AI 角色,還透過即時語音互動打破了傳統文字聊天的侷限。

適合人群: - 想建立個性化 AI 角色的一般使用者 - 需要 AI 角色能力的開發者 - 關注資料隱私、需要本機部署的企業 - 對 AI Agent 和即時互動感興趣的研究者

快速開始:

BASH
git clone https://github.com/Shaunwei/RealChar.git
cd RealChar
cp .env.example .env
# 編輯 .env 填入 API Key
docker compose up
# 存取 http://localhost:3000

無論你是想建立一個能陪你聊天的虛擬夥伴,還是為企業建構智慧客服,RealChar 都值得一試。開源的力量在於社群的共同創新,期待你在 RealChar 的基礎上創造出更多令人驚嘆的應用。