liumaolin commited on
Commit
1858ba9
·
1 Parent(s): 28762c8

Document API usage, system architecture, configuration, and troubleshooting

Browse files

- Add `docs/api-guide.md` for API usage and endpoints details.
- Create `docs/architecture.md` to explain the system's data flow and multi-threaded design.
- Add `docs/configuration.md` covering CLI/API parameters, LLM, ASR, and TTS customization.
- Add `docs/contributing.md` with community contribution guidelines.
- Add `docs/features.md` highlighting core functionalities like real-time audio processing, LLM, and TTS.
- Add `docs/project-structure.md` for a detailed directory layout.
- Create `docs/troubleshooting.md` for common issue fixes and optimization tips.
- Update README to condense features while linking to the new documentation.

README.md CHANGED
@@ -30,407 +30,86 @@ library_name: transformers
30
 
31
  一个集成了语音识别(ASR)、大语言模型(LLM)和文本转语音(TTS)的实时语音对话系统
32
 
33
- [快速开始](#-快速开始) • [功能特性](#-主要特性) • [配置说明](#-配置选项) • [系统架构](#-系统架构) • [故障排除](#-故障排除)
34
 
35
  </div>
36
 
37
  ## 🎯 项目简介
38
 
39
- VoiceDialogue 是一个基于 Python 的完整语音对话系统,实现了端到端的语音交互体验。系统采用模块化设计,支持:
40
 
41
- - 🎤 **实时语音识别** - 基于 FunASR 和 Whisper 的高精度语音转文本
42
- - 🤖 **智能对话生成** - 集成 Qwen2.5 等多种大语言模型
43
- - 🔊 **高质量语音合成** - 基于 GPT-SoVITs 和 Kokoro TTS 的多角色语音生成
44
- - 🌐 **Web API 服务** - 提供 HTTP 接口,方便与其他应用集成
45
- - 🔇 **回声消除** - 内置音频处理技术,支持实时语音交互
46
- - ⚡ **低延迟处理** - 优化的音频流处理管道,实现流畅对话体验
47
 
48
- ## 主要特性
49
-
50
- ### 🎵 音频处理
51
- - **回声消除音频捕获** - 自动消除回声干扰,提升语音质量
52
- - **语音活动检测(VAD)** - 智能检测用户说话状态,自动开始/停止录制
53
- - **实时音频流处理** - 低延迟音频播放和处理
54
-
55
- ### 🗣️ 语音识别
56
- - **智能语音识别引擎** - 中文使用FunASR高精度识别,其他语言使用Whisper模型
57
- - **自动语言切换** - 根据启动参数自动选择最优识别引擎
58
- - **实时转录处理** - 流式语音转文本处理,降低响应延迟
59
-
60
- ### 🧠 语言模型
61
- - **Qwen2.5 (14B)** - 内置阿里巴巴开源的中文优化模型
62
- - **LangChain 集成** - 方便扩展和支持更多语言模型
63
- - **自定义系统提示词** - 可在代码中配置 AI 助手的行为风格
64
-
65
- ### 🎭 语音合成
66
- 项目集成了两种先进的语音合成技术,支持动态说话人管理:
67
-
68
- #### GPT-SoVITs 技术(中文角色)
69
- 基于 GPT-SoVITs 的中文语音合成,支持以下角色:
70
- - **罗翔** (Luo Xiang) - 法学教授风格,具有幽默风趣和深入浅出的讲解风格
71
- - **马保国** (Ma Baoguo) - 太极大师风格,带有标志性的口音和语调特色
72
- - **沈逸** (Shen Yi) - 学者风格,具有理性分析风格和富有磁性的嗓音
73
- - **杨幂** (Yang Mi) - 明星风格,拥有清甜动人的声线和自然流畅的表达方式
74
- - **周杰伦** (Zhou Jielun) - 歌手风格,具有标志性的说话风格和音乐气质
75
- - **马云** (Ma Yun) - 企业家风格,富有激情的演讲风格和商业洞察表达方式
76
-
77
- #### Kokoro TTS 技术(英文角色)
78
- 基于 Kokoro TTS 的英文语音合成,支持以下角色:
79
- - **Heart** - 温暖亲切的英语女性语音,声音富有感情色彩
80
- - **Bella** - 优质的英语女性语音,具有清晰自然的发音和良好的表现力
81
- - **Nicole** - 高质量的英语女性语音,发音清晰准确,语调自然流畅
82
-
83
- #### 技术特点
84
- - **智能引擎选择** - 系统根据内容语言自动选择最适合的TTS引擎
85
- - **动态说话人管理** - 支持运行时动态加载和切换说话人
86
- - **高质量合成** - 采用先进的神经网络技术,生成自然流畅的语音
87
- - **可扩展架构** - 模块化设计,方便添加更多语音角色和TTS引擎
88
-
89
- ### ⚙️ 服务模式
90
- - **命令行模式 (CLI)** - 在终端中直接运行,提供实时语音交互体验
91
- - **API 服务模式** - 启动一个 FastAPI Web 服务器,提供 HTTP 接口进行交互
92
 
93
  ## 🚀 快速开始
94
 
95
- ### 系统要求
96
-
97
- - **操作系统**: macOS 14+ (推荐)
98
- - **Python 版本**: 3.9 或更高版本
99
- - **内存要求**: 至少 16GB RAM (推荐 32GB 用于大模型)
100
- - **存储空间**: 至少 20GB 可用空间 (用于模型文件)
101
-
102
- ### 快速安装
103
 
104
  ```bash
105
- # 1. 克隆项目
106
  git clone https://huggingface.co/MoYoYoTech/VoiceDialogue
107
  cd VoiceDialogue
108
 
109
- # 2. 创建虚拟环境(推荐)
110
  pip install uv
111
  uv venv
112
  source .venv/bin/activate
113
 
114
- # 3. 安装依赖
115
  WHISPER_COREML=1 CMAKE_ARGS="-DGGML_METAL=on" uv sync
116
 
117
- # 4. 安装系统依赖
118
- brew install ffmpeg
 
 
 
119
 
120
- # 5. 启动系统
121
- python main.py
122
- ```
123
 
124
- > 📖 **详细安装指南**: 如需了解完整的安装步骤、系统要求和故障排除,请查看 **[安装指南](docs/installation.md)**
 
 
125
 
126
- ### 🖥️ 应用模式
127
 
128
- #### 1. 命令行模式 (默认)
129
 
130
- 直接在终端进行实时语音对话。
131
 
132
  ```bash
133
- # 启动语音对话系统 (默认使用中文,沈逸角色)
134
  python main.py
135
- # 或使用 uv
136
- uv run main.py
137
 
138
- # 指定语言和角色
139
  python main.py --language en --speaker Heart
140
-
141
- # 查看所有可用参数
142
- python main.py --help
143
  ```
144
 
145
- **首次运行说明**:
146
- - 看到 "服务启动成功" 提示后即可开始说话
147
- - 系统会自动检测语音活动并进行识别和回复
148
-
149
- #### 2. API 服务模式
150
-
151
- 启动一个 Web 服务器,通过 HTTP 请求进行交互。
152
 
153
  ```bash
154
  # 启动 API 服务器
155
  python main.py --mode api
156
- # 或使用 uv
157
- uv run main.py --mode api
158
-
159
- # 指定不同端口和启用热重载
160
- python main.py --mode api --port 9000 --reload
161
- ```
162
-
163
- **API 服务特性**:
164
- - API 文档地址: `http://localhost:8000/docs`
165
- - 支持 TTS 模型管理(查看、加载、删除)
166
- - 实时模型状态监控
167
- - RESTful API 设计
168
-
169
- #### 3. 桌面应用模式 (Electron)
170
- 提供图形界面的桌面应用程序。
171
-
172
-
173
- ## ⚙️ 配置选项
174
-
175
- ### 启动参数
176
-
177
- 通过 `main.py` 的命令行参数可以方便地进行配置:
178
-
179
- | 参数 | 缩写 | 可选值 | 默认值 | 描述 |
180
- |---|---|---|---|---|
181
- | `--mode` | `-m` | `cli`, `api` | `cli` | 设置运行模式 |
182
- | `--language`| `-l` | `zh`, `en` | `zh` | (CLI模式) 设置用户语言 |
183
- | `--speaker` | `-s` | (动态获取) | `沈逸` | (CLI模式) 设置TTS语音角色 |
184
- | `--host` | | IP地址 | `0.0.0.0` | (API模式) 服务器主机 |
185
- | `--port` | `-p` | 端口号 | `8000` | (API模式) 服务器端口 |
186
- | `--reload`| | 无 | `False` | (API模式) 启用热重载 |
187
-
188
- **支持的说话人角色**(动态加载):
189
- - **中文角色**:`罗翔`, `马保国`, `沈逸`, `杨幂`, `周杰伦`, `马云`
190
- - **英文角色**:`Heart`, `Bella`, `Nicole`
191
-
192
- ### 高级配置
193
-
194
- #### 大语言模型 (LLM)
195
-
196
- - **模型路径和参数**: LLM 的模型和推理参数目前在代码中硬编码,方便快速启动。
197
- - **文件位置**: `src/VoiceDialogue/services/text/generator.py`
198
- - **自定义**: 你可以修改 `LLMResponseGenerator` 类中的配置。
199
-
200
- #### 语音识别 (ASR)
201
-
202
- - **引擎自动选择**: 系统会根据 `--language` 参数自动选择最合适的 ASR 引擎。
203
- - **模型配置**: ASR 模型的具体配置位于 `src/VoiceDialogue/services/speech/recognizers/manager.py`。
204
-
205
- #### 系统提示词 (System Prompt)
206
-
207
- - **功能**: 定义 AI 角色的行为和说话风格。
208
- - **文件位置**: `src/VoiceDialogue/services/text/generator.py`
209
- - **自定义**: 你可以修改系统提示词变量的值。
210
-
211
- ### 构建完整应用
212
- 项目提供了完整的构建脚本,可以一键构建包含Python后端和Electron前端的完整应用:
213
-
214
- 1. 首先,激活当前 Python 环境
215
-
216
- ```bash
217
- source .venv/bin/activate
218
- # 或使用 conda
219
- conda activate voicedialogue
220
- ```
221
-
222
- 2. 使用构建脚本
223
-
224
- ```bash
225
- # 使用构建脚本(推荐)
226
- bash scripts/build.sh
227
-
228
- # 或分别构建
229
- bash scripts/build-python.sh # 构建Python后端
230
- bash scripts/build-electron.sh # 构建Electron前端
231
-
232
- # 清理构建产物
233
- bash scripts/clean.sh
234
- ```
235
-
236
-
237
- ## 📁 项目结构
238
-
239
- ```text
240
- VoiceDialogue/
241
- ├── src/
242
- │ └── voice_dialogue/ # 主要源代码目录
243
- │ ├── __init__.py # 包初始化文件
244
- │ ├── cli/ # 命令行界面模块
245
- │ │ └── args.py # 命令行参数解析
246
- │ ├── api/ # Web API 模块 (FastAPI)
247
- │ │ ├── app.py # FastAPI 应用实例
248
- │ │ ├── server.py # uvicorn 服务器
249
- │ │ ├── core/ # API 核心配置
250
- │ │ ├── routes/ # API 路由
251
- │ │ ├── schemas/ # 数据模型
252
- │ │ ├── dependencies/ # API 依赖项
253
- │ │ └── middleware/ # 中间件
254
- │ ├── config/ # 配置管理
255
- │ │ ├── paths.py # 路径配置
256
- │ │ └── speaker_config.py # 说话人配置
257
- │ ├── core/ # 核心模块
258
- │ │ ├── constants.py # 全局常量和队列
259
- │ │ └── launcher.py # 系统启动器
260
- │ ├── models/ # 数据模型和任务
261
- │ ├── services/ # 服务模块
262
- │ │ ├── audio/ # 音频处理服务
263
- │ │ ├── speech/ # 语音识别服务
264
- │ │ └── text/ # 文本生成服务
265
- │ └── utils/ # 工具函数
266
- ├── electron-app/ # Electron 桌面应用
267
- │ ├── main.js # Electron 主进程
268
- │ ├── preload.js # 预加载脚本
269
- │ ├── loading.html # 加载页面
270
- │ ├── utils.js # 工具函数
271
- │ ├── package.json # Electron 依赖配置
272
- │ ├── assets/ # Electron 资源文件
273
- │ ├── build/ # 构建配置
274
- │ └── python-dist/ # Python 分发包
275
- ├── scripts/ # 构建和部署脚本
276
- │ ├── build.sh # 主构建脚本
277
- │ ├── build-python.sh # Python 打包脚本
278
- │ ├── build-electron.sh # Electron 打包脚本
279
- │ └── clean.sh # 清理脚本
280
- ├── third_party/ # 第三方库
281
- │ ├── moyoyo_tts/ # GPT-SoVITs TTS 引擎
282
- │ └── AECAudioRecorder/ # 回声消除音频录制器
283
- ├── assets/ # 资源文件
284
- ├── dist/ # 分发包输出目录
285
- ├── build/ # 构建临时文件
286
- ├── tests/ # 测试文件
287
- ├── docs/ # 文档目录
288
- ├── main.py # 项目启动入口
289
- ├── pyproject.toml # 项目配置文件 (uv)
290
- ├── requirements.txt # Python 依赖
291
- ├── uv.lock # uv 锁定文件
292
- ├── .python-version # Python 版本配置
293
- └── README.md # 项目说明文档
294
- ```
295
-
296
- ## 🔧 系统架构
297
-
298
- ### 数据流程图 (CLI 模式)
299
- ```
300
- 用户语音输入 → 回声消除 → 语音活动检测 → 语音转录 (ASR) → LLM生成回复 → TTS合成 → 音频输出
301
- ↑ ↓
302
- └─────────────────────────────── 实时语音交互循环 ────────────────────────────────┘
303
  ```
 
304
 
 
305
 
306
- ### 核心组件说明
307
-
308
- | 组件 | 功能描述 | 技术实现 |
309
- |------|----------|----------|
310
- | **EchoCancellingAudioCapture** | 回声消除音频捕获 | 实时音频流捕获与预处理 |
311
- | **SpeechStateMonitor** | 语音活动检测 | VAD 算法检测用户说话状态 |
312
- | **ASRWorker** | 语音识别转录 | FunASR / Whisper 模型推理 |
313
- | **LLMResponseGenerator** | 智能文本生成 | Qwen2.5 (llama.cpp) 对话生成 |
314
- | **TTSAudioGenerator** | 语音合成 | GPT-SoVITs / Kokoro TTS 文本转语音 |
315
- | **AudioStreamPlayer** | 音频流播放 | 实时音频输出播放 |
316
- | **FastAPI App** | API服务 | 提供HTTP接口,封装核心服务 |
317
-
318
- ### 多线程架构
319
-
320
- 系统采用多线程设计,各组件通过队列进行通信:
321
-
322
- - **音频采集线程**: 持续捕获音频数据
323
- - **语音监测线程**: 检测用户语音活动
324
- - **ASR线程**: 语音识别处理
325
- - **LLM线程**: 文本生成处理
326
- - **TTS线程**: 语音合成处理
327
- - **音频播放线程**: 音频输出播放
328
-
329
- ## 🛠️ 故障排除
330
-
331
- ### 1. 模型下载失败
332
- - **问题**: 网络连接超时或模型下载失败。
333
- - **解决方案**: 设置 Hugging Face 镜像。
334
- ```bash
335
- export HF_ENDPOINT=https://hf-mirror.com
336
- pip install -U huggingface_hub
337
- ```
338
-
339
- ### 2. 音频设备问题
340
- - **问题**: 找不到音频设备或权限被拒绝。
341
- - **macOS 解决方案**: 系统设置 → 隐私与安全性 → 麦克风 → 启用你的终端应用 (如 iTerm, Terminal)。
342
- - **Linux 解决方案**: `sudo usermod -a -G audio $USER`,然后重新登录。
343
-
344
- ### 3. 内存不足错误 (OOM)
345
- - **问题**: `CUDA out of memory` 或 RAM 不足。
346
- - **解决方案**: LLM 是主要的内存消耗者。你可以通过修改 `src/VoiceDialogue/services/text/generator.py` 来降低资源消耗:
347
- - **更换模型**: 将模型路径指向一个更小的模型(如 7B Q4 量化模型)。
348
- - **减少批处理大小**: 减小模型参数中的 `n_batch` 值(如 `256`)。
349
- - **减少上下文长度**: 减小 `n_ctx` 的值(如 `1024`)。
350
-
351
- ### 4. 依赖包冲突
352
- - **问题**: 包版本冲突或导入错误。
353
- - **解决方案**: 强烈建议在虚拟环境中安装。如果遇到问题,尝试重建虚拟环境。
354
- ```bash
355
- # 使用 conda
356
- conda deactivate
357
- conda env remove -n voicedialogue
358
-
359
- # 使用 uv
360
- rm -rf .venv
361
- uv venv
362
- ```
363
-
364
- ### 5. 说话人角色不存在
365
- - **问题**: 指定的说话人不在支持列表中。
366
- - **解决方案**: 使用 `python src/VoiceDialogue/main.py --help` 查看所有可用的说话人角色。
367
-
368
- ### 6. FFmpeg 相关错误
369
- - **问题**: 音频处理失败或编解码错误。
370
- - **解决方案**: 确保正确安装 FFmpeg:
371
- ```bash
372
- # 检查 FFmpeg 安装
373
- ffmpeg -version
374
-
375
- # 重新安装 FFmpeg
376
- # macOS
377
- brew reinstall ffmpeg
378
-
379
- ```
380
-
381
- ### 7. Python 版本兼容性
382
- - **问题**: Python 版本过低导致的兼容性问题。
383
- - **解决方案**: 确保使用 Python 3.11+ 版本:
384
- ```bash
385
- python --version
386
- # 如果版本过低,请升级或使用虚拟环境
387
- ```
388
-
389
- ### 8. 桌面应用相关问题
390
- - **问题**: Electron 应用启动失败或功能异常。
391
- - **解决方案**:
392
- - 确保 Node.js 版本 >= 16
393
- - 重新安装依赖:`cd electron-app && npm install`
394
- - 检查 Python 后端是否正常运行
395
-
396
- ### 9. 构建打包问题
397
- - **问题**: 使用构建脚本失败。
398
- - **解决方案**:
399
- - 确保有执行权限:`chmod +x scripts/*.sh`
400
- - 检查所有依赖是否安装完成
401
- - 查看具体错误日志进行调试
402
-
403
-
404
- ## 📊 性能优化建议
405
-
406
- ### 硬件优化
407
- - **内存**: 推荐 32GB RAM 以获得最佳性能
408
- - **存储**: 使用 SSD 硬盘可显著提升模型加载速度
409
- - **CPU**: 多核处理器有助于多线程处理
410
-
411
- ### 软件优化
412
- - **模型选择**: 根据硬件配置选择合适大小的模型
413
- - **批处理优化**: 调整 LLM 的 `n_batch` 参数
414
- - **音频缓冲**: 根据延迟要求调整音频缓冲区大小
415
 
416
  ## 📄 许可证
417
 
418
  本项目采用 MIT 许可证开源。
419
 
420
- ## 🤝 贡献指南
421
-
422
- 欢迎提交 Pull Request 和 Issue!
423
-
424
- 1. Fork 本仓库
425
- 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
426
- 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
427
- 4. 推送到分支 (`git push origin feature/AmazingFeature`)
428
- 5. 开启 Pull Request
429
-
430
- ---
431
-
432
- <div align="center">
433
-
434
- **如果这个项目对您有帮助,请给我们一个 ⭐️!**
435
 
436
- </div>
 
30
 
31
  一个集成了语音识别(ASR)、大语言模型(LLM)和文本转语音(TTS)的实时语音对话系统
32
 
33
+ [快速开始](#-快速开始) • [文档导航](#-文档导航) • [贡献指南](docs/contributing.md)
34
 
35
  </div>
36
 
37
  ## 🎯 项目简介
38
 
39
+ VoiceDialogue 是一个基于 Python 的完整语音对话系统,实现了端到端的语音交互体验。系统采用模块化设计,具备实时、高精度、多角色的特点。
40
 
41
+ - 🎤 **实时语音识别**: 高精度中英文语音转录
42
+ - 🤖 **智能对话生成**: 集成 Qwen2.5 等大语言模型
43
+ - 🔊 **高质量语音合成**: 支持多角色、多风格的语音输出
44
+ - 🌐 **Web API 服务**: 提供 HTTP 接口,方便集成
45
+ - **低延迟处理**: 优化的音频流处理管道
 
46
 
47
+ > 想要了解更多?请查看 [功能特性详解](docs/features.md)。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
 
49
  ## 🚀 快速开始
50
 
51
+ ### 1. 安装
 
 
 
 
 
 
 
52
 
53
  ```bash
54
+ # 克隆项目
55
  git clone https://huggingface.co/MoYoYoTech/VoiceDialogue
56
  cd VoiceDialogue
57
 
58
+ # 安装依赖 (推荐使用 uv)
59
  pip install uv
60
  uv venv
61
  source .venv/bin/activate
62
 
 
63
  WHISPER_COREML=1 CMAKE_ARGS="-DGGML_METAL=on" uv sync
64
 
65
+ # 安装额外的依赖
66
+ ## 1. 安装 kokoro-onnx
67
+ uv pip install kokoro-onnx
68
+ ## 2. 重新安装指定版本的 numpy
69
+ uv pip install numpy==1.26.4
70
 
 
 
 
71
 
72
+ # 安装音频工具 (macOS)
73
+ brew install ffmpeg
74
+ ```
75
 
76
+ > 📖 **需要更详细的步骤?** 请查阅 **[安装指南](docs/installation.md)**,其中包含系统要求和常见问题。
77
 
78
+ ### 2. 运行
79
 
80
+ #### 命令行模式 (CLI)
81
 
82
  ```bash
83
+ # 启动语音对话 (默认中文)
84
  python main.py
 
 
85
 
86
+ # 启动并指定语言和角色
87
  python main.py --language en --speaker Heart
 
 
 
88
  ```
89
 
90
+ #### API 服务模式
 
 
 
 
 
 
91
 
92
  ```bash
93
  # 启动 API 服务器
94
  python main.py --mode api
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
  ```
96
+ > 详细使用方法请参考 [配置指南](docs/configuration.md) 和 [API 服务指南](docs/api-guide.md)。
97
 
98
+ ## 📚 文档导航
99
 
100
+ - 📖 **[安装指南](docs/installation.md)**: 详细的安装步骤和系统要求。
101
+ - ⚙️ **[配置指南](docs/configuration.md)**: 如何配置系统参数和高级选项。
102
+ - 🎭 **[功能特性](docs/features.md)**: 深入了解项目的所有功能。
103
+ - 🌐 **[API 指南](docs/api-guide.md)**: 如何使用和集成 API 服务。
104
+ - 🏗️ **[系统架构](docs/architecture.md)**: 了解系统的内部工作原理。
105
+ - 📁 **[项目结构](docs/project-structure.md)**: 浏览项目代码和文件组织。
106
+ - 🛠️ **[故障排除](docs/troubleshooting.md)**: 常见问题和解决方案。
107
+ - 🤝 **[贡献指南](docs/contributing.md)**: 如何为项目做出贡献。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
108
 
109
  ## 📄 许可证
110
 
111
  本项目采用 MIT 许可证开源。
112
 
113
+ ## 🙏 致谢
 
 
 
 
 
 
 
 
 
 
 
 
 
 
114
 
115
+ 如果这个项目对您有帮助,请给我们一个 ⭐️!
docs/api-guide.md ADDED
@@ -0,0 +1,49 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # API 服务指南
2
+
3
+ VoiceDialogue 支持通过 API 服务模式运行,启动一个 FastAPI Web 服务器,提供 HTTP 接口进行交互。
4
+
5
+ ## 启动 API 服务
6
+
7
+ ```bash
8
+ # 启动 API 服务器
9
+ python main.py --mode api
10
+ # 或使用 uv
11
+ uv run main.py --mode api
12
+
13
+ # 指定不同端口和启用热重载
14
+ python main.py --mode api --port 9000 --reload
15
+ ```
16
+
17
+ ## API 服务特性
18
+
19
+ - **API 文档地址**: 启动服务后,可在 `http://localhost:8000/docs` 查看交互式 API 文档 (Swagger UI)。
20
+ - **TTS 模型管理**: 支持通过 API 查看、加载、删除 TTS 模型。
21
+ - **实时模型状态监控**: 提供接口查询当前加载的模型和系统状态。
22
+ - **RESTful API 设计**: 采用标准的 RESTful 设计,方便与其他应用集成。
23
+
24
+ ## 主要接口
25
+
26
+ ### TTS模型管理
27
+
28
+ * `GET /api/v1/tts/models` - 获取所有可用的TTS模型列表
29
+ * `POST /api/v1/tts/models/load` - 加载指定的TTS模型
30
+ * `GET /api/v1/tts/models/{model_id}/status` - 查看模型下载和加载状态
31
+ * `DELETE /api/v1/tts/models/{model_id}` - 删除已下载的模型
32
+
33
+ ### 语音识别管理
34
+
35
+ * `GET /api/v1/asr/languages` - 获取支持的识别语言列表
36
+ * `POST /api/v1/asr/instance/create` - 创建指定语言的ASR实例
37
+
38
+ ### 系统控制
39
+
40
+ * `GET /api/v1/system/status` - 获取系统整体状态
41
+ * `POST /api/v1/system/start` - 启动语音对话系统
42
+ * `POST /api/v1/system/stop` - 停止语音对话系统
43
+ * `POST /api/v1/system/restart` - 重启语音对话系统
44
+
45
+ ### 实时通信
46
+
47
+ * `WebSocket /api/v1/ws` - WebSocket连接,接收实时系统消息
48
+
49
+ 更多详细信息请参考启动服务后的在线API文档。
docs/architecture.md ADDED
@@ -0,0 +1,32 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 系统架构
2
+
3
+ ## 数据流程图 (CLI 模式)
4
+ ```
5
+ 用户语音输入 → 回声消除 → 语音活动检测 → 语音转录 (ASR) → LLM生成回复 → TTS合成 → 音频输出
6
+ ↑ ↓
7
+ └─────────────────────────────── 实时语音交互循环 ────────────────────────────────┘
8
+ ```
9
+
10
+ ## 核心组件说明
11
+
12
+ | 组件 | 功能描述 | 技术实现 |
13
+ |------|----------|----------|
14
+ | **EchoCancellingAudioCapture** | 回声消除音频捕获 | 实时音频流捕获与预处理 |
15
+ | **SpeechStateMonitor** | 语音活动检测 | VAD 算法检测用户说话状态 |
16
+ | **ASRWorker** | 语音识别转录 | FunASR / Whisper 模型推理 |
17
+ | **LLMResponseGenerator** | 智能文本生成 | Qwen2.5 (llama.cpp) 对话生成 |
18
+ | **TTSAudioGenerator** | 语音合成 | GPT-SoVITs / Kokoro TTS 文本转语音 |
19
+ | **AudioStreamPlayer** | 音频流播放 | 实时音频输出播放 |
20
+ | **FastAPI App** | API服务 | 提供HTTP接口,封装核心服务 |
21
+
22
+ ## 多线程架构
23
+
24
+ 系统采用多线程设计,各组件通过队列进行通信:
25
+
26
+ - **音频采集线程**: 持续捕获音频数据
27
+ - **语音监测线程**: 检测用户语音活动
28
+ - **ASR线程**: 语音识别处理
29
+ - **LLM线程**: 文本生成处理
30
+ - **TTS线程**: 语音合成处理
31
+ - **音频播放线程**: 音频输出播放
32
+ ```
docs/configuration.md ADDED
@@ -0,0 +1,66 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 配置指南
2
+
3
+ 本文档介绍如何配置 VoiceDialogue 系统。
4
+
5
+ ## 启动参数
6
+
7
+ 通过 `main.py` 的命令行参数可以方便地进行配置:
8
+
9
+ | 参数 | 缩写 | 可选值 | 默认值 | 描述 |
10
+ |---|---|---|---|---|
11
+ | `--mode` | `-m` | `cli`, `api` | `cli` | 设置运行模式 |
12
+ | `--language`| `-l` | `zh`, `en` | `zh` | (CLI模式) 设置用户语言 |
13
+ | `--speaker` | `-s` | (动态获取) | `沈逸` | (CLI模式) 设置TTS语音角色 |
14
+ | `--host` | | IP地址 | `0.0.0.0` | (API模式) 服务器主机 |
15
+ | `--port` | `-p` | 端口号 | `8000` | (API模式) 服务器端口 |
16
+ | `--reload`| | 无 | `False` | (API模式) 启用热重载 |
17
+
18
+ **支持的说话人角色**(动态加载):
19
+
20
+ - **中文角色**:`罗翔`, `马保国`, `沈逸`, `杨幂`, `周杰伦`, `马云`
21
+ - **英文角色**:`Heart`, `Bella`, `Nicole`
22
+
23
+ ## 高级配置
24
+
25
+ ### 大语言模型 (LLM)
26
+
27
+ - **模型路径和参数**: LLM 的模型和推理参数目前在代码中硬编码,方便快速启动。
28
+ - **文件位置**: `src/VoiceDialogue/services/text/generator.py`
29
+ - **自定义**: 你可以修改 `LLMResponseGenerator` 类中的配置。
30
+
31
+ ### 语音识别 (ASR)
32
+
33
+ - **引擎自动选择**: 系统会根据 `--language` 参数自动选择最合适的 ASR 引擎。
34
+ - **模型配置**: ASR 模型的具体配置位于 `src/VoiceDialogue/services/speech/recognizers/manager.py`。
35
+
36
+ ### 系统提示词 (System Prompt)
37
+
38
+ - **功能**: 定义 AI 角色的行为和说话风格。
39
+ - **文件位置**: `src/VoiceDialogue/services/text/generator.py`
40
+ - **自定义**: 你可以修改系统提示词变量的值。
41
+
42
+ ## 构建完整应用
43
+
44
+ 项目提供了完整的构建脚本,可以一键构建包含Python后端和Electron前端的完整应用:
45
+
46
+ 1. 首先,激活当前 Python 环境
47
+
48
+ ```bash
49
+ source .venv/bin/activate
50
+ # 或使用 conda
51
+ conda activate voicedialogue
52
+ ```
53
+
54
+ 2. 使用构建脚本
55
+
56
+ ```bash
57
+ # 使用构建脚本(推荐)
58
+ bash scripts/build.sh
59
+
60
+ # 或分别构建
61
+ bash scripts/build-python.sh # 构建Python后端
62
+ bash scripts/build-electron.sh # 构建Electron前端
63
+
64
+ # 清理构建产物
65
+ bash scripts/clean.sh
66
+ ```
docs/contributing.md ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 贡献指南
2
+
3
+ 我们非常欢迎社区的贡献!
4
+
5
+ ## 贡献流程
6
+
7
+ 1. Fork 本仓库
8
+ 2. 创建特性分支 (`git checkout -b feature/AmazingFeature`)
9
+ 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
10
+ 4. 推送到分支 (`git push origin feature/AmazingFeature`)
11
+ 5. 开启 Pull Request
12
+
13
+ ## 开发规范
14
+ - 请确保你的代码遵循项目现有的风格。
15
+ - 添加或修改功能时,请更新相关的文档。
16
+ - 提交前请确保所有测试都能通过。
17
+
18
+ ## 问题反馈
19
+ 如果你发现了 Bug 或者有功能建议,欢迎通过 [Issues](https://huggingface.co/MoYoYoTech/VoiceDialogue/issues) 提交。
docs/features.md ADDED
@@ -0,0 +1,47 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 功能特性
2
+
3
+ VoiceDialogue 系统集成了多项先进技术,提供端到端的语音交互体验。
4
+
5
+ ## 🎵 音频处理
6
+ - **回声消除音频捕获** - 自动消除回声干扰,提升语音质量
7
+ - **语音活动检测(VAD)** - 智能检测用户说话状态,自动开始/停止录制
8
+ - **实时音频流处理** - 低延迟音频播放和处理
9
+
10
+ ## 🗣️ 语音识别
11
+ - **智能语音识别引擎** - 中文使用FunASR高精度识别,其他语言使用Whisper模型
12
+ - **自动语言切换** - 根据启动参数自动选择最优识别引擎
13
+ - **实时转录处理** - 流式语音转文本处理,降低响应延迟
14
+
15
+ ## 🧠 语言模型
16
+ - **Qwen2.5 (14B)** - 内置阿里巴巴开源的中文优化模型
17
+ - **LangChain 集成** - 方便扩展和支持更多语言模型
18
+ - **自定义系统提示词** - 可在代码中配置 AI 助手的行为风格
19
+
20
+ ## 🎭 语音合成
21
+ 项目集成了两种先进的语音合成技术,支持动态说话人管理:
22
+
23
+ #### GPT-SoVITs 技术(中文角色)
24
+ 基于 GPT-SoVITs 的中文语音合成,支持以下角色:
25
+ - **罗翔** (Luo Xiang) - 法学教授风格,具有幽默风趣和深入浅出的讲解风格
26
+ - **马保国** (Ma Baoguo) - 太极大师风格,带有标志性的口音和语调特色
27
+ - **沈逸** (Shen Yi) - 学者风格,具有理性分析风格和富有磁性的嗓音
28
+ - **杨幂** (Yang Mi) - 明星风格,拥有清甜动人的声线和自然流畅的表达方式
29
+ - **周杰伦** (Zhou Jielun) - 歌手风格,具有标志性的说话风格和音乐气质
30
+ - **马云** (Ma Yun) - 企业家风格,富有激情的演讲风格和商业洞察表达方式
31
+
32
+ #### Kokoro TTS 技术(英文角色)
33
+ 基于 Kokoro TTS 的英文语音合成,支持以下角色:
34
+ - **Heart** - 温暖亲切的英语女性语音,声音富有感情色彩
35
+ - **Bella** - 优质的英语女性语音,具有清晰自然的发音和良好的表现力
36
+ - **Nicole** - 高质量的英语女性语音,发音清晰准确,语调自然流畅
37
+
38
+ #### 技术特点
39
+ - **智能引擎选择** - 系统根据内容语言自动选择最适合的TTS引擎
40
+ - **动态说话人管理** - 支持运行时动态加载和切换说话人
41
+ - **高质量合成** - 采用先进的神经网络技术,生成自然流畅的语音
42
+ - **可扩展架构** - 模块化设计,方便添加更多语音角色和TTS引擎
43
+
44
+ ## ⚙️ 服务模式
45
+ - **命令行模式 (CLI)** - 在终端中直接运行,提供实时语音交互体验
46
+ - **API 服务模式** - 启动一个 FastAPI Web 服务器,提供 HTTP 接口进行交互
47
+ - **桌面应用模式 (Electron)** - 提供图形界面的桌面应用程序。
docs/project-structure.md ADDED
@@ -0,0 +1,58 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 项目结构
2
+
3
+ ```text
4
+ VoiceDialogue/
5
+ ├── src/
6
+ │ └── voice_dialogue/ # 主要源代码目录
7
+ │ ├── __init__.py # 包初始化文件
8
+ │ ├── cli/ # 命令行界面模块
9
+ │ │ └── args.py # 命令行参数解析
10
+ │ ├── api/ # Web API 模块 (FastAPI)
11
+ │ │ ├── app.py # FastAPI 应用实例
12
+ │ │ ├── server.py # uvicorn 服务器
13
+ │ │ ├── core/ # API 核心配置
14
+ │ │ ├── routes/ # API 路由
15
+ │ │ ├── schemas/ # 数据模型
16
+ │ │ ├── dependencies/ # API 依赖项
17
+ │ │ └── middleware/ # 中间件
18
+ │ ├── config/ # 配置管理
19
+ │ │ ├── paths.py # 路径配置
20
+ │ │ └── speaker_config.py # 说话人配置
21
+ │ ├── core/ # 核心模块
22
+ │ │ ├── constants.py # 全局常量和队列
23
+ │ │ └── launcher.py # 系统启动器
24
+ │ ├── models/ # 数据模型和任务
25
+ │ ├── services/ # 服务模块
26
+ │ │ ├── audio/ # 音频处理服务
27
+ │ │ ├── speech/ # 语音识别服务
28
+ │ │ └── text/ # 文本生成服务
29
+ │ └── utils/ # 工具函数
30
+ ├── electron-app/ # Electron 桌面应用
31
+ │ ├── main.js # Electron 主进程
32
+ │ ├── preload.js # 预加载脚本
33
+ │ ├── loading.html # 加载页面
34
+ │ ├── utils.js # 工具函数
35
+ │ ├── package.json # Electron 依赖配置
36
+ │ ├── assets/ # Electron 资源文件
37
+ │ ├── build/ # 构建配置
38
+ │ └── python-dist/ # Python 分发包
39
+ ├── scripts/ # 构建和部署脚本
40
+ │ ├── build.sh # 主构建脚本
41
+ │ ├── build-python.sh # Python 打包脚本
42
+ │ ├── build-electron.sh # Electron 打包脚本
43
+ │ └── clean.sh # 清理脚本
44
+ ├── third_party/ # 第三方库
45
+ │ ├── moyoyo_tts/ # GPT-SoVITs TTS 引擎
46
+ │ └── AECAudioRecorder/ # 回声消除音频录制器
47
+ ├── assets/ # 资源文件
48
+ ├── dist/ # 分发包输出目录
49
+ ├── build/ # 构建临时文件
50
+ ├── tests/ # 测试文件
51
+ ├── docs/ # 文档目录
52
+ ├── main.py # 项目启动入口
53
+ ├── pyproject.toml # 项目配置文件 (uv)
54
+ ├── requirements.txt # Python 依赖
55
+ ├── uv.lock # uv 锁定文件
56
+ ├── .python-version # Python 版本配置
57
+ └── README.md # 项目说明文档
58
+ ```
docs/troubleshooting.md ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 故障排除与性能优化
2
+
3
+ ## 🛠️ 故障排除
4
+
5
+ ### 1. 模型下载失败
6
+ - **问题**: 网络连接超时或模型下载失败。
7
+ - **解决方案**: 设置 Hugging Face 镜像。
8
+ ```bash
9
+ export HF_ENDPOINT=https://hf-mirror.com
10
+ pip install -U huggingface_hub
11
+ ```
12
+
13
+ ### 2. 音频设备问题
14
+ - **问题**: 找不到音频设备或权限被拒绝。
15
+ - **macOS 解决方案**: 系统设置 → 隐私与安全性 → 麦克风 → 启用你的终端应用 (如 iTerm, Terminal)。
16
+ - **Linux 解决方案**: `sudo usermod -a -G audio $USER`,然后重新登录。
17
+
18
+ ### 3. 内存不足错误 (OOM)
19
+ - **问题**: `CUDA out of memory` 或 RAM 不足。
20
+ - **解决方案**: LLM 是主要的内存消耗者。你可以通过修改 `src/VoiceDialogue/services/text/generator.py` 来降低资源消耗:
21
+ - **更换模型**: 将模型路径指向一个更小的模型(如 7B Q4 量化模型)。
22
+ - **减少批处理大小**: 减小模型参数中的 `n_batch` 值(如 `256`)。
23
+ - **减少上下文长度**: 减小 `n_ctx` 的值(如 `1024`)。
24
+
25
+ ### 4. 依赖包冲突
26
+ - **问题**: 包版本冲突或导入错误。
27
+ - **解决方案**: 强烈建议在虚拟环境中安装。如果遇到问题,尝试重建虚拟环境。
28
+ ```bash
29
+ # 使用 conda
30
+ conda deactivate
31
+ conda env remove -n voicedialogue
32
+
33
+ # 使用 uv
34
+ deactivate
35
+ rm -rf .venv
36
+ ```
37
+
38
+ ### 5. 说话人角色不存在
39
+ - **问题**: 指定的说话人不在支持列表中。
40
+ - **解决方案**: 使用 `python main.py --help` 查看所有可用的说话人角色。
41
+
42
+ ### 6. FFmpeg 相关错误
43
+ - **问题**: 音频处理失败或编解码错误。
44
+ - **解决方案**: 确保正确安装 FFmpeg:
45
+ ```bash
46
+ # 检查 FFmpeg 安装
47
+ ffmpeg -version
48
+
49
+ # 重新安装 FFmpeg
50
+ # macOS
51
+ brew reinstall ffmpeg
52
+
53
+ ```
54
+
55
+ ### 7. Python 版本兼容性
56
+ - **问题**: Python 版本过低导致的兼容性问题。
57
+ - **解决方案**: 确保使用 Python 3.9+ 版本:
58
+ ```bash
59
+ python --version
60
+ # 如果版本过低,请升级或使用虚拟环境
61
+ ```
62
+
63
+ ### 8. 桌面应用相关问题
64
+ - **问题**: Electron 应用启动失败或功能异常。
65
+ - **解决方案**:
66
+ - 确保 Node.js 版本 >= 16
67
+ - 重新安装依赖:`cd electron-app && npm install`
68
+ - 检查 Python 后端是否正常运行
69
+
70
+ ### 9. 构建打包问题
71
+ - **问题**: 使用构建脚本失败。
72
+ - **解决方案**:
73
+ - 确保有执行权限:`chmod +x scripts/*.sh`
74
+ - 检查所有依赖是否安装完成
75
+ - 查看具体错误日志进行调试
76
+
77
+ ## 📊 性能优化建议
78
+
79
+ ### 硬件优化
80
+ - **内存**: 推荐 32GB RAM 以获得最佳性能
81
+ - **存储**: 使用 SSD 硬盘可显著提升模型加载速度
82
+ - **CPU**: 多核处理器有助于多线程处理
83
+
84
+ ### 软件优化
85
+ - **模型选择**: 根据硬件配置选择合适大小的模型
86
+ - **批处理优化**: 调整 LLM 的 `n_batch` 参数
87
+ - **音频缓冲**: 根据延迟要求调整音频缓冲区大小