Skip to content

Repository files navigation

🎤 ChaCha Voice - AI语音模块

Python 3.10+ License: MIT Conda Docker

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 环境(推荐机器人部署)

# 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

方式 2:Docker 部署(推荐生产环境)

# 快速启动
docker-compose up chacha-voice

# 包含本地LLM服务
docker-compose --profile local-llm up

# 开发模式
docker-compose --profile dev up chacha-voice-dev

方式 3:兼容模式

# 使用原始脚本(向下兼容)
python fast_voice_chat.py

📁 项目结构

ChaChaVoice/
├── 🚀 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 模型配置

# 查看可用模型
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")

🔧 性能优化

VAD 参数调优

根据测试和优化,当前配置已针对机器人场景优化:

  • 静音检测: 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 秒

🐳 Docker 服务

服务架构

  • chacha-voice: 主应用服务
  • chacha-voice-dev: 开发环境
  • ollama: 本地 LLM 服务
  • prometheus/grafana: 监控服务 (可选)

Docker 命令

# 构建镜像
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,远场识别
  • 专业音响: 外接有源音箱,提升音质

🔍 故障排除

常见问题

  1. Ollama 连接失败

    # 检查服务状态
    ollama list
    # 重启服务
    ollama serve
  2. 音频设备问题

    # macOS权限
    sudo chmod 666 /dev/snd/*
    # 检查设备
    python -c "import pyaudio; print(pyaudio.PyAudio().get_device_count())"
  3. VAD 过于敏感

    # 调整敏感度
    vad_sensitivity=0.6  # 降低敏感度
    debug_vad=True       # 开启调试模式
  4. 响应速度慢

    # 使用更小的模型
    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 界面
  • 插件系统架构
  • 云端模型集成
  • 移动端适配

🤝 贡献指南

  1. Fork 项目
  2. 创建特性分支: git checkout -b feature/新特性
  3. 提交更改: git commit -am '添加新特性'
  4. 推送分支: git push origin feature/新特性
  5. 提交 Pull Request

📄 许可证

MIT License - 详见 LICENSE 文件

📞 联系方式


🎉 现在就开始你的智能语音助手之旅吧!

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages