voice_drone_assistant
从原仓库抽离的独立可运行子工程:麦克风采集 → VAD 切段 → SenseVoice STT → 唤醒词 →(关键词起飞 / Qwen + Kokoro 对话播报)。
部署与外场启动(推荐先读):docs/DEPLOYMENT_AND_OPERATIONS.md
日常配置索引:docs/PROJECT_GUIDE.md · 云端协议:docs/llmcon.md
目录结构
| 路径 | 说明 |
|---|---|
main.py |
启动入口 |
with_system_alsa.sh |
Conda 下建议包一层启动,修正 ALSA/PortAudio |
voice_drone/core/ |
音频、VAD、STT、TTS、预处理、唤醒、配置、识别器主流程 |
voice_drone/main_app.py |
唤醒流程 + LLM 流式 + 起飞脚本联动(原 rocket_drone_audio.py) |
voice_drone/config/ |
system.yaml、wake_word.yaml、keywords.yaml、command_.yaml |
voice_drone/logging_/ |
彩色日志 |
voice_drone/tools/ |
YAML 加载等 |
scripts/ |
PX4 offboard、generate_wake_greeting_wav.py |
assets/tts_cache/ |
唤醒问候 WAV 缓存 |
models/ |
需自备或软链,见 models/README.txt |
环境准备
-
Python 3.10+(与原项目一致即可),安装依赖:
pip install -r requirements.txt -
模型:将 STT / TTS /(可选)Silero VAD 放到
models/,或按models/README.txt从原仓库src/models创建符号链接。 -
大模型:默认查找
cache/qwen25-1.5b-gguf/qwen2.5-1.5b-instruct-q4_k_m.gguf,或通过环境变量ROCKET_LLM_GGUF指定 GGUF 路径。
运行
在 voice_drone_assistant 根目录 执行:
bash with_system_alsa.sh python main.py
常用参数与环境变量与原 rocket_drone_audio.py 相同(如 ROCKET_LLM_STREAM、ROCKET_INPUT_DEVICE_INDEX、--input-index、ROCKET_ENERGY_VAD 等),说明见 voice_drone/main_app.py 文件头注释。
也可直接跑模块:
bash with_system_alsa.sh python -m voice_drone.main_app
为什么不默认带上原仓库的 models?
- ONNX / GGUF 体积大(动辄数百 MB~数 GB),放进 Git 或重复拷贝会加重仓库和同步成本。
- 抽离时只保证 代码与配置自给;权重文件用 本机拷贝 / U 盘 / 另一台预先
bundle更灵活。
若你本机仍摆着原仓库 rocket_drone_audio,且 voice_drone_assistant 在其子目录下,代码里有个临时便利:models/... 找不到时会尝试 上一级 src/models/...,所以在开发机上可以不改目录也能跑。
这只在「子目录 + 上层仍有原仓库」时有效,把 voice_drone_assistant 单独拷到另一台香橙派后,上层没有原仓库,必须在本目录自备 models/(和可选 cache/)。
拷到另一台香橙派要做什么?
-
整目录复制(建议先在本机执行下面脚本打全模型,再打包
voice_drone_assistant):cd /path/to/voice_drone_assistant bash scripts/bundle_for_device.sh /path/to/rocket_drone_audio会把
SenseVoiceSmall、Kokoro-82M-v1.1-zh-ONNX(及存在的SileroVad)复制到本目录models/;可按提示选择是否复制 Qwen GGUF。 -
新机器上 Python 依赖:另一台是全新系统时,需要再装一次(或整体迁移同一个 conda/env):
cd voice_drone_assistant pip install -r requirements.txt二进制/系统库层面若仍用 conda + PortAudio,建议继续
bash with_system_alsa.sh python main.py。 -
大模型路径:若未打包
cache/,在新机器设环境变量或放入默认路径,例如:export ROCKET_LLM_GGUF=/path/to/qwen2.5-1.5b-instruct-q4_k_m.gguf
综上:工程可独立,但必须带上 models/ + 已装依赖 +(可选)GGUF;pip install 每台新环境通常要做一次,除非你把整个 conda env 目录一起迁移。
与原仓库关系
- 本目录为代码与配置的复制 + 包名调整(
src.*→voice_drone.*),默认不把大体积models/、cache/放进版本库。 - 原仓库
rocket_drone_audio仍可继续使用;开发阶段两者可并存,部署到单机时只带走voice_drone_assistant(+bundle后的模型)即可。
未纳入本工程的模块
PX4 电机演示、独立录音脚本、Socket 试飞控协议服务端、ChatTTS 转换脚本等均留在原仓库,以减小篇幅;本工程仍通过 SocketClient 预留配置项(TakeoffPrintRecognizer 使用 auto_connect_socket=False,不依赖外置试飞控 Socket)。