We are trying to make an opensource framework for voice-support Multimodal Large Language Model that aims to be deployed in local IoT scienarios that requires minimum computing sources and fast response. We have deployed this system on Unitree.
- VAD: WebRTC VAD + 多维噪音过滤,0.6 秒快速响应
- ASR: Whisper 模型,支持中英文混合识别
- 本地 LLM: Ollama 集成,支持 qwen2.5 等中文优化模型
- 自然 TTS: Edge-TTS,41 种高质量神经网络声音
- 分层设计: Core 核心层 + Utils 工具层
- 热插拔: 可独立替换 ASR/LLM/TTS 组件
- 向下兼容: 保持原有 fast_voice_chat.py 接口
- 配置驱动: 支持环境变量和配置文件
- Conda 环境: 推荐用于开发和机器人部署
- Docker 容器: 生产环境和云部署
- 原生 Python: 轻量级部署选项
# 1. 创建conda环境
conda env create -f environment-simple.yml
conda activate chacha-voice
# 2. 安装pip依赖
pip install openai-whisper pyaudio soundfile edge-tts ollama webrtcvad dataclasses-json rich python-dotenv
# 3. 启动Ollama服务
ollama serve &
ollama pull qwen2.5:3b
# 4. 运行语音助手
python main.py# 快速启动
docker-compose up chacha-voice
# 包含本地LLM服务
docker-compose --profile local-llm up
# 开发模式
docker-compose --profile dev up chacha-voice-dev# 使用原始脚本(向下兼容)
python fast_voice_chat.pyChaChaVoice/
├── 🚀 main.py # 新版主入口 (推荐)
├── 🔄 fast_voice_chat.py # 原版入口 (兼容)
├── 📦 src/chacha_voice/ # 核心包
│ ├── 🧠 core/ # 核心模块
│ │ ├── asr.py # 语音识别 + VAD
│ │ ├── llm.py # 语言模型管理
│ │ ├── tts.py # 语音合成
│ │ └── voice_chat.py # 主控制器
│ └── 🛠️ utils/ # 工具模块
│ ├── audio_enhancer.py # 音频增强 (可选)
│ └── config.py # 配置管理
├── 🐳 Docker部署
│ ├── Dockerfile # 多阶段构建
│ └── docker-compose.yml # 多服务编排
├── 🅰️ Conda环境
│ └── environment-simple.yml # 简化环境配置
└── 📋 配置文件
├── requirements.txt # Python依赖
├── env.example # 环境变量模板
└── quick_setup.sh # 快速安装脚本
启动后支持以下交互方式:
- 🎙️ 语音输入: 直接对着麦克风说话,VAD 自动检测
- ⌨️ 文字输入: 输入文字 + 回车键
- ⏹️ 打断 TTS: 按回车键或说"停止"
- 🚪 退出程序: Ctrl+C
# 在voice_chat.py中配置
recognizer = HighPerformanceVADWhisperRecognizer(
model_size="small", # tiny/base/small (推荐small)
vad_sensitivity=1.0, # VAD敏感度 0.5-2.0
distance_threshold=0.5, # 距离阈值 (米)
debug_vad=False # VAD调试模式
)# 查看可用模型
ollama list
# 下载推荐模型
ollama pull qwen2.5:3b # 中文优化,1.9GB
ollama pull llama3.1:latest # 英文强项,4.9GB
# 在llm.py中指定模型
llm = LLMManager(model_name="qwen2.5:3b")根据测试和优化,当前配置已针对机器人场景优化:
- 静音检测: 0.6 秒快速响应(原 1.0 秒)
- 噪音过滤: 多维度信号质量检测
- 置信度要求: 0.3 阈值过滤误触发
# 音频增强已默认禁用(性能优化)
# 如需启用,修改asr.py中的配置:
AUDIO_ENHANCEMENT_AVAILABLE = True最低配置:
- CPU: 4 核心 (Intel i5 / AMD Ryzen 5 / Apple M1)
- 内存: 8GB RAM
- 存储: 10GB 可用空间
- 音频: 麦克风 + 扬声器
推荐配置 (当前测试硬件):
- CPU: Apple M3 Pro (12 核心)
- 内存: 18GB RAM
- 存储: 450GB+ 可用
- 音频: 专业麦克风阵列 (可选)
基于 Apple M3 Pro 测试结果:
| 组件 | 模型 | 延迟 | 准确率 | 备注 |
|---|---|---|---|---|
| ASR | Whisper Small | ~1.0s | 高 | CPU 模式,推荐配置 |
| LLM | qwen2.5:3b | 0.5-2s | 高 | 中文优化 |
| TTS | Edge-TTS | ~3-8s | 高 | 网络依赖 |
| VAD | 多维检测 | <0.1s | 高 | 实时检测 |
端到端延迟: 语音输入到语音输出 < 5 秒
- chacha-voice: 主应用服务
- chacha-voice-dev: 开发环境
- ollama: 本地 LLM 服务
- prometheus/grafana: 监控服务 (可选)
# 构建镜像
docker build -t chacha-voice:latest .
# 运行单个容器
docker run -it --rm \
--device /dev/snd:/dev/snd \
-e OLLAMA_HOST=host.docker.internal:11434 \
chacha-voice:latest
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f chacha-voice# 机器人优化设置
export ENHANCEMENT_LEVEL=disabled # 禁用音频增强提升性能
export VAD_SENSITIVITY=0.8 # 降低敏感度减少误触发
export MODEL_SIZE=small # 平衡精度和性能- 内置麦克风: 基本功能,适合近距离
- USB 麦克风阵列: 推荐 ReSpeaker 4-Mic,远场识别
- 专业音响: 外接有源音箱,提升音质
-
Ollama 连接失败
# 检查服务状态 ollama list # 重启服务 ollama serve
-
音频设备问题
# macOS权限 sudo chmod 666 /dev/snd/* # 检查设备 python -c "import pyaudio; print(pyaudio.PyAudio().get_device_count())"
-
VAD 过于敏感
# 调整敏感度 vad_sensitivity=0.6 # 降低敏感度 debug_vad=True # 开启调试模式
-
响应速度慢
# 使用更小的模型 model_size="base" # 或 "tiny" # 禁用音频增强 AUDIO_ENHANCEMENT_AVAILABLE = False
# 实时性能监控
htop
# GPU/CPU温度 (macOS)
sudo powermetrics -n 1 -s thermal
# 查看进程
ps aux | grep python- WebRTC 音频处理优化
- GPU 加速支持 (待 PyTorch MPS 完善)
- 多语言 UI 界面
- 插件系统架构
- 云端模型集成
- 移动端适配
- Fork 项目
- 创建特性分支:
git checkout -b feature/新特性 - 提交更改:
git commit -am '添加新特性' - 推送分支:
git push origin feature/新特性 - 提交 Pull Request
MIT License - 详见 LICENSE 文件
- 项目地址: https://github.com/yourusername/chacha-voice
- 问题反馈: Issues
- 讨论区: Discussions
🎉 现在就开始你的智能语音助手之旅吧!