语音助手

一个端到端的语音交互助手,支持语音输入、意图识别、工具调用和语音播报的完整链路。

  • by V8dkA
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 V8dkA/voice-mcp-assistant

使用说明

Voice Assistant — 语音 + LLM + MCP 智能助手

一个端到端的语音交互助手,支持语音输入 → 意图识别 → MCP 工具调用 → 语音播报的完整链路。

功能特性

  • 语音识别 (ASR):基于讯飞实时语音转写,支持中文普通话
  • 意图识别:DeepSeek 大模型自动识别用户意图(天气、POI搜索、路线规划等)
  • MCP 工具调用:通过高德地图 MCP 获取实时数据(天气查询、兴趣点搜索、路线规划、地理编码等)
  • 语音合成 (TTS):讯飞语音合成,查询结果自动播报
  • 流式交互:前端实时展示处理步骤(录音 → 识别 → 意图 → 调用 → 生成 → 播报)

技术架构

用户语音 → [前端录音] → PCM上传
    → [讯飞ASR] 语音转文字
    → [DeepSeek] 意图识别 + 参数提取
    → [高德MCP] 工具调用(天气/POI/路线/地理编码)
    → [DeepSeek] 结果整理生成自然语言回复
    → [讯飞TTS] 文字转语音
    → [前端播放] 语音播报

技术栈

层级 技术
前端 Vue 3 + Vite
后端 Python 3.11+ + FastAPI
语音识别 讯飞实时语音转写 (WebSocket)
语音合成 讯飞在线语音合成 v2 (WebSocket)
大模型 DeepSeek Chat (OpenAI SDK 兼容)
工具调用 高德地图 MCP (Streamable HTTP)

支持的意图类型

意图 示例 数据来源
天气查询 "北京今天天气怎么样" 高德天气 API
POI 搜索 "附近有什么咖啡店" 高德 POI 搜索
周边搜索 "我附近3公里内的加油站" 高德周边搜索
驾车路线 "从北京到上海怎么开车" 高德驾车规划
步行路线 "走路去天安门怎么走" 高德步行规划
骑行路线 "骑车去最近的地铁站" 高德骑行规划
公交路线 "坐地铁从望京到国贸" 高德公交规划
地理编码 "北京市朝阳区的经纬度" 高德地理编码
逆地理编码 "经度116.4,纬度39.9是哪里" 高德逆地理编码
距离计算 "北京到天津多远" 高德距离测量

快速启动

1. 克隆项目

git clone <your-repo-url> && cd project2

2. 配置 API 密钥

cp backend/config.yaml.example backend/config.yaml

编辑 backend/config.yaml,填入以下 API 密钥:

3. 启动后端

cd backend
pip install -r requirements.txt
uvicorn app.main:app --reload

后端运行在 http://localhost:8000

4. 启动前端

cd frontend
npm install
npm run dev

前端运行在 http://localhost:5173

项目结构

├── frontend/                # Vue 3 前端
│   └── src/
│       ├── App.vue          # 主界面(录音、步骤展示、音频播放)
│       └── main.js
├── backend/                 # Python FastAPI 后端
│   ├── config.yaml.example  # 配置模板(API 密钥占位符)
│   ├── requirements.txt
│   └── app/
│       ├── main.py          # FastAPI 入口
│       ├── config.py        # YAML 配置读取
│       ├── api/routes.py    # API 路由(/api/voice-query, /api/asr, /api/tts)
│       └── services/
│           ├── pipeline.py  # 主管线编排(ASR → 意图 → MCP → 生成 → TTS)
│           ├── asr.py       # 讯飞语音识别
│           ├── tts.py       # 讯飞语音合成
│           ├── amap_mcp.py  # 高德 MCP 工具调用
│           ├── deepseek.py  # DeepSeek 意图识别 + 回复生成(未找到则为内联)
│           └── audio_util.py # PCM ↔ WAV 转换
└── README.md

API 接口

方法 路径 说明
POST /api/voice-query 完整语音管线(上传音频 → 返回回复文本 + 语音)
POST /api/asr 单独测试语音识别
POST /api/tts 单独测试语音合成