liumaolin commited on
Commit
a3adfd5
·
1 Parent(s): ee4663a

Update README.md: revise feature descriptions, add new Web API service section, update supported TTS models and characters, and include enhanced installation and usage instructions.

Browse files
Files changed (1) hide show
  1. README.md +159 -246
README.md CHANGED
@@ -17,11 +17,11 @@
17
 
18
  VoiceDialogue 是一个基于 Python 的完整语音对话系统,实现了端到端的语音交互体验。系统采用模块化设计,支持:
19
 
20
- - 🎤 **实时语音识别** - 基于 Whisper 的高精度语音转文本,支持中英文识别
21
- - 🤖 **智能对话生成** - 集成多种大语言模型(Qwen2.5、Llama3、Mistral等)
22
- - 🔊 **高质量语音合成** - 基于 GPT-SoVITS 的多角色语音生成
 
23
  - 🔇 **回声消除** - 内置音频处理技术,支持实时语音交互
24
- - 🌍 **多语言支持** - 支持中文和英文语音识别与合成
25
  - ⚡ **低延迟处理** - 优化的音频流处理管道,实现流畅对话体验
26
 
27
  ## ✨ 主要特性
@@ -30,32 +30,44 @@ VoiceDialogue 是一个基于 Python 的完整语音对话系统,实现了端
30
  - **回声消除音频捕获** - 自动消除回声干扰,提升语音质量
31
  - **语音活动检测(VAD)** - 智能检测用户说话状态,自动开始/停止录制
32
  - **实时音频流处理** - 低延迟音频播放和处理
33
- - **多格式音频支持** - 支持多种音频格式的输入输出
34
 
35
  ### 🗣️ 语音识别
36
  - **智能语音识别引擎** - 中文使用FunASR高精度识别,其他语言使用Whisper模型
37
- - **FunASR中文优化** - 专为中文语音优化的识别引擎,支持方言和口音识别
38
- - **Whisper多语言支持** - 支持 Medium / Large 模型,覆盖多种国际语言
39
- - **自动语言检测** - 根据配置自动选择最适合的识别引擎
40
  - **实时转录处理** - 流式语音转文本处理,降低响应延迟
41
- - **高精度识别** - 基于最新语音识别技术,提供业界领先的识别准确率
42
-
43
 
44
  ### 🧠 语言模型
45
- 支持多种预训练大语言模型:
46
- - **Qwen2.5** (7B/14B) - 阿里巴巴开源的中文优化模型
47
- - **Llama3** (8B) - Meta 开源的通用对话模型
48
- - **Mistral** (7B) - 高效推理的欧洲开源模型
49
- - **自定义系统提示词** - 可配置 AI 助手的行为风格
50
 
51
  ### 🎭 语音合成
52
- 内置丰富的音色选择,基于 GPT-SoVITS 技术:
53
- - **罗翔** - 法学教授风格,适合严肃话题
54
- - **马保国** - 网络名人风格,轻松幽默
55
- - **沈逸** - 学者风格,理性分析
56
- - **杨幂** - 明星风格,亲和力强
57
- - **周杰伦** - 歌手风格,个性鲜明
58
- - **马云** - 企业家风格,商务感强
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
 
60
  ## 🚀 快速开始
61
 
@@ -66,7 +78,6 @@ VoiceDialogue 是一个基于 Python 的完整语音对话系统,实现了端
66
  - **内存要求**: 至少 16GB RAM (推荐 32GB 用于大模型)
67
  - **存储空间**: 至少 20GB 可用空间 (用于模型文件)
68
 
69
-
70
  ### 安装步骤
71
 
72
  1. **克隆项目**
@@ -81,165 +92,167 @@ cd VoiceDialogue
81
  conda create -n voicedialogue python=3.9
82
  conda activate voicedialogue
83
 
84
- # 或使用 virtualenv
85
  python -m venv voicedialogue
86
- source voicedialogue/bin/activate # Linux/macOS
87
- # voicedialogue\Scripts\activate # Windows
88
  ```
89
 
90
- 3. **安装 whisper.cpp**
91
  ```bash
 
