Files
NaviGlassServer/README.md
2026-01-05 14:39:16 +08:00

6.8 KiB
Raw Blame History

NaviGlass Server 🤖👓

面向视障人士的智能导航与辅助系统 - 服务器端

基于 FastAPI + YOLO 分割 + 多模态 AI 的高性能 Python 服务端

功能特性技术栈快速开始系统架构


⚠️ 声明

本项目仅供学习交流,请勿直接用于视障人群实际场景。


功能特性

🚶 盲道导航

  • YOLO 实时分割 + Lucas-Kanade 光流稳定
  • 智能方向引导(左转/右转/直行)
  • 障碍物检测 + 自动避障

🚦 过马路辅助

  • 斑马线检测与对齐引导
  • 红绿灯状态识别 (HSV + YOLO)

🔍 物品查找

  • YOLO-E 开放词汇检测 + ByteTrack 追踪
  • MediaPipe 手部引导

🎙️ 智能语音交互

  • 实时语音识别 + 多模态对话 + TTS 语音播报

🔧 技术栈

核心框架

组件 技术 说明
语言 Python 3.9+ -
Web 框架 FastAPI 高性能异步 Web 框架
服务器 Uvicorn 基于 uvloop 的 ASGI 服务器
通信 WebSocket 音视频实时双向传输

AI 交互管道

组件 技术 说明
大语言模型 GLM-4.6v-Flash 智谱 AI (zai-sdk),支持多模态视觉
语音识别 SenseVoiceSmall FunASR 本地部署,高精度中文
语音活动检测 Silero VAD PyTorch 实现,含 300ms 环形缓冲
语音合成 EdgeTTS 微软 Edge TTS免费且自然

计算机视觉

组件 技术 说明
目标检测/分割 Ultralytics YOLO11 检测 + 语义分割
推理加速 TensorRT FP16 半精度,.engine 格式
图像编解码 PyTurboJPEG 比 OpenCV 快 2-3 倍
手势识别 MediaPipe 手部检测与追踪

高性能计算

组件 技术 说明
GPU 计算 CUDA PyTorch + RTX 3090
数学加速 Numba JIT NumPy 矩阵运算加速
并发模型 AsyncIO + Threading WebSocket 高并发
GPU 调度 Semaphore 2-4 槽位并行推理

💻 系统要求

组件 最低要求 推荐配置
GPU RTX 3060 (CUDA 11.8+) RTX 3090
内存 8GB 16GB+
Python 3.9 3.10

API 密钥

服务 环境变量 申请地址
智谱 AI GLM_API_KEY https://open.bigmodel.cn/
阿里云 (可选) DASHSCOPE_API_KEY https://dashscope.console.aliyun.com/

🚀 快速开始

1. 安装依赖

python -m venv venv
venv\Scripts\activate  # Windows
pip install -r requirements.txt

2. 下载模型

将模型放入 model/ 目录:

模型 用途
yolo-seg.pt 盲道分割
yoloe-11l-seg.pt 障碍物/开放词汇检测
yolo11l-seg-indoor.engine 室内导盲 (20类)
SenseVoiceSmall/ 语音识别

模型下载: https://www.modelscope.cn/models/archifancy/AIGlasses_for_navigation

3. 配置环境

编辑 .env

CUDA_VISIBLE_DEVICES=0
AIGLASS_DEVICE=cuda:0
AIGLASS_YOLO_IMGSZ=480
GLM_API_KEY=your_key

4. 启动

python app_main.py

访问 http://localhost:8081


🏗️ 系统架构

┌────────────────────────────────────────────────┐
│              FastAPI 主服务                     │
│   app_main.py (WebSocket/HTTP 路由)            │
└────┬───────────────┬───────────────┬───────────┘
     │               │               │
┌────▼────┐    ┌─────▼─────┐   ┌─────▼─────┐
│SenseVoice│    │GLM-4.6v   │   │ EdgeTTS   │
│ 本地ASR  │    │ 多模态LLM │   │ 语音合成   │
└─────────┘    └───────────┘   └───────────┘
     │               │               │
┌────▼───────────────▼───────────────▼───────────┐
│            NavigationMaster 状态机              │
│  IDLE / CHAT / BLINDPATH / CROSSING / SEARCH   │
└────┬───────────────┬───────────────┬───────────┘
     │               │               │
┌────▼────┐    ┌─────▼─────┐   ┌─────▼─────┐
│ 盲道导航 │    │ 过马路    │   │ 物品查找  │
│blindpath│    │crossstreet│   │ yolomedia │
└─────────┘    └───────────┘   └───────────┘
     │               │               │
┌────▼───────────────▼───────────────▼───────────┐
│          YOLO 模型层 (TensorRT FP16)            │
└────────────────────────────────────────────────┘

📁 核心模块

模块 文件 功能
主入口 app_main.py FastAPI + WebSocket
语音识别 sensevoice_asr.py SenseVoice 本地 ASR
语音合成 edge_tts_client.py EdgeTTS
多模态 LLM glm_client.py GLM-4.6v-Flash
状态机 navigation_master.py 导航模式管理
盲道导航 workflow_blindpath.py 盲道检测 + 避障
过马路 workflow_crossstreet.py 斑马线 + 红绿灯
物品查找 yolomedia.py 开放词汇检测

📡 WebSocket 端点

端点 用途 数据格式
/ws/camera 摄像头推流 Binary (JPEG)
/ws/viewer 浏览器订阅 Binary (JPEG)
/ws_audio 音频传输 Binary (PCM16)
/ws_ui UI 状态 JSON

🎙️ 语音指令

类型 指令示例
导航 "开始导航"、"停止导航"
过马路 "帮我过马路"
物品 "帮我找一下红牛"
对话 任意问题 → AI 回答

🔗 相关文档


📄 许可证

MIT License