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 创建(零代码)

  1. 登录 Web 界面后,点击"Create Character"
  2. 填写角色信息: - Name:角色名称 - Description:角色简介 - Personality:性格描述(如"友好、幽默、耐心") - Background:背景故事(如"中世纪骑士,曾参与十字军东征") - Greeting:角色的开场白
  3. 上传角色头像(可选)
  4. 选择语音(如果使用 ElevenLabs,可以克隆特定声音)
  5. 点击"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 的"实时"体验是其最大亮点。整个交互流程如下:

语音交互流程

  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 和实时交互感兴趣的研究者

快速开始

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 的基础上创造出更多令人惊叹的应用。