视障语义地图导航预览系统
基于多模态大模型的视障人士导航播报生成系统
CorSight Navigation 是一个专为视障人士设计的导航路线行前语音预览系统。系统利用高德地图 API 获取导航路线,结合街景采样点数据,通过多模态大模型(Gemini/Qwen/DeepSeek)分析街景图片并生成自然、准确、易懂的语音导航播报。
- 🗺️ 智能路线规划 - 基于高德地图 API 的路径规划
- 🖼️ 街景语义分析 - 多模态大模型分析街景图片,识别障碍物、路口特征
- 🎙️ 自然语音播报 - 生成符合视障人士认知习惯的导航播报文案
- ⏱️ 行前预览模式 - 出发前即可"聆听"完整路线,降低出行焦虑
- 🤖 多模型支持 - 支持 Gemini、DeepSeek、阿里云百炼 Qwen 等多种大模型
- 🎯 双模型分工 - 视觉模型分析图片,文本模型生成播报,各司其职
┌─────────────────────────────────────────────────────────────┐
│ 前端 (Vite + Vanilla JS) │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ MapViewer │ │ ConfigPanel │ │ PreviewPlayer │ │
│ │ 地图渲染 │ │ 模型配置 │ │ 播报播放器 │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
└───────────────────────────┬─────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────┐
│ 后端 (Express.js) │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ Route Agent │ │PerceptionAgent│ │ LanguageOptimizer │ │
│ │ 路线规划 │ │ 环境感知 │ │ 语言优化 │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────────┐ │
│ │ Spatial MW │ │ LLM Client │ │ Model Tester │ │
│ │ 空间降噪 │ │ 大模型接入 │ │ 模型探测 │ │
│ └─────────────┘ └─────────────┘ └─────────────────────┘ │
└───────────────────────────┬─────────────────────────────────┘
│
┌───────────┴───────────┐
▼ ▼
┌──────────────┐ ┌──────────────┐
│ 高德地图 API │ │ 大模型 API │
│ 路线/地图数据│ │Gemini/DeepSeek│
└──────────────┘ └──────────────┘
- Node.js >= 18.0.0
- MongoDB >= 5.0(用于街景数据存储)
- 高德地图 API Key(路线规划服务)
- 大模型 API Key(至少配置一个:Gemini/DeepSeek/阿里云百炼)
# 克隆项目
git clone <your-repo-url>
cd navigation_agent
# 安装后端依赖
cd backend
npm install
# 安装前端依赖
cd ../frontend
npm install在项目根目录 backend/.env 文件中配置 API Keys:
# 高德地图 API Key(必须)
GAODE_KEY=your_gaode_api_key
# MongoDB 连接(必须)
MONGODB_URI=mongodb://localhost:27017/blindmap
# 大模型 API Keys(至少配置一个)
GOOGLE_API_KEY=your_gemini_api_key
DEEPSEEK_API_KEY=your_deepseek_api_key
DASHSCOPE_API_KEY=your_bailian_api_key
# 代理配置(如需)
HTTPS_PROXY=http://127.0.0.1:7890开发模式(需要同时运行三个服务):
# 终端 1: 启动 Blind_map 后端(街景图片服务)
cd ../Blind_map/backend
npm start
# 服务运行在 http://localhost:3001
# 终端 2: 启动 navigation_agent 后端
cd navigation_agent/backend
npm start
# 服务运行在 http://localhost:3002
# 终端 3: 启动 navigation_agent 前端
cd navigation_agent/frontend
npm run dev
# 服务运行在 http://localhost:3000访问 http://localhost:3000 即可使用系统。
navigation_agent/
├── backend/ # Express.js 后端
│ ├── agents/ # AI Agent 层
│ │ ├── perceptionAgent.js # 环境感知 Agent(多模态分析)
│ │ └── languageOptimizerAgent.js # 语言优化 Agent
│ ├── config/ # 配置管理
│ │ └── llmConfig.js # LLM 配置(多模型支持)
│ ├── controllers/ # 控制器
│ │ └── previewController.js # 导航预览控制器
│ ├── middleware/ # 中间件
│ │ └── spatialMiddleware.js # 空间逻辑降噪中间件
│ ├── routes/ # API 路由
│ │ ├── configRoutes.js # 配置路由
│ │ ├── mapRoutes.js # 地图路由
│ │ └── navigationRoutes.js # 导航路由
│ ├── services/ # 服务层
│ │ ├── amapService.js # 高德地图服务
│ │ ├── corsightService.js # CorSight 数据服务
│ │ ├── llmClient.js # 统一大模型客户端
│ │ └── modelTester.js # 模型可用性探测
│ ├── prompts/ # 提示词模板
│ │ ├── defensivePrompts.js # 防御性提示词
│ │ └── sceneScoutPrompts.js # 场景分析提示词
│ ├── server.js # 服务入口
│ └── .env # 环境变量配置
├── frontend/ # Vite 前端
│ ├── src/
│ │ ├── components/ # UI 组件
│ │ │ ├── ConfigPanel.js # LLM 配置面板
│ │ │ ├── MapViewer.js # 地图组件
│ │ │ ├── PreviewPlayer.js # 播报播放器
│ │ │ └── StreetViewModal.js # 街景弹窗
│ │ ├── services/ # API 服务
│ │ │ └── api.js # API 封装
│ │ ├── utils/ # 工具函数
│ │ │ └── ttsEngine.js # TTS 语音引擎
│ │ ├── main.js # 入口文件
│ │ └── style.css # 样式文件
│ ├── index.html
│ └── vite.config.js
├── test/ # 测试脚本
│ ├── test-api-models.js # API 模型测试
│ ├── debug-preview-api.js # 预览 API 调试
│ └── phase2-debug/ # Phase 2 调试工具
└── project/ # 项目文档
└── *.md # 开发指导文档
进入配置面板:
- 选择视觉模型(用于街景图片分析)- 推荐 Gemini 2.5 Flash 或 Qwen-VL
- 选择文本模型(用于生成播报文案)- 推荐 DeepSeek V3 或 Qwen-Max
- 在地图上点击设置起点和终点
- 系统自动调用高德 API 规划路线
- 显示路线上的关键决策点(转弯、路口等)
点击"生成推演播报"按钮:
- Step 1: 路线规划 → 获取导航路径
- Step 2: 空间降噪 → 提取关键节点
- Step 3: 环境感知 → 分析街景图片(并发处理)
- Step 4: 语言优化 → 生成自然播报
- 播放器显示完整播报文案
- 支持播放/暂停/停止控制
- 配合 TTS 引擎朗读播报内容
- Express.js - Web 框架
- Mongoose - MongoDB ORM
- Google GenAI SDK - Gemini 多模态模型
- OpenAI SDK - DeepSeek/Qwen API 调用
- axios - HTTP 请求
- https-proxy-agent - 代理支持
- Vite - 构建工具
- Vanilla JavaScript - 原生 JS
- 高德地图 JSAPI - 地图渲染
- 原生 Web Speech API - TTS 语音合成
- Google Gemini - 多模态理解
- DeepSeek - 文本生成
- 阿里云百炼 Qwen - 中文优化
视障语义地图导航预览系统界面
系统包含:
- 🗺️ 高德地图底座(支持选点、标记)
- 📋 LLM 配置面板(双模型选择)
- 🎙️ 播报播放器(播放控制、TTS 朗读)
- 🖼️ 街景预览弹窗(8 方向街景切换)
系统支持自动探测模型可用性:
# 访问探测接口
curl http://localhost:3002/api/config/llm/probe或在前端点击"探测模型可用性"按钮。
如需代理访问外网 API,在 .env 中设置:
HTTPS_PROXY=http://127.0.0.1:7890在 backend/config/llmConfig.js 中添加新模型:
availableModels: {
gemini: [
'gemini-2.5-flash',
'gemini-2.0-pro'
]
// ...
}# 运行模型 API 测试
cd test
node test-api-models.js
# 调试预览 API
node debug-preview-api.js- 项目启动指南 - 详细启动步骤
- Phase 3 开发文档 - 空间逻辑中间件
- Phase 4 开发文档 - 大模型接入
- Phase 5 开发文档 - TTS 与播放器
欢迎提交 Issue 和 PR!
- Fork 本仓库
- 创建功能分支:
git checkout -b feature/amazing-feature - 提交更改:
git commit -m 'Add amazing feature' - 推送分支:
git push origin feature/amazing-feature - 提交 Pull Request
本项目采用 MIT 许可证 开源。
- 高德地图开放平台提供地图 API 服务
- Google Gemini、DeepSeek、阿里云百炼提供大模型能力
- 视障用户研究社区提供的认知模型指导
Made with ❤️ for Accessibility