一个以语音交互和视觉识别为核心的本地机器人原型项目。当前公开版本保留了两条主链路:
- 语音链路:录音、预处理、ASR、云端问答、本地/云端 TTS、声纹识别
- 视觉链路:摄像头接入、YOLO 目标检测、关键词触发视觉窗口
- 支持本地
Vosk识别 - 支持云端
Qwen ASR实时转写,失败时回退到本地识别 - 支持云端
Qwen大模型问答 - 支持云端
Qwen Realtime TTS或本地Edge TTS - 支持声纹注册、识别和本地持久化
- 支持音频预处理:DC 去除、高通、增益归一化、VAD、前卷/后挂
- 支持空格键打断播报
- 支持摄像头接入
- 支持 YOLO 模型实时检测
- 默认运行模型位于
Vision/models/best.pt - 当前主流程可通过语音关键词触发视觉模块启动
.
├─ main.py # 主入口,串联语音与视觉模块
├─ log_utils.py # 统一日志输出
├─ Sound/ # 语音模块
│ ├─ cloud_asr.py # 云端 ASR
│ ├─ llm_brain.py # 云端大模型问答
│ ├─ Sound_output.py # TTS 播报
│ ├─ model/ # 本地 Vosk 模型
│ └─ voiceprints/ # 本地声纹库(默认不上传)
└─ Vision/ # 视觉模块
├─ vision_main.py # 视觉入口
├─ yolo_detector.py # YOLO 检测封装
├─ visual_output.py # 可视化输出
├─ models/ # 当前运行时模型
└─ training/ # 数据采集、标注、转换、训练整理脚本
- Windows
- Python 3.11 / 3.12
- 麦克风、扬声器
- 摄像头(视觉模块需要)
请按你的环境自行安装,当前项目代码涉及的主要依赖包括:
pip install numpy sounddevice webrtcvad vosk keyboard openai dashscope edge-tts pygame ultralytics opencv-python如果需要声纹识别,还需要:
pip install resemblyzer云端能力通过环境变量读取,不建议把密钥直接写入代码。
DASHSCOPE_API_KEY
DASHSCOPE_BASE_URL
DASHSCOPE_CHAT_MODEL
DASHSCOPE_ASR_MODEL
DASHSCOPE_TTS_MODEL
DASHSCOPE_TTS_VOICE
Windows PowerShell 临时设置示例:
$env:DASHSCOPE_API_KEY="你的密钥"
$env:DASHSCOPE_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
$env:DASHSCOPE_CHAT_MODEL="qwen-flash"
$env:DASHSCOPE_ASR_MODEL="qwen3-asr-flash-realtime"
$env:DASHSCOPE_TTS_MODEL="qwen3-tts-flash-realtime"
$env:DASHSCOPE_TTS_VOICE="Cherry"python main.pypython Vision/vision_main.py训练相关脚本已经整理到 Vision/training/,例如:
python Vision/training/collect_images.py
python Vision/training/simple_labeler.py 数据目录
python Vision/training/xml_to_yolo.py 数据目录
python Vision/training/prepare_dataset.pySound/model/:本地 Vosk 模型,用于离线识别回退
Vision/models/best.pt:当前视觉运行默认模型runs/:训练与实验输出目录,默认不纳入版本控制
Sound/voiceprints/存的是本地声纹数据,属于私有数据,不建议上传- 当前仓库默认忽略了
old/、runs/、日志、缓存和本地声纹文件 - 如果需要更换视觉模型,优先替换
Vision/models/best.pt - 如果没有配置云端密钥,程序会自动退回到本地兜底逻辑
- 补充
requirements.txt - 把更多运行参数从
main.py中拆到配置文件 - 为语音链路和视觉链路补充更细的模块说明
- 增加公开仓库可直接复现的数据和模型下载说明