实时语音AI代理

一个生产就绪的实时语音AI代理,具有WebRTC流媒体、Azure OpenAI集成和电话功能,适用于客户支持、语音助手和电话集成等场景。

  • by vaestrada-afni
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 vaestrada-afni/voice-agent-realtime-mcp-sip

使用说明

🎙️ 语音代理实时MCP SIP

生产准备就绪 实时语音AI代理 通过WebRTC流媒体、Azure OpenAI集成和电话功能。

✨ 特性

  • 🎙️ 实时语音对话 使用AI(1-2s延迟)
  • 🌐 基于浏览器的WebRTC -无需安装应用程序
  • 🔧 函数调用系统 -AI可以执行工具和动作
  • 📞 SIP电话就绪 -可扩展用于电话系统
  • 🔒 基于安全令牌的身份验证 -API密钥从未向客户端公开
  • 🎛️ 未来主义平视显示器界面 具有实时音频可视化功能
  • 🌍 10个人工智能语音个性 -合金、灰烬、民谣、珊瑚、回声、鼠尾草、微光、诗句、马林、雪松

🚀 快速开始

先决条件

  • Python 3.11+
  • Azure OpenAI资源 实时API访问
  • 带麦克风的现代网络浏览器

设置(2分钟)

Windows PowerShell:

# 1. Clone and navigate
git clone <your-repo-url>
cd voice-agent-realtime-mcp-sip

# 2. Create virtual environment with uv
uv venv

# 3. Activate virtual environment
.venv\Scripts\Activate.ps1

# 4. Install dependencies
uv pip install -r server/requirements.txt

# 5. Configure Azure OpenAI
cp .env.example .env
# Edit .env with your Azure OpenAI credentials

# 6. Start the server (keep venv activated)
uvicorn server.app:app --reload --port 8000

# 7. Open browser → http://localhost:8000
# Click "Connect" and start talking!

Linux/macOS:

# 1. Clone and navigate
git clone <your-repo-url>
cd voice-agent-realtime-mcp-sip

# 2. Create virtual environment with uv
uv venv

# 3. Activate virtual environment
source .venv/bin/activate

# 4. Install dependencies
uv pip install -r server/requirements.txt

# 5. Configure Azure OpenAI
cp .env.example .env
# Edit .env with your Azure OpenAI credentials

# 6. Start the server (keep venv activated)
uvicorn server.app:app --reload --port 8000

# 7. Open browser → http://localhost:8000
# Click "Connect" and start talking!

环境配置

# Required: Your Azure OpenAI settings
OPENAI_API_KEY=your_azure_openai_key
OPENAI_BASE_URL=https://your-resource.cognitiveservices.azure.com
MODEL=gpt-realtime

# Development settings
CORS_ORIGINS=http://localhost:8000,http://127.0.0.1:8000

🏗️ 建筑

┌─────────────────┐    ┌──────────────────┐    ┌─────────────────────┐
│   Web Browser   │◄──►│   FastAPI Server │◄──►│   Azure OpenAI      │
│                 │    │                  │    │   Realtime API      │
│ • WebRTC Client │    │ • Token Minting  │    │                     │
│ • Audio UI      │    │ • Tool Execution │    │ • Voice Processing  │
│ • Visualizations│    │ • Static Hosting │    │ • AI Responses      │
└─────────────────┘    └──────────────────┘    └─────────────────────┘

关键创新:音频流 直接 浏览器↔ 通过WebRTC实现Azure OpenAI。服务器只提供身份验证令牌并执行工具,从不处理音频数据以获得最佳性能和安全性。

🎛️ 所得

未来派语音界面

  • 实时音频可视化 带有动画戒指和EQ条
  • 实时转录 显示用户和AI语音
  • 10种声音个性 从中选择
  • 赛博朋克风格的用户界面 带有扫描线和霓虹灯效果

函数调用系统

AI可以执行的内置工具:

  • create_ticket -生成支持票
  • lookup_order -检查订单状态
  • 易于扩展 -添加自己的业务逻辑

