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