RealChar:AI ロールを「生き」させるオープンソースプラットフォーム
2026 年、AI チャットボットがあふれる中、ほとんどの製品はまだ「テキスト会話」の段階にとどまっています——テキストを入力し、AI がテキストで返答するだけで、インタラクションは単調で没入感に欠けます。RealChar はこの状況を打破します:完全にオープンソースの AI リアルタイムロールインタラクションプラットフォームで、ユーザーは独自の性格とバックグラウンドを持つ AI キャラクターを作成するだけでなく、音声によるリアルタイム会話も可能です。まるで実際の人物と話しているかのように。
RealChar プロジェクトは GitHub で 8,000 個以上のスターを獲得し、LangChain 公式ブログでは「オープンソースツールを使って AI コンパニオンを構築する」典型例として推奨されています。その核となる考え方はシンプルです:誰でもコードを書かずに自分だけの AI ロールを作り、最も自然な方法——音声——で対話できるようにする。
この記事では、RealChar の技術アーキテクチャ、デプロイ方法、ロール作成プロセス、リアルタイムインタラクションの仕組みについて詳しく解説し、教育、エンターテイメント、カスタマーサービスなどのユースケースにおける応用可能性も探ります。
技術アーキテクチャ:モジュラー設計で柔軟に拡張可能
RealChar のテクノロジースタックは典型的なモダンなウェブアプリケーションアーキテクチャに基づいていますが、AI 機能の統合において多くのイノベーションが施されています。システムは以下の 4 つのコアレイヤーに分けることができます。
フロントエンドインタラクションレイヤー
RealChar は以下の 3 種類のクライアントを提供します。
- ウェブクライアント:React.js と Vanilla JS をベースに構築し、WebSocket を介してリアルタイム双方向通信を実現。インターフェイスはシンプルかつ直感的で、テキストモードと音声モードの両方をサポートします。
- モバイルクライアント:iOS 向けに Swift でネイティブ開発され、同様に WebSocket ベース。モバイル体験が滑らかで、オープンソースのモバイル AI ロールアプリはごく少数です。
- ターミナル CLI:開発者向けのコマンドラインクライアント。素早いテストや統合に適しています。
バックエンドサービスレイヤー
バックエンドは FastAPI フレームワークを採用しています。FastAPI は高パフォーマンスな Python ウェブフレームワークで、非同期処理と 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):
- ローカル Whisper / WhisperX(ローカルデプロイメントに推奨)
- OpenAI Whisper API
- Google Speech-to-Text
音声合成(TTS):
- Edge TTS(デフォルト。無料)
- ElevenLabs(高品質。音声クローンをサポート)
- Google Text-to-Speech
ベクトルデータベース:Chroma を使用し、ロールのナレッジベースをベクトルとして保存。これにより RAG(Retrieval-Augmented Generation)が可能になり、ドメイン固有の知識に基づいた会話ができます。
データインジェストレイヤー
LlamaIndex を使ってナレッジを取り込みます。ドキュメント、ウェブページ、データベースなどの外部ナレッジソースをベクトルに変換し、Chroma に保存します。こうすることで、たとえば「歴史家」ロールに歴史文献を食わせたり、「製品エキスパート」ロールに製品マニュアルを読み込ませたりできます。
Docker デプロイ:5 分でクイックスタート
RealChar は完全な Docker サポートを提供しており、これが推奨されるデプロイメント方法です。手順はたったの 3 ステップです。
ステップ 1:リポジトリをクローンし、環境変数を設定
git clone https://github.com/Shaunwei/RealChar.git
cd RealChar
cp .env.example .env
.env ファイルを編集し、API キーを入力します。最小構成では LLM の API キー 1 つだけが必要です。
# 方法 1:ReByte を使用(推奨)
REBYTE_API_KEY=あなたの_rebyte_api_key
# 方法 2:OpenAI を使用
OPENAI_API_KEY=あなたの_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
このコマンドは 3 つのサービスを自動的にビルドして起動します。
- 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 のウェブインターフェイスが表示されます。プリセットされたキャラクターを選んで会話を始めてください!
注意点:
- Docker Desktop(Windows/Mac)を使用する場合は、十分なメモリを割り当ててください(推奨:8 GB+)。
- 初回起動時は依存関係とモデルのダウンロードが発生し、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 キーを入力
# バックエンドを起動
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 ロールを作成できる点にあります。作成方法は 2 つあります。
方法 1:ウェブ UI を使って作成(コーディング不要)
- ウェブインターフェイスにログインし、「Create Character」をクリック。
- ロール情報を入力: - 名前:ロール名 - 説明:ロールの簡単な説明 - パーソナリティ:パーソナリティの説明(例:「友好的、ユーモラス、忍耐強い」) - バックグラウンド:ロールの背景ストーリー(例:「十字軍に参加した中世の騎士」) - 挨拶:ロールの開口白
- (オプション)アバターをアップロード。
- 声を選択(ElevenLabs を使用する場合は特定の声をクローン可能)。
- 「Save」をクリックしてロールを作成。
方法 2:コードを使って作成(上級者向け)
realtime_ai_character/character_catalog/ ディレクトリに新しい YAML ファイルを作成します。
# my_character.yaml
name: "歴史家アリストテレス"
description: "古代ギリシャの哲学者。哲学、科学、政治に精通"
personality: |
あなたは博学な古代ギリシャの哲学者で、言葉には知恵が満ちています。比喩や物語を使って複雑な概念を説明するのが好きです。
知識への情熱が強く、会話の本質を突くよう導きます。
バックグラウンド: |
アリストテレス(紀元前 384 年 - 紀元前 322 年)は古代ギリシャの哲学者で、プラトンの弟子であり、アレクサンダー大帝の教師でもあります。
彼の著作は物理学、形而上学、倫理学、政治学、生物学など多岐にわたります。
観察と論理的推論を通じて世界の本質を理解できると信じています。
挨拶: "若き知識追求者よ、こんにちは。私はアリストテレス。一緒に真理の秘密を探りましょう。"
声: "en-US-ChristopherNeural" # Edge TTS の声
# または ElevenLabs: voice_id: "あなたの声ID"
ファイルを保存したらバックエンドを再起動すると、ロールが自動的にロードされます。
ロールにナレッジベースを追加
RealChar は RAG(Retrieval-Augmented Generation)をサポートしており、特定のナレッジに基づいた会話が可能です。
# 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("アリストテレス", index)
これで、「アリストテレス」に倫理学について質問したとき、ユーザーが提供した文献に基づいて専門的な回答を返すようになります。
リアルタイムインタラクションの仕組み
リアルタイム体験こそが RealChar の最大の魅力です。インタラクションフローは次のようになります。
音声インタラクションフロー
- ユーザーが発話:ブラウザのマイクが音声をキャプチャ。
- 音声認識:音声が WebSocket を介してバックエンドに送信され、Whisper/WhisperX でテキストに変換。
- LLM 推論:テキストが LLM(例えば GPT-4)に送信され、返答が生成。
- 音声合成:返答テキストが ElevenLabs/Edge TTS で音声に変換。
- リアルタイムプッシュ:音声が WebSocket を介してストリームとしてフロントエンドにプッシュされ、再生されます。
全体の遅延は通常 1〜3 秒程度で、主に LLM 推論と音声合成によるものです。
遅延を減らすコツ
- GPT-3.5 を使用(推論が速い)
- ローカル WhisperX に GPU を追加(ローカル音声認識を高速化)
- ElevenLabs V2 を使用(より高速な TTS)
- ストリーミングレスポンス を有効にする(RealChar はデフォルトでサポート)
テキストインタラクション
音声を使いたくない場合は、テキストボックスに直接入力できます。その場合は音声認識と音声合成のステップをスキップし、テキストレスポンスのみが返されます。
ユースケース
柔軟なアーキテクチャにより、RealChar はさまざまなシナリオで活用できます。
1. バーチャルアシスタント
「製品マネージャーアシスタント」ロールを作成し、製品ドキュメント、ユーザーフィードバック、競合情報を学習させます。チームメンバーは音声で質問できます:「先週のユーザーフィードバックで最も大きな痛点は何だった?」ロールはナレッジベースに基づいて答えます。
2. オンライン教育
「物理の先生 ニュートン」ロールを作成し、物理教材をインポートします。生徒は「ニュートン」と力学について議論し、歴史と物理を融合させた没入型学習体験が得られます。従来の教科書よりもはるかに魅力的です。
3. エンターテイメントと伴侶
「ジョークの効いたスタンダップコメディアン」ロールを作成し、ユーモラスな性格とバックグラウンドを設定します。ユーザーは気軽に雑談したり、さらには「コメディバトル」を楽しめます。
4. カスタマーサービスボット
EC サイト向けに「プロフェッショナルカスタマーサービス 小王」ロールを作成し、製品マニュアル、返品ポリシー、FAQ を学習させます。顧客は音声で注文状況や返品手順などを問い合わせられ、従来のテキストベースのカスタマーサービスよりも自然な対話が可能です。
5. 言語学習
「英語の先生 エンマ」ロールを作成し、忍耐強くフレンドリーな米国の教師として設定します。学習者はエンマと英会話の練習をし、発音修正や学習アドバイスを受けられます。
他の AI チャットプラットフォームとの比較
RealChar は一般的な AI チャット製品と明確に異なります。
| 特徴 | RealChar | Character.AI | シンプルなチャットボット |
|---|---|---|---|
| オープンソース | ✅ 完全オープン | ❌ クローズド | ❌ クローズド |
| 音声インタラクション | ✅ リアルタイム音声 | ❌ テキストのみ | ❌ テキストのみ |
| セルフホステッド | ✅ Docker/Python | ❌ クラウド専用 | ❌ クラウド専用 |
| LLM の選択肢 | ✅ 複数モデル対応 | ❌ 固定モデル | ❌ 固定モデル |
| ナレッジベース | ✅ RAG サポート | ❌ 制限あり | ❌ 制限あり |
| 音声クローン | ✅ ElevenLabs | ❌ サポートなし | ❌ サポートなし |
| データプライバシー | ✅ ローカルホスティング | ❌ クラウド保存 | ❌ クラウド保存 |
| カスタマイズ性 | ✅ 高度にカスタマイズ可能 | ⚠️ 制限あり | ⚠️ 制限あり |
RealChar の利点: - 完全オープンソース:ソースコードを自由に変更し、特定ニーズに対応可能。 - リアルタイム音声インタラクション:真の「会話」体験を提供し、テキストチャットに留まらない。 - データプライバシー:ローカルデプロイによりデータが外部に漏れない。 - 拡張性:モジュラー設計なので新機能の追加が容易。
RealChar の欠点: - セルフホスティングとメンテナンスが必要。 - API キーが必要(使用にコストがかかる場合がある)。 - モバイルアプリは現在 iOS のみ対応。
今後のロードマップ
RealChar の GitHub ロードマップによると、今後の重点開発分野は以下の通りです。
- ✅ セッション管理:マルチターン会話のコンテキスト管理をサポート。
- ✅ RAG 強化:ナレッジベース管理機能をさらに強化。
- ✅ Agents/GPTs サポート:エージェント機能を統合し、ロールが複雑なタスクを実行可能に。
- ✅ さらに多くの TTS サービス:追加の音声合成エンジンへの対応。
- ⏳ マルチモーダルインタラクション:将来的に画像・ビデオ入力をサポートする可能性。
- ⏳ ロールマーケットプレイス:ユーザーがロール設定を共有・ダウンロードできるプラットフォーム。
コミュニティは Discord で活発に活動しており、定期的なアップデートとメンテナンスが行われています。プロジェクトは MIT ライセンスで公開されており、コントリビューションを歓迎しています。
結論
RealChar はオープンソースの AI リアルタイムロールインタラクションプラットフォームとして非常に有望です。単なる技術スタックの提供にとどまらず、リアルタイム音声インタラクションによって従来のテキストチャットの限界を突破します。
対象ユーザー: - パーソナライズされた AI コンパニオンを作りたいすべての人 - AI ロール機能が必要な開発者 - データプライバシーを重視し、ローカルデプロイを希望する企業 - AI エージェントとリアルタイムインタラクションに関心のある研究者
クイックスタート:
git clone https://github.com/Shaunwei/RealChar.git
cd RealChar
cp .env.example .env
# .env に API キーを設定
docker compose up
# ブラウザで http://localhost:3000 にアクセス
日常の虚空な会話相手を求めているか、ビジネス向けのインテリジェントカスタマーサービスを構築しようとしているかにかかわらず、RealChar はしっかりとした基盤を提供します。オープンソースであるため、コミュニティが協力してプラットフォームを進化させ、次々と驚くべき応用を生み出すことができるでしょう。