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:複製儲存庫並設定環境變數
git clone https://github.com/Shaunwei/RealChar.git
cd RealChar
cp .env.example .env
編輯 .env 檔案,填入你的 API Key。最簡設定只需要一個 LLM 的 API Key:
# 方式 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 容器
docker compose up
這個指令會自動建構並啟動三個服務:
- db:PostgreSQL 資料庫服務
- backend:FastAPI 後端服務(連接埠 8000)
- web:React 前端服務(連接埠 3000)
docker-compose.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 部署方式:
環境準備
# 複製儲存庫
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
資料庫初始化
# 建立 SQLite 資料庫
sqlite3 test.db "VACUUM;"
# 執行資料庫遷移
alembic upgrade head
啟動服務
# 設定環境變數
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 建立(零程式碼)
- 登入 Web 介面後,點擊「Create Character」
- 填寫角色資訊: - Name:角色名稱 - Description:角色簡介 - Personality:個性描述(如「友善、幽默、耐心」) - Background:背景故事(如「中世紀騎士,曾參與十字軍東征」) - Greeting:角色的開場白
- 上傳角色頭像(可選)
- 選擇語音(如果使用 ElevenLabs,可以複製特定聲音)
- 點擊「Save」建立角色
方式 2:透過程式碼建立(進階)
在 realtime_ai_character/character_catalog/ 目錄下建立一個新的 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(檢索增強生成),可以讓角色基於特定知識對話:
# 使用 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 的「即時」體驗是其最大亮點。整個互動流程如下:
語音互動流程
- 使用者說話:瀏覽器透過麥克風擷取音訊
- 語音辨識:音訊透過 WebSocket 傳送到後端,呼叫 Whisper/WhisperX 轉換為文字
- LLM 推理:文字傳送給 LLM(如 GPT-4),生成回覆
- 語音合成:回覆文字呼叫 ElevenLabs/Edge TTS 轉換為音訊
- 即時推送:音訊透過 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 和即時互動感興趣的研究者
快速開始:
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 的基礎上創造出更多令人驚嘆的應用。