# voice_chat **Repository Path**: whererose/voice_chat ## Basic Information - **Project Name**: voice_chat - **Description**: # Voice Chat - 实时语音对话系统 让 AI 开口说话,就像和朋友聊天一样自然。 ## ✨ 这是什么? 一个 开箱即用 的实时语音对话系统,支持多厂商 ASR + LLM + TTS 组合,让你用代码快速搭建自己的"语音助手"。 核心亮点: - 🚀 低延迟流式对话 - 边说边听边回复,不用等完整回复 - 🎯 智能打断机制 - 随时打断 AI,毫秒级响应 - 🔇 频谱 VAD - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2026-09-04 - **Last Updated**: 2026-09-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🎙️ Voice Chat - 让 AI 开口说话
**一个开箱即用的实时语音对话系统,支持多厂商 ASR + LLM + TTS** [![Python 3.10+](https://img.shields.io/badge/Python-3.10%2B-blue.svg)](https://www.python.org/) [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](https://opensource.org/licenses/MIT) [![Tests](https://img.shields.io/badge/Tests-35%2B-green.svg)](./tests/) [快速开始](#-快速开始) • [演示](#-演示) • [文档](#-文档) • [贡献](#-贡献)
--- ## 🌟 为什么选择 Voice Chat? 想象一下:你对着电脑说话,AI 立刻用自然的声音回复你,就像和朋友聊天一样流畅。 **这不是幻想,这就是 Voice Chat。** ### ✨ 核心亮点 | 特性 | 说明 | |------|------| | 🚀 **超低延迟** | 流式处理,边说边听边回复,首句 1-3 秒出声 | | 🎯 **智能打断** | 随时打断 AI,毫秒级响应,真正的对话体验 | | 🔇 **频谱 VAD** | 区分人声和环境噪声,拍手/挪凳子不会误触发 | | 🔊 **回声消除** | 扬声器播放时也能准确识别用户说话 | | 🔌 **多厂商支持** | 火山引擎 / 阿里通义 / OpenAI,一键切换 | | 🛡️ **生产级稳定** | 35+ 单元测试,自动重连,错误恢复 | --- ## 🎯 两种运行模式 ### 模式一:分离模式(推荐) ``` ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐ │ 用户 │ → │ ASR │ → │ LLM │ → │ TTS │ → 播放 │ 说话 │ │ 语音识别 │ │ 大模型 │ │ 语音合成 │ └─────────┘ └─────────┘ └─────────┘ └─────────┘ ``` **优势:** - 各服务独立,可自由组合不同厂商 - LLM 可选 doubao-seed-evolving 等先进模型 - 适合需要灵活配置的场景 ### 模式二:实时全双工模式 ``` ┌─────────┐ ┌─────────┐ │ 用户 │ ←── WebSocket ──→ │ AI │ │ 说话 │ 单条长连接 │ 全链路 │ └─────────┘ └─────────┘ ``` **优势:** - 服务端完成 ASR + LLM + TTS 全链路 - 更低延迟,更接近真人对话体验 - 适合追求极致响应的场景 --- ## 🚀 快速开始 ### 1️⃣ 环境准备 ```bash # Ubuntu/Debian sudo apt install -y python3-dev portaudio19-dev # macOS brew install portaudio ``` ### 2️⃣ 安装 ```bash # 克隆项目 git clone https://gitee.com/ying_cheng_li/voice_chat.git cd voice_chat # 创建虚拟环境 python3 -m venv .venv source .venv/bin/activate # 安装依赖 pip install -e . ``` ### 3️⃣ 配置 API Key 创建 `.env` 文件: ```bash # 火山引擎 API Key(用于 ASR/TTS/Chat) VOLCENGINE_API_KEY=your-api-key-here # 或使用其他厂商 # DASHSCOPE_API_KEY=your-dashscope-key # OPENAI_API_KEY=your-openai-key ``` ### 4️⃣ 运行 ```bash python -m voice_chat.main ``` **就这么简单!** 对着麦克风说话,AI 会实时回复你。 --- ## 🎬 演示 ### 使用场景 - 🏠 **智能家居助手** - 语音控制家电,查询天气 - 🚗 **车载语音系统** - 导航、音乐、电话 - 📚 **教育辅导** - 语音问答,语言学习 - 🏥 **医疗咨询** - 语音问诊,健康建议 - 🎮 **游戏 NPC** - 智能对话,剧情互动 --- ## 🏗️ 架构设计 ``` ┌─────────────────────────────────────────────────┐ │ Conversation │ │ 对话生命周期管理 + 事件路由 │ └──────┬──────────────┬──────────────┬────────────┘ │ │ │ ▼ ▼ ▼ Audio Audio Provider Capture Player (ASR/LLM/TTS) 音频采集 音频播放 厂商适配器 │ │ │ └──────────────┴──────────────┘ AEC 回声消除 ``` **核心模块:** | 模块 | 职责 | |------|------| | `dialogue.py` | 对话状态机(IDLE → LISTENING → THINKING) | | `conversation.py` | 对话协调器,串联各模块 | | `audio.py` | 音频采集与播放 | | `aec.py` | 回声消除处理器 | | `providers/` | 厂商适配器(火山引擎/阿里/OpenAI) | --- ## 🧪 测试覆盖 **35+ 单元测试**,覆盖核心路径: - ✅ 对话状态机流转 - ✅ ASR 断句与重连逻辑 - ✅ 音频播放与 AEC 交互 - ✅ 全双工协议验证 - ✅ TTS 协议与生命周期 ```bash # 运行全部测试 pytest # 或单独运行 python tests/test_dialogue.py python tests/test_asr_reconnect.py ``` --- ## 📚 文档 - [ARCHITECTURE.md](./ARCHITECTURE.md) - 详细架构文档 - [docs/design/](./docs/design/) - 设计文档 - [docs/history/](./docs/history/) - 开发历史 --- ## 🤝 贡献 欢迎提交 Issue 和 Pull Request! ### 接入新厂商 如果你想接入新的语音服务厂商,只需 3 步: 1. 实现 `BaseRealtimeProvider` 基类 2. 在 `providers/factory.py` 注册 3. 完成!上层代码无需任何修改 --- ## 💖 支持项目 **如果觉得对你有帮助,请打赏一杯奶茶钱吧 🥤**
微信打赏 **扫码打赏,支持开源**
--- ## 📄 许可证 MIT License ---
**⭐ 如果这个项目对你有帮助,请给个 Star 支持一下!**
--- ## 🔗 相关链接 - [火山引擎](https://www.volcengine.com/) - 字节跳动云服务 - [阿里通义](https://tongyi.aliyun.com/) - 阿里云 AI 服务 - [OpenAI](https://openai.com/) - GPT 系列模型 ---
**Made with ❤️ by Voice Chat Team**