语音助手工具转换器

一个将MCP服务器转换为OpenAI API工具格式并提供实时语音交互的AI助手。

  • by dwain-barnes
  • Python
  • 本地部署
  • 4 星标
  • 更新于
在 GitHub 查看 dwain-barnes/fastrtc-mcpo-voice-assistant

使用说明

MCPO语音助手

一个支持语音的人工智能助手,可以转换 MCP(模型上下文协议)服务器 进入 OpenAI API工具格式 并通过FastRTC和Ollama提供实时语音交互。

🚀 这有什么作用

该项目通过以下方式连接MCP服务器和OpenAI兼容的LLM:

  1. 将MCP服务器转换为OpenAI工具 -采用MCP服务器并将其作为OpenAI函数调用格式公开
  2. 语音接口 -使用FastRTC实现实时语音转文本和文本转语音
  3. 工具集成 -通过语音命令无缝调用MCP工具
  4. 多服务器支持 -同时运行多个MCP服务器

🏗️ 建筑

┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
│   Voice Input   │───▶│   FastRTC STT    │───▶│     Ollama      │
│   (Microphone)  │    │                  │    │   (LLM Model)   │
└─────────────────┘    └──────────────────┘    └─────────────────┘
                                                         │
                                                         ▼
┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
│  Voice Output   │◀───│   FastRTC TTS    │◀───│ MCPO Adapter    │
│   (Speakers)    │    │                  │    │ (MCP→OpenAI)    │
└─────────────────┘    └──────────────────┘    └─────────────────┘
                                                         │
                                                         ▼
                                          ┌─────────────────────────────┐
                                          │       MCP Servers           │
                                          │  ┌─────────────────────┐    │
                                          │  │   Time Server       │    │
                                          │  │   (Timezone ops)    │    │
                                          │  └─────────────────────┘    │
                                          │  ┌─────────────────────┐    │
                                          │  │   Airbnb Server     │    │
                                          │  │   (Property search) │    │
                                          │  └─────────────────────┘    │
                                          └─────────────────────────────┘

🛠️ 设置

先决条件

  • Python 3.12+
  • Ollama已安装并正在运行
  • FastRTC 依赖关系

安装

  1. 克隆存储库

    git clone https://github.com/dwain-barnes/fastrtc-mcpo-voice-assistant.git
    cd fastrtc-mcpo-voice-assistant
    
  2. 安装Python依赖项

    pip install -r requirements.txt
    

    或手动安装:

    pip install "fastrtc[vad,stt,tts]"
    pip install ollama-mcpo-adapter
    pip install ollama requests
    
  3. 启动Ollama

    ollama serve
    ollama pull mistral-small3.2:latest
    

🚀 用法

步骤1:启动MCPO服务

MCPO服务将MCP服务器转换为OpenAI API格式:

python mcpo_service_only.py

这将在上启动服务 http://127.0.0.1:8000 具有端点:

  • 时间工具: /time/get_current_time, /time/convert_time
  • Airbnb工具: /airbnb/* (各种搜索端点)
  • 文档: /docs (API文件)

步骤2:启动语音助手

在新终端中:

python fastrtc_mcpo_voice.py

这将打开一个web界面 http://127.0.0.1:7860 您可以在哪里:

  • 点击“开始”开始语音交互
  • 与助理自然交谈
  • 通过工具集成获得语音响应

🎯 语音命令示例

时间查询

  • “伦敦现在几点了?”
  • “将伦敦时间下午3点转换为纽约时间”
  • “东京现在几点了?”

Airbnb搜索

  • “在巴黎为一个人找到Airbnb”
  • “搜索巴塞罗那的公寓”
  • “给我看看罗马的住宿”

合并请求

  • “东京现在几点了,在那里找酒店”

📁 项目结构

├── mcpo_service_only.py      # MCPO service runner
├── fastrtc_mcpo_voice.py     # Voice assistant with tool integration
└── README.md                 # This file

🔧 配置

MCP服务器配置

编辑 mcp_config 在……里面 mcpo_service_only.py:

mcp_config = {
    "mcpServers": {
        "time": {
            "command": "uvx", 
            "args": ["mcp-server-time", "--local-timezone=Europe/London"]
        },
        "airbnb": {
            "command": "npx",
            "args": ["-y", "@openbnb/mcp-server-airbnb", "--ignore-robots-txt"]
        },
        # Add more MCP servers here
    }
}

语音模型

语音助手使用:

  • 单目标跟踪: moonshine/base (语音转文本)
  • 文本转语音: kokoro (文本转语音)
  • LLM: mistral-small3.2:latest (通过Ollama)

🎛️ 特性

语音处理

  • 实时STT/TTS 使用FastRTC
  • 自然对话流 具有暂停检测功能
  • 干净的文本处理 删除格式以获得更好的语音输出

工具集成

  • 自动工具发现 来自MCPO服务
  • 智能结果格式化 用于语音友好响应
  • 错误处理 优美的后撤

MCP服务器支持

  • 多服务器支持 -运行任意数量的MCP服务器
  • 动态刀具加载 -LLM自动可用的工具
  • OpenAI兼容性 -标准函数调用格式

🔍 MCP到OpenAI转换的工作原理

  1. MCP服务器 以MCP格式公开工具
  2. MCPO适配器 从MCP服务器中发现可用工具
  3. 工具转换 将MCP工具模式转换为OpenAI函数格式
  4. Ollama集成 接收标准OpenAI函数调用格式的工具
  5. 执行桥 将函数调用路由回相应的MCP服务器

🛡️ 错误处理

  • 优雅降级 -在没有MCPO服务的情况下工作
  • 连接监控 -检查服务可用性
  • 语音反馈 -通过语音宣布错误
  • 干净关闭 -使用Ctrl+C进行正确的信号处理

🎨 定制

添加新的MCP服务器

  1. 安装MCP服务器
  2. 增添 mcp_config 在……里面 mcpo_service_only.py
  3. 重新启动MCPO服务

修改语音行为

编辑 SYSTEM_PROMPT 在……里面 fastrtc_mcpo_voice.py:

SYSTEM_PROMPT = """You are a helpful voice assistant...
# Customize behavior here
"""

🙏 致谢

  • https://github.com/tappi287/ollama-mcpo-adapter
  • FastRTC 用于实时语音处理
  • 没有 为本地法学硕士服务
  • OpenAI 函数调用标准

准备好与您的工具对话了吗?启动服务并打招呼! 🎤