92
  WHISPER_COREML=1 pip install git+https://github.com/absadiki/pywhispercpp
93
- ```
94
- 4. **安装 llama.cpp**
95
- ```bash
96
  CMAKE_ARGS="-DGGML_METAL=on" pip install llama-cpp-python
97
  ```
98
 
99
- 5. **安装项目依赖**
100
  ```bash
101
  pip install -r requirements.txt
102
  ```
103
 
104
- 6. **安装音频处理工具**
105
  ```bash
106
  # macOS
107
  brew install ffmpeg
108
 
109
- # Ubuntu/Debian
110
- sudo apt update
111
- sudo apt install ffmpeg
 
 
112
 
113
- # CentOS/RHEL
114
- sudo yum install ffmpeg
115
 
116
- # 或使用 conda
117
- conda install ffmpeg
118
- ```
119
 
120
- ### 🎮 首次运行
121
 
122
  ```bash
123
- # 启动语音对话系统
124
  python src/VoiceDialogue/main.py
 
 
 
125
  ```
126
 
127
  **首次运行说明**:
128
- - 系统会自动下载所需的模型文件 (约 5-10GB)
129
- - 下载时间取决于网络速度,请耐心等待
130
- - 模型文件会保存在 `~/.moyoyo_ai/` 目录下
131
- - 看到 "服务启动成功" 提示后即可开始语音对话
 
 
 
 
 
 
 
132
 
 
 
 
 
133
 
134
  ## ⚙️ 配置选项
135
 
136
- ### 基础配置
137
 
138
- `src/VoiceDialogue/main.py` 的 `main()` 函数中可以自定义以下选项:
139
 
140
- ```python
141
- def main():
142
- # 语言设置
143
- user_language = 'zh' # 'zh': 中文 | 'en': 英文
144
-
145
- # 系统提示词 - 定义 AI 助手的行为风格
146
- SYSTEM_PROMPT = (
147
- "你是善于模拟真实的思考过程的AI助手。"
148
- "回答时,必须首先生成一个不超过5个字的简短句子,"
149
- "比如:\"让我想一下\"、\"在我看来\"、\"稍等我理一理\"等,"
150
- "然后再进行正式回答,保持中文口语化表达。"
151
- )
152
-
153
- # TTS 语音合成角色
154
- tts_speaker = '沈逸' # 可选: 罗翔、马保国、沈逸、杨幂、周杰伦、马云
155
-
156
- # 大语言模型规模
157
- llm = '14B' # '7B': 更快推理 | '14B': 更好效果
158
-
159
- # Whisper 语音识别模型
160
- whisper_model = 'medium' # 'medium': 平衡速度和精度 | 'large': 最高精度
161
- ```
162
 
163
  ### 高级配置
164
 
165
- #### 大语言模型参数调优
166
 
167
- ```python
168
- # main.py 中的 default_llm_params 字典
169
- default_llm_params = {
170
- 'streaming': True, # 启用流式输出
171
- 'n_gpu_layers': -1, # GPU 层数 (-1 为全部)
172
- 'n_batch': 512, # 批处理大小
173
- 'n_ctx': 2048, # 上下文长度
174
- 'f16_kv': True, # 16位浮点数
175
- 'temperature': 0.8, # 创造性参数 (0.0-1.0)
176
- 'top_k': 50, # Top-K 采样
177
- 'top_p': 1.0, # Top-P 采样
178
- }
179
-
180
- #### 路径配置
181
-
182
- 系统使用 `src/VoiceDialogue/config/settings.py` 管理路径配置:
183
 
184
  ```python
185
- # 默认数据目录
186
- DATA_FOLDER = ~/.moyoyo_ai/
187
-
188
- # 模型存储路径
189
- ├── llm_models/ # 大语言模型
190
- ├── audio_models/ # TTS 语音模型
191
- ├── audio_output/ # 音频输出文件
192
- └���─ .single_instance_locker # 单实例锁文件
 
 
 
 
 
 
 
193
  ```
