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:

speaking_bot.sh
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"
  }'
speaking_bot.py
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)
Meeting BaaS API Preview Features

资源