电话就绪

  • SIP webhook存根 用于Twilio/CPaaS集成
  • 媒体流桥接 建筑
  • DTMF和呼叫转移 准备

🛠️ 技术栈

组件 技术 目的
前端 香草JS+WebRTC 实时音频流
后端 FastAPI+Python 令牌认证和工具执行
人工智能/语音 Azure OpenAI实时API 语音处理和响应
音频 WebRTC+Web Audio API 低频率流
包管理 uv 快速Python依赖管理

📁 项目结构

voice-agent-realtime-mcp-sip/
├── 📄 PROJECT_DOCUMENTATION.md   # Comprehensive technical guide
├── 📄 README.md                  # This file
├── 📄 .env.example              # Environment template
├── 
├── 📁 client/                   # Frontend application
│   ├── 📄 index.html           # Voice interface
│   ├── 📁 scripts/
│   │   └── 📄 app.js           # WebRTC client logic
│   └── 📁 styles/
│       └── 📄 main.css         # Futuristic UI styling
├── 
├── 📁 server/                   # Backend application
│   ├── 📄 app.py               # Main FastAPI server
│   ├── 📄 tools.py             # Function calling endpoints
│   ├── 📄 sip_webhooks.py      # Telephony integration
│   └── 📁 twilio/              # SIP provider examples
└── 
└── 📁 .github/
    └── 📄 copilot-instructions.md  # AI coding guidelines

🔧 定制

添加您自己的工具

# In server/app.py
@tool("your_tool_name")
def your_custom_tool(param: str) -> dict:
    # Your business logic here
    return {"result": "success"}

修改用户界面

  • 样式:编辑 client/styles/main.css
  • 语音选项:更新 client/index.html
  • 可视化:自定义 client/scripts/app.js

SIP集成

在中实现webhook处理程序 server/sip_webhooks.py 用于:

  • 呼入呼叫路由
  • 媒体流桥接
  • DTMF处理

🔐 安全

  • ✅ API密钥从未公开 到浏览器
  • ✅ 短命代币 (60秒寿命)
  • ✅ CORS保护 具有可配置的来源
  • ✅ 直接音频流 (无服务器端音频处理)

🐛 故障排除

常见问题

问题 解决方案
连接失败 检查Azure OpenAI API密钥和型号名称
无音频 授予麦克风权限,确保生产中的HTTPS
404错误 验证Azure资源区域(eastus2与swedencentral)
语音错误 使用支持的语音:合金、灰烬、民谣、珊瑚、回声、鼠尾草、微光、诗歌、马林、雪松

调试模式

# Add to .env for detailed logging
DEBUG=true
LOG_LEVEL=DEBUG

🚀 部署

地方发展

# Windows: Activate venv first, then run
.venv\Scripts\Activate.ps1
uvicorn server.app:app --reload --port 8000
# Linux/macOS: Activate venv first, then run
source .venv/bin/activate
uvicorn server.app:app --reload --port 8000

生产

  • 需要HTTPS (WebRTC要求)
  • 更新CORS_ORIGINS 对于您的域名
  • 考虑限速 监测
  • 水平扩展 带负载平衡器

🎯 用例

  • 客户支持:24/7人工智能语音代理
  • 语音助理:自定义业务应用程序
  • 电话技术:PBX和呼叫中心集成
  • 无障碍:语音优先接口
  • 教育:语言学习和教程

📚 文档

🤝 贡献

  1. 遵循以下模式 .github/copilot-instructions.md
  2. 使用 uv 用于依赖关系管理
  3. 提交前测试语音连接
  4. 记录新工具和端点

📄 许可证

MIT许可证-请参阅 许可证 了解详情。

🙏 致谢

  • Azure OpenAI 实时API
  • 网页实时通信 实时通信社区
  • 快速API 优秀的Python框架

🎙️ 准备好构建语音AI的未来了吗?

⭐ 标记此回购 • 🐛 报告问题 • 🔀 提交PR

内置❤️ 以及尖端的人工智能技术