194
 
 
 
 
 
 
 
 
 
 
 
 
195
  ## 📁 项目结构
196
 
197
  ```text
198
  VoiceDialogue/
199
- ├── src/ # 源代码目录
200
- │ └── VoiceDialogue/ # 主要代码包
 
 
 
 
201
  │ ├── config/ # 配置管理
202
- │ │ ├── __init__.py
203
  │ │ ├── paths.py # 路径配置
204
  │ │ └── settings.py # 系统设置
205
- │ ├── models/ # 模型管理模块
206
- │ │ ├── audio_model.py # 音频模型管理
207
- │ │ ├── language_model.py # 语言模型管理
208
- │ │ └── voice_model.py # 语音模型管理
209
  │ ├── services/ # 服务模块
210
  │ │ ├── audio/ # 音频处理服务
211
  │ │ │ ├── aec_audio_capture.py # 回声消除捕获
212
  │ │ │ ├── audio_answer.py # TTS 音频生成
213
- │ │ │ └── audio_player.py # 音频播放
 
214
  │ │ ├── speech/ # 语音识别服务
215
  │ │ │ ├── speech_monitor.py # 语音状态监控
216
- │ │ │ └── asr_service.py # ASR 识别服务
217
- │ │ ├── text/ # 文本生成服务
218
- │ │ └── text_generator.py # LLM 文本生成
219
- │ │ └── core/ # 核心服务
 
220
  │ ├── utils/ # 工具函数
221
  │ └── main.py # 主程序入口
222
- ├── models/ # 预训练模型存储
223
- │ └── asr/ # 语音识别模型
224
- ├── resources/ # 资源文件
225
- │ ├── audio/ # 音频资源
226
- │ └── libraries/ # 动态库文件
227
- ├── third_party/ # 第三方库
228
- ├── tests/ # 测试文件
229
- ├── docs/ # 文档目录
230
  ├── requirements.txt # Python 依赖
231
- ├── .gitignore # Git 忽略文件
232
  └── README.md # 项目说明文档
233
  ```
234
 
235
  ## 🔧 系统架构
236
 
237
- ### 数据流程图
238
-
239
  ```
240
- 用户语音输入 回声消除 语音活动检测 语音转录 LLM生成回复 TTS合成 音频输出
241
-
242
- └───────────────────────────────── 实时语音交互循环 ─────────────────────────────────┘
243
  ```
244
 
245
 
@@ -249,144 +262,46 @@ VoiceDialogue/
249
  |------|----------|----------|
250
  | **EchoCancellingAudioCapture** | 回声消除音频捕获 | 实时音频流捕获与预处理 |
251
  | **SpeechStateMonitor** | 语音活动检测 | VAD 算法检测用户说话状态 |
252
- | **WhisperWorker** | 语音识别转录 | OpenAI Whisper 模型推理 |
253
- | **LLMResponseGenerator** | 智能文本生成 | 大语言模型对话生成 |
254
- | **TTSAudioGenerator** | 语音合成 | GPT-SoVITS 文本转语音 |
255
  | **AudioStreamPlayer** | 音频流播放 | 实时音频输出播放 |
