Speaking Bots
具有可自定义角色的 AI 驱动会议参与者
Speaking Bots 是一个开源实现,可创建能够加入视频会议并参与其中的 AI 会议代理,其独特的个性和上下文通过 Markdown 文件定义。
我们的实现扩展了 Pipecat 的 Python 框架,以创建:
- 通过 Meeting BaaS API 加入 Google Meet、Zoom 或 Microsoft Teams 的会议代理
- 具有独特上下文的可自定义角色
- 支持在本地或大规模运行多个实例
- 通过 WebSocket 基础设施进行实时音频处理
该 API 采用简约设计,提供合理的默认值,同时支持可选的自定义配置。只需提供会议 URL 和 API key,即可 deploy 一个 bot,并可通过额外参数来定制行为。
功能特性
- AI 驱动的对话: Bot 能够进行自然流畅的对话,实时回应会议参与者。
- 可自定义角色: 通过 Markdown 定义的上下文,deploy 具有不同个性和特定知识库的 bot。
- 多平台支持: 通过同一个 API 支持 Google Meet、Zoom 和 Microsoft Teams。
- 语音活动检测: 智能检测何时发言、何时聆听,并支持可配置参数。
- 函数调用工具: 内置工具用于查询天气、时间及其他上下文信息,可按需启用或禁用。
- LLM 上下文管理: 在整个会议过程中保持一致、连贯的对话。
- 多 Bot 实例: 在同一会议中运行多个具有不同角色和职能的 bot。
核心技术
- Pipecat: 驱动实时音频处理 pipeline 的 Python 框架
- Meeting BaaS: 适用于视频平台的会议 bot deploy API
- 文本转语音: 使用 Cartesia 进行 bot 语音合成
- 语音转文字: 使用 Deepgram 或 Gladia 进行语言识别
- 语音 AI: 使用 OpenAI GPT 模型生成对话
- 数据传输: 基于 Protocol Buffers 的 WebSocket 通信
API 使用方式
Speaking Bot API 可通过 speaking.meetingbaas.com 访问。OpenAPI 规范文档请访问 speaking.meetingbaas.com/openapi.json。
该 API 提供以下 endpoint:
- 在会议中创建并 deploy speaking bot
- 从会议中移除 bot
- 管理用于音频流的 WebSocket 连接
Deploy 示例
要通过 API deploy 一个 Speaking Bot,只需发送一个 POST request:
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)