Speaking Bots
カスタマイズ可能なペルソナを持つAI搭載ミーティング参加者
Speaking Botsは、Markdownファイルで定義された独自の個性とコンテキストを持つAIミーティングエージェントを作成し、ビデオミーティングに参加・発言できるオープンソースの実装です。
本実装はPipecatのPythonフレームワークを拡張し、以下を実現します。
- Meeting BaaS APIを通じてGoogle Meet、Zoom、Microsoft TeamsにJoinできるミーティングエージェント
- 独自のコンテキストを持つカスタマイズ可能なペルソナ
- ローカルまたは大規模環境での複数インスタンスの実行サポート
- WebSocketインフラによるリアルタイム音声処理
このAPIはシンプルなデザインと適切なデフォルト値を採用しつつ、オプションのカスタマイズも提供しています。botはミーティングURLとAPIキーだけでdeployでき、動作を調整するための追加パラメータも利用可能です。
機能
- AI搭載の会話: botはリアルタイムでミーティング参加者に応答し、自然な会話を行うことができます。
- カスタマイズ可能なペルソナ: Markdownで定義されたコンテキストを通じて、異なる個性と特定の知識ベースを持つbotをdeployできます。
- マルチプラットフォーム対応: 1つのAPIでGoogle Meet、Zoom、Microsoft Teamsに対応しています。
- 音声アクティビティ検出: 設定可能なパラメータにより、発話タイミングと聴取タイミングをインテリジェントに検出します。
- ファンクションコーリングツール: 天気、時刻、その他のコンテキスト情報を確認するための組み込みツールを有効・無効にできます。
- LLMコンテキスト管理: ミーティング全体を通じて一貫性のある会話を維持します。
- 複数botインスタンス: 異なるペルソナと役割を持つ複数のbotを1つのミーティングで実行できます。
コア技術
- Pipecat: リアルタイム音声処理pipelineを動かすPythonフレームワーク
- Meeting BaaS: ビデオプラットフォーム向けミーティングbot deploy API
- テキスト読み上げ: botの音声合成にCartesiaを使用
- 音声認識: 言語認識機能付きのDeepgramまたはGladia
- Voice AI: 会話生成にOpenAI GPTモデルを使用
- データ転送: Protocol BuffersによるWebSocket通信
APIの使用方法
Speaking Bot APIはspeaking.meetingbaas.comでアクセスできます。OpenAPI仕様はspeaking.meetingbaas.com/openapi.jsonで確認できます。
このAPIは以下のendpointを提供しています。
- ミーティングでのspeaking botの作成とdeploy
- ミーティングからのbotの削除
- 音声ストリーミング用WebSocket接続の管理
Deployの例
APIを使用してSpeaking BotをDeployするには、POSTリクエストを送信するだけです。
curl -X POST https://speaking.meetingbaas.com/bots \
-H "Content-Type: application/json" \
-d '{
"meeting_url": "https://us06web.zoom.us/j/123456789?pwd=example",
"personas": ["baas_onboarder"],
"meeting_baas_api_key": "your-api-key"
}'import requests
import json
def deploy_speaking_bot():
url = "https://speaking.meetingbaas.com/bots"
headers = {
"Content-Type": "application/json",
"x-meeting-baas-api-key": "your-api-key"
}
payload = {
"meeting_url": "https://meet.google.com/abc-defg-hij",
"bot_name": "AI Assistant",
"personas": ["helpful_assistant"],
"entry_message": "Hello! I'm your AI assistant for this meeting.",
"bot_image": "https://example.com/bot-avatar.png",
"enable_tools": True,
"extra": {
"company": "Your Company",
"meeting_purpose": "Team sync"
}
}
response = requests.post(url, headers=headers, json=payload)
return response.json()
# Deploy the speaking bot
result = deploy_speaking_bot()
print(result)