256
-
257
- ### 多线程架构
258
-
259
- 系统采用多线程并发处理架构,通过消息队列实现组件间通信:
260
-
261
- - `audio_frames_queue`: 原始音频帧队列
262
- - `user_voice_queue`: 用户语音片段队列
263
- - `transcribed_text_queue`: 转录文本队列
264
- - `generated_answer_queue`: 生成回答队列
265
- - `tts_generated_audio_queue`: TTS 音频队列
266
-
267
- ## 🔍 使用指南
268
-
269
- ### 基本使用流程
270
-
271
- 1. **启动系统**: 运行 `python src/VoiceDialogue/main.py`
272
- 2. **等待加载**: 首次运行会下载模型,请耐心等待
273
- 3. **开始对话**: 看到"服务启动成功"后直接开始说话
274
- 4. **语音交互**: 系统会自动检测语音并进行对话
275
- 5. **停止系统**: 使用 Ctrl+C 终止程序
276
-
277
- ### 性能优化建议
278
-
279
- #### 硬件优化
280
- - **GPU 加速**: 如有 NVIDIA GPU,确保安装 CUDA 版本的 PyTorch
281
- - **内存管理**: 16GB RAM 可同时运行 14B 模型,8GB RAM 建议使用 7B 模型
282
- - **存储优化**: SSD 硬盘可显著提升模型加载速度
283
-
284
- #### 软件优化
285
- ```python
286
- # 针对不同硬件配置的推荐设置
287
-
288
- # 高性能配置 (16GB+ RAM, GPU)
289
- llm = '14B'
290
- whisper_model = 'large'
291
- default_llm_params['n_batch'] = 1024
292
- default_llm_params['n_ctx'] = 4096
293
-
294
- # 平衡配置 (8-16GB RAM)
295
- llm = '7B'
296
- whisper_model = 'medium'
297
- default_llm_params['n_batch'] = 512
298
- default_llm_params['n_ctx'] = 2048
299
-
300
- # 轻量配置 (8GB RAM, CPU only)
301
- llm = '7B'
302
- whisper_model = 'medium'
303
- default_llm_params['n_gpu_layers'] = 0
304
- default_llm_params['n_batch'] = 256
305
- ```
306
 
307
  ## 🛠️ 故障排除
308
 
309
- ### 常见问题及解决方案
310
-
311
- #### 1. 模型下载失败
312
  ```bash
313
- # 问题: 网络连接超时或模型下载失败
314
- # 解决方案:
315
- export HF_ENDPOINT=https://hf-mirror.com # 使用镜像站点
316
  pip install -U huggingface_hub
317
  ```
318
 
319
- #### 2. 音频设备问题
320
- ```bash
321
- # 问题: 找不到音频设备或权限被拒绝
322
- # macOS 解决方案:
323
- # 系统偏好设置 → 安全性与隐私 → 隐私 → 麦克风 → 添加终端应用
324
-
325
- # Linux 解决方案:
326
- sudo usermod -a -G audio $USER
327
- # 重新登录生效
328
- ```
329
-
330
- #### 3. 内存不足错误
331
- ```python
332
- # 问题: CUDA out of memory 或 RAM 不足
333
- # 解决方案: 降低模型规模和批处理大小
334
- llm = '7B' # 改为 7B 模型
335
- default_llm_params['n_batch'] = 256 # 减少批处理大小
336
- default_llm_params['n_ctx'] = 1024 # 减少上下文长度
337
- ```
338
-
339
- #### 4. 依赖包冲突
340
  ```bash
341
- # 问题: 包版本冲突或导入错误
342
- # 解决方案: 重新创建虚拟环境
343
  conda deactivate
344
  conda env remove -n voicedialogue
345
- conda create -n voicedialogue python=3.9
346
- conda activate voicedialogue
347
- pip install -r requirements.txt
348
  ```
349
 
350
- ### 调试模式
351
-
352
- 启用详细日志输出进行问题诊断:
353
-
354
- ```python
355
- import logging
356
- logging.basicConfig(level=logging.DEBUG)
357
-
358
- # 在 main.py 开头添加上述代码
359
- ```
360
-
361
- ### 性能监控
362
-
363
- ```bash
364
- # 监控系统资源使用情况
365
- # macOS
366
- top -pid $(pgrep -f "python.*main.py")
367
-
368
- # Linux
369
- htop -p $(pgrep -f "python.*main.py")
370
-
371
- # 监控 GPU 使用 (NVIDIA)
372
- nvidia-smi -l 1
373
- ```
374
-
375
- ## 📚 相关资源
376
-
377
- ### 官方文档
378
- - [OpenAI Whisper](https://github.com/openai/whisper)
379
- - [GPT-SoVITS](https://github.com/RVC-Boss/GPT-SoVITS)
380
- - [Qwen2.5 模型](https://huggingface.co/Qwen)
381
- - [LangChain 框架](https://python.langchain.com/)
382
-
383
- ### 社区支持
384
- - 问题反馈: [GitHub Issues](https://github.com/MoYoYoTech/VoiceDialogue/issues)
385
- - 功能建议: [GitHub Discussions](https://github.com/MoYoYoTech/VoiceDialogue/discussions)
386
-
387
  ## 📄 许可证
388
 
389
- 本项目采用 MIT 许可证开源。详细信息请查看 [LICENSE](LICENSE) 文件。
390
 
391
  ## 🤝 贡献指南
392
 
@@ -404,6 +319,4 @@ nvidia-smi -l 1
404
 
405
  **如果这个项目对您有帮助,请给我们一个 ⭐️!**
406
 
407
- Made with ❤️ by [MoYoYo Tech](https://github.com/MoYoYoTech)
408
-
409
  </div>
 
17
 
18
  VoiceDialogue 是一个基于 Python 的完整语音对话系统,实现了端到端的语音交互体验。系统采用模块化设计,支持:
19
 
20
+ - 🎤 **实时语音识别** - 基于 FunASR 和 Whisper 的高精度语音转文本
21
+ - 🤖 **智能对话生成** - 集成 Qwen2.5 等多种大语言模型
22
+ - 🔊 **高质量语音合成** - 基于 GPT-SoVITs 和 Kokoro TTS 的多角色语音生成
23
+ - 🌐 **Web API 服务** - 提供 HTTP 接口,方便与其他应用集成
24
  - 🔇 **回声消除** - 内置音频处理技术,支持实时语音交互
 
25
  - ⚡ **低延迟处理** - 优化的音频流处理管道,实现流畅对话体验
26
 
27
  ## ✨ 主要特性
 
30
  - **回声消除音频捕获** - 自动消除回声干扰,提升语音质量
31
  - **语音活动检测(VAD)** - 智能检测用户说话状态,自动开始/停止录制
32
  - **实时音频流处理** - 低延迟音频播放和处理
 
33
 
34
  ### 🗣️ 语音识别
35
  - **智能语音识别引擎** - 中文使用FunASR高精度识别,其他语言使用Whisper模型
36
+ - **自动语言切换** - 根据启动参数自动选择最优识别引擎
 
 
37
  - **实时转录处理** - 流式语音转文本处理,降低响应延迟
 
 
38
 
39
  ### 🧠 语言模型
40
+ - **Qwen2.5 (14B)** - 内置阿里巴巴开源的中文优化模型
41
+ - **LangChain 集成** - 方便扩展和支持更多语言模型
42
+ - **自定义系统提示词** - 可在代码中配置 AI 助手的行为风格
 
 
43
 
44
  ### 🎭 语音合成
45
+ 项目集成了两种先进的语音合成技术,提供丰富的音色选择:
46
+
47
+ #### GPT-SoVITs 技术(中文角色)
48
+ 基于 GPT-SoVITs 的中文语音合成,支持以下角色:
49
+ - **罗翔** - 法学教授风格,具有幽默风趣和深入浅出的讲解风格
50
+ - **马保国** - 太极大师风格,带有标志性的口音和语调特色
51
+ - **沈逸** - 学者风格,具有理性分析风格和富有磁性的嗓音
52
+ - **杨幂** - 明星风格,拥有清甜动人的声线和自然流畅的表达方式
53
+ - **周杰伦** - 歌手风格,具有标志性的说话风格和音乐气质
54
+ - **马云** - 企业家风格,富有激情的演讲风格和商业洞察表达方式
55
+
56
+ #### Kokoro TTS 技术(英文角色)
57
+ 基于 Kokoro TTS 的英文语音合成,支持以下角色:
58
+ - **Heart** - 温暖亲切的英语女性语音,声音富有感情色彩
59
+ - **Bella** - 优质的英语女性语音,具有清晰自然的发音和良好的表现力
60
+ - **Nicole** - 高质量的英语女性语音,发音清晰准确,语调自然流畅
61
+
62
+ #### 技术特点
63
+ - **智能引擎选择** - 系统根据内容语言自动选择最适合的TTS引擎
64
+ - **高质量合成** - 采用先进的神经网络技术,生成自然流畅的语音
65
+ - **多角色支持** - 提供多样化的音色选择,满足不同场景需求
66
+ - **可扩展架构** - 模块化设计,方便添加更多语音角色和TTS引擎
67
+
68
+ ### ⚙️ 服务模式
69
+ - **命令行模式 (CLI)** - 在终端中直接运行,提供实时语音交互体验
70
+ - **API 服务模式** - 启动一个 FastAPI Web 服务器,提供 HTTP 接口进行交互
71
 
72
  ## 🚀 快速开始
73
 
 
78
  - **内存要求**: 至少 16GB RAM (推荐 32GB 用于大模型)
79
  - **存储空间**: 至少 20GB 可用空间 (用于模型文件)
80
 
 
81
  ### 安装步骤
82
 
83
  1. **克隆项目**
 
92
  conda create -n voicedialogue python=3.9
93
  conda activate voicedialogue
94
 
95
+ # 或使用 venv
96
  python -m venv voicedialogue
97
+ source voicedialogue/bin/activate
 
98
  ```
99
 
100
+ 3. **安装核心依赖**
101
  ```bash
102
+ # whisper.cpp for ASR
103
  WHISPER_COREML=1 pip install git+https://github.com/absadiki/pywhispercpp
104
+
105
+ # llama.cpp for LLM
 
106
  CMAKE_ARGS="-DGGML_METAL=on" pip install llama-cpp-python
107
  ```
108
 
109
+ 4. **安装项目依赖**
110
  ```bash
111
  pip install -r requirements.txt
112
  ```
113
 
114
+ 5. **安装音频处理工具**
115
  ```bash
116
  # macOS
117
  brew install ffmpeg
118
 
119
+ # Linux (Ubuntu/Debian)
120
+ sudo apt update && sudo apt install ffmpeg
121
+ ```
122
+
123
+ ### 🎮 运行系统
124
 
125
+ `VoiceDialogue` 支持两种运行模式:**命令行模式 (CLI)** 和 **API 服务模式**。
 
126
 
127
+ #### 1. 命令行模式 (默认)
 
 
128
 
129
+ 直接在终端进行实时语音对话。
130
 
131
  ```bash
132
+ # 启动语音对话系统 (默认使用中文)
133
  python src/VoiceDialogue/main.py
134
+
135
+ # 指定语言和角色
136
+ python src/VoiceDialogue/main.py --language en --speaker "Yang Mi"
137
  ```
138
 
139
  **首次运行说明**:
140
+ - 系统会自动下载所需的模型文件 (约 10-15GB),请耐心等待。
141
+ - 模型文件会保存在 `~/.moyoyo_ai/` 目录下。
142
+ - 看到 "服务启动成功" 提示后即可开始说话。
143
+
144
+ #### 2. API 服务模式
145
+
146
+ 启动一个 Web 服务器,通过 HTTP 请求进行交互。
147
+
148
+ ```bash
149
+ # 启动 API 服务器
150
+ python src/VoiceDialogue/main.py --mode api
151
 
152
+ # 指定不同端口
153
+ python src/VoiceDialogue/main.py --mode api --port 9000
154
+ ```
155
+ - API 文档地址: `http://localhost:8000/docs`
156
 
157
  ## ⚙️ 配置选项
158
 
159
+ ### 启动参数
160
 
161
+ 通过 `main.py` 的命令行参数可以方便地进行配置:
162
 
163
+ | 参数 | 缩写 | 可选值 | 默认值 | 描述 |
164
+ |---|---|---|---|---|
165
+ | `--mode` | `-m` | `cli`, `api` | `cli` | 设置运行模式 |
166
+ | `--language`| `-l` | `zh`, `en` | `zh` | (CLI模式) 设置用户语言 |
167
+ | `--speaker` | `-s` | (见下表) | `沈逸` | (CLI模式) 设置TTS语音角色 |
168
+ | `--host` | | IP地址 | `0.0.0.0` | (API模式) 服务器主机 |
169
+ | `--port` | `-p` | 端口号 | `8000` | (API模式) 服务器端口 |
170
+ | `--reload`| | 无 | `False` | (API模式) 启用热重载 |
171
+
172
+ **支持的 `speaker` 角色**:
173
+ - 中文角色:`罗翔`, `马保国`, `沈逸`, `杨幂`, `周杰伦`, `马云`
174
+ - 英文角色:`Heart`, `Bella`, `Nicole`
 
 
 
 
 
 
 
 
 
 
175
 
176
  ### 高级配置
177
 
178
+ #### 大语言模型 (LLM)
179
 
180
+ - **模型路径和参数**: LLM 的模型和推理参数目前在代码中硬编码,方便快速启动。
181
+ - **文件位置**: `src/VoiceDialogue/services/text/text_generator.py`
182
+ - **自定义**: 你可以修改 `LLMResponseGenerator` 类中的 `run` 方法,更换模型路径或调整 `model_params` 字典中的参数(如 `temperature`, `top_k`, `top_p` 等)。
 
 
 
 
 
 
 
 
 
 
 
 
 
183
 
184
  ```python
185
+ # src/VoiceDialogue/services/text/text_generator.py
186
+ # ...
187
+ class LLMResponseGenerator(BaseThread):
188
+ # ...
189
+ def run(self):
190
+ # 修改这里的模型路径
191
+ model_path = paths.MODELS_PATH / 'llm' / 'Qwen2.5-14B-Instruct.Q4_0.gguf'
192
+ # 修改这里的推理参数
193
+ model_params = {
194
+ 'streaming': True,
195
+ 'n_gpu_layers': -1,
196
+ 'n_batch': 512,
197
+ # ...
198
+ }
199
+ # ...
200
  ```
201
 
202
+ #### 语音识别 (ASR)
203
+
204
+ - **引擎自动选择**: 系统会根据 `--language` 参数自动选择最合适的 ASR 引擎 (`FunASR` for `zh`, `Whisper` for `en`)。
205
+ - **模型配置**: ASR 模型的具体配置位于 `src/VoiceDialogue/services/speech/asr/manager.py`。
206
+
207
+ #### 系统提示词 (System Prompt)
208
+
209
+ - **功能**: 定义 AI 角色的行为和说话风格。
210
+ - **文件位置**: `src/VoiceDialogue/services/text/text_generator.py`
211
+ - **自定义**: 你可以修改 `CHINESE_SYSTEM_PROMPT` 和 `ENGLISH_SYSTEM_PROMPT` 变量的值。
212
+
213
  ## 📁 项目结构
214
 
215
  ```text
216
  VoiceDialogue/
217
+ ├── src/
218
+ │ └── VoiceDialogue/
219
+ │ ├── api/ # Web API 模块 (FastAPI)
220
+ │ │ ├── app.py # FastAPI 应用实例
221
+ │ │ ├── server.py # uvicorn 服务器
222
+ │ │ └── ... # 路由、依赖、模型等
223
  │ ├── config/ # 配置管理
 
224
  │ │ ├── paths.py # 路径配置
225
  │ │ └── settings.py # 系统设置
226
+ │ ├── models/ # 数据模型和任务
227
+ │ │ ├── language_model.py # 语言模型定义
228
+ │ │ └── voice_task.py # 语音任务定义
 
229
  │ ├── services/ # 服务模块
230
  │ │ ├── audio/ # 音频处理服务
231
  │ │ │ ├── aec_audio_capture.py # 回声消除捕获
232
  │ │ │ ├── audio_answer.py # TTS 音频生成
233
+ │ │ │ ├── audio_player.py # 音频播放
234
+ │ │ │ └── audio_generator/ # TTS 管理器
235
  │ │ ├── speech/ # 语音识别服务
236
  │ │ │ ├── speech_monitor.py # 语音状态监控
237
+ │ │ │ ├── asr_service.py # ASR 识别服务
238
+ │ │ │ └── asr/ # ASR 管理器
239
+ │ │ └── text/ # 文本生成服务
240
+ │ │ ├── text_generator.py # LLM 文本生成
241
+ │ │ └── langchain_llm.py # LangChain 集成
242
  │ ├── utils/ # 工具函数
243
  │ └── main.py # 主程序入口
244
+ ├── models/ # 预训练模型存储 (自动下载)
 
 
 
 
 
 
 
245
  ├── requirements.txt # Python 依赖
 
246
  └── README.md # 项目说明文档
247
  ```
248
 
249
  ## 🔧 系统架构
250
 
251
+ ### 数据流程图 (CLI 模式)
 
252
  ```
253
+ 用户语音输入 回声消除 语音活动检测 语音转录 (ASR) LLM生成回复 TTS合成 音频输出
254
+
255
+ └──────────��──────────────────── 实时语音交互循环 ────────────────────────────────┘
256
  ```
257
 
258
 
 
262
  |------|----------|----------|
263
  | **EchoCancellingAudioCapture** | 回声消除音频捕获 | 实时音频流捕获与预处理 |
264
  | **SpeechStateMonitor** | 语音活动检测 | VAD 算法检测用户说话状态 |
265
+ | **ASRWorker** | 语音识别转录 | FunASR / Whisper 模型推理 |
266
+ | **LLMResponseGenerator** | 智能文本生成 | Qwen2.5 (llama.cpp) 对话生成 |
267
+ | **TTSAudioGenerator** | 语音合成 | GPT-SoVITs / Kokoro TTS 文本转语音 |
268
  | **AudioStreamPlayer** | 音频流播放 | 实时音频输出播放 |
269
+ | **FastAPI App** | API服务 | 提供HTTP接口,封装核心服务 |
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
270
 
271
  ## 🛠️ 故障排除
272
 
273
+ ### 1. 模型下载失败
274
+ - **问题**: 网络连接超时或模型下载失败。
275
+ - **解决方案**: 设置 Hugging Face 镜像。
276
  ```bash
277
+ export HF_ENDPOINT=https://hf-mirror.com
 
 
278
  pip install -U huggingface_hub
279
  ```
280
 
281
+ ### 2. 音频设备问题
282
+ - **问题**: 找不到音频设备或权限被拒绝。
283
+ - **macOS 解决方案**: 系统设置 → 隐私与安全性 → 麦克风 → 启用你的终端应用 (如 iTerm, Terminal)。
284
+ - **Linux 解决方案**: `sudo usermod -a -G audio $USER`,然后重新登录。
285
+
286
+ ### 3. 内存不足错误 (OOM)
287
+ - **问题**: `CUDA out of memory` 或 RAM 不足。
288
+ - **解决方案**: LLM 是主要的内存消耗者。你可以通过修改 `src/VoiceDialogue/services/text/text_generator.py` 来降低资源消耗:
289
+ - **更换模型**: 将 `model_path` 指向一个更小的模型(如 7B Q4 量化模型)。
290
+ - **减少批处理大小**: 减小 `model_params` 中的 `n_batch` 值(如 `256`)。
291
+ - **减少上下文长度**: 减小 `n_ctx` 的值(如 `1024`)。
292
+
293
+ ### 4. 依赖包冲突
294
+ - **问题**: 包版本冲突或导入错误。
295
+ - **解决方案**: 强烈建议在虚拟环境中安装。如果遇到问题,尝试重建虚拟环境。
 
 
 
 
 
 
296
  ```bash
 
 
297
  conda deactivate
298
  conda env remove -n voicedialogue
299
+ # ... 重新执行安装步骤 ...
 
 
300
  ```
301
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
302
  ## 📄 许可证
303
 
304
+ 本项目采用 MIT 许可证开源。
305
 
306
  ## 🤝 贡献指南
307
 
 
319
 
320
  **如果这个项目对您有帮助,请给我们一个 ⭐️!**
321
 
 
 
322
  </div>