liumaolin commited on
Commit
710072a
·
1 Parent(s): 3eb6daa

Update README.md: clarify usage details, add dynamic speaker management, and refine documentation for consistency and completeness.

Browse files
Files changed (1) hide show
  1. README.md +57 -56
README.md CHANGED
@@ -63,16 +63,16 @@ VoiceDialogue 是一个基于 Python 的完整语音对话系统,实现了端
63
  - **自定义系统提示词** - 可在代码中配置 AI 助手的行为风格
64
 
65
  ### 🎭 语音合成
66
- 项目集成了两种先进的语音合成技术,提供丰富的音色选择:
67
 
68
  #### GPT-SoVITs 技术(中文角色)
69
  基于 GPT-SoVITs 的中文语音合成,支持以下角色:
70
- - **罗翔** - 法学教授风格,具有幽默风趣和深入浅出的讲解风格
71
- - **马保国** - 太极大师风格,带有标志性的口音和语调特色
72
- - **沈逸** - 学者风格,具有理性分析风格和富有磁性的嗓音
73
- - **杨幂** - 明星风格,拥有清甜动人的声线和自然流畅的表达方式
74
- - **周杰伦** - 歌手风格,具有标志性的说话风格和音乐气质
75
- - **马云** - 企业家风格,富有激情的演讲风格和商业洞察表达方式
76
 
77
  #### Kokoro TTS 技术(英文角色)
78
  基于 Kokoro TTS 的英文语音合成,支持以下角色:
@@ -82,8 +82,8 @@ VoiceDialogue 是一个基于 Python 的完整语音对话系统,实现了端
82
 
83
  #### 技术特点
84
  - **智能引擎选择** - 系统根据内容语言自动选择最适合的TTS引擎
 
85
  - **高质量合成** - 采用先进的神经网络技术,生成自然流畅的语音
86
- - **多角色支持** - 提供多样化的音色选择,满足不同场景需求
87
  - **可扩展架构** - 模块化设计,方便添加更多语音角色和TTS引擎
88
 
89
  ### ⚙️ 服务模式
@@ -150,11 +150,14 @@ sudo apt update && sudo apt install ffmpeg
150
  直接在终端进行实时语音对话。
151
 
152
  ```bash
153
- # 启动语音对话系统 (默认使用中文)
154
  python src/VoiceDialogue/main.py
155
 
156
  # 指定语言和角色
157
- python src/VoiceDialogue/main.py --language en --speaker "Yang Mi"
 
 
 
158
  ```
159
 
160
  **首次运行说明**:
@@ -170,10 +173,15 @@ python src/VoiceDialogue/main.py --language en --speaker "Yang Mi"
170
  # 启动 API 服务器
171
  python src/VoiceDialogue/main.py --mode api
172
 
173
- # 指定不同端口
174
- python src/VoiceDialogue/main.py --mode api --port 9000
175
  ```
 
 
176
  - API 文档地址: `http://localhost:8000/docs`
 
 
 
177
 
178
  ## ⚙️ 配置选项
179
 
@@ -185,12 +193,12 @@ python src/VoiceDialogue/main.py --mode api --port 9000
185
  |---|---|---|---|---|
186
  | `--mode` | `-m` | `cli`, `api` | `cli` | 设置运行模式 |
187
  | `--language`| `-l` | `zh`, `en` | `zh` | (CLI模式) 设置用户语言 |
188
- | `--speaker` | `-s` | (见下表) | `沈逸` | (CLI模式) 设置TTS语音角色 |
189
  | `--host` | | IP地址 | `0.0.0.0` | (API模式) 服务器主机 |
190
  | `--port` | `-p` | 端口号 | `8000` | (API模式) 服务器端口 |
191
  | `--reload`| | 无 | `False` | (API模式) 启用热重载 |
192
 
193
- **支持的 `speaker` 角色**:
194
  - 中文角色:`罗翔`, `马保国`, `沈逸`, `杨幂`, `周杰伦`, `马云`
195
  - 英文角色:`Heart`, `Bella`, `Nicole`
196
 
@@ -199,37 +207,19 @@ python src/VoiceDialogue/main.py --mode api --port 9000
199
  #### 大语言模型 (LLM)
200
 
201
  - **模型路径和参数**: LLM 的模型和推理参数目前在代码中硬编码,方便快速启动。
202
- - **文件位置**: `src/VoiceDialogue/services/text/text_generator.py`
203
- - **自定义**: 你可以修改 `LLMResponseGenerator` 类中的 `run` 方法,更换模型路径或调整 `model_params` 字典中的参数(如 `temperature`, `top_k`, `top_p` 等)。
204
-
205
- ```python
206
- # src/VoiceDialogue/services/text/text_generator.py
207
- # ...
208
- class LLMResponseGenerator(BaseThread):
209
- # ...
210
- def run(self):
211
- # 修改这里的模型路径
212
- model_path = paths.MODELS_PATH / 'llm' / 'Qwen2.5-14B-Instruct.Q4_0.gguf'
213
- # 修改这里的推理参数
214
- model_params = {
215
- 'streaming': True,
216
- 'n_gpu_layers': -1,
217
- 'n_batch': 512,
218
- # ...
219
- }
220
- # ...
221
- ```
222
 
223
  #### 语音识别 (ASR)
224
 
225
- - **引擎自动选择**: 系统会根据 `--language` 参数自动选择最合适的 ASR 引擎 (`FunASR` for `zh`, `Whisper` for `en`)。
226
- - **模型配置**: ASR 模型的具体配置位于 `src/VoiceDialogue/services/speech/asr/manager.py`。
227
 
228
  #### 系统提示词 (System Prompt)
229
 
230
  - **功能**: 定义 AI 角色的行为和说话风格。
231
- - **文件位置**: `src/VoiceDialogue/services/text/text_generator.py`
232
- - **自定义**: 你可以修改 `CHINESE_SYSTEM_PROMPT` 和 `ENGLISH_SYSTEM_PROMPT` 变量的值。
233
 
234
  ## 📁 项目结构
235
 
@@ -237,32 +227,39 @@ class LLMResponseGenerator(BaseThread):
237
  VoiceDialogue/
238
  ├── src/
239
  │ └── VoiceDialogue/
 
240
  │ ├── api/ # Web API 模块 (FastAPI)
241
  │ │ ├── app.py # FastAPI 应用实例
242
  │ │ ├── server.py # uvicorn 服务器
243
- │ │ └── ... # 路由、依赖、模型等
 
 
 
244
  │ ├── config/ # 配置管理
245
- │ │ ├── paths.py # 路径配置
246
- │ └── settings.py # 系统设置
 
247
  │ ├── models/ # 数据模型和任务
248
  │ │ ├── language_model.py # 语言模型定义
249
  │ │ └── voice_task.py # 语音任务定义
250
  │ ├── services/ # 服务模块
251
  │ │ ├── audio/ # 音频处理服务
252
- │ │ │ ├── aec_audio_capture.py # 回声消除捕获
253
- │ │ │ ├── audio_answer.py # TTS 音频生成
254
- │ │ │ ├── audio_player.py # 音频播放
255
- │ │ │ └── audio_generator/ # TTS 管理器
256
  │ │ ├── speech/ # 语音识别服务
257
- │ │ │ ├── speech_monitor.py # 语音状态监控
258
- │ │ │ ├── asr_service.py # ASR 识别服务
259
- │ │ │ └── asr/ # ASR 管理器
260
  │ │ └── text/ # 文本生成服务
261
- │ │ ├── text_generator.py # LLM 文本生成
262
- └── langchain_llm.py # LangChain 集成
263
- ├── utils/ # 工具函数
264
- └── main.py # 主程序入口
265
- ├── models/ # 预训练模型存储 (自动下载)
 
 
266
  ├── requirements.txt # Python 依赖
267
  └── README.md # 项目说明文档
268
  ```
@@ -306,9 +303,9 @@ pip install -U huggingface_hub
306
 
307
  ### 3. 内存不足错误 (OOM)
308
  - **问题**: `CUDA out of memory` 或 RAM 不足。
309
- - **解决方案**: LLM 是主要的内存消耗者。你可以通过修改 `src/VoiceDialogue/services/text/text_generator.py` 来降低资源消耗:
310
- - **更换模型**: `model_path` 指向一个更小的模型(如 7B Q4 量化模型)。
311
- - **减少批处理大小**: 减小 `model_params` 中的 `n_batch` 值(如 `256`)。
312
  - **减少上下文长度**: 减小 `n_ctx` 的值(如 `1024`)。
313
 
314
  ### 4. 依赖包冲突
@@ -320,6 +317,10 @@ conda env remove -n voicedialogue
320
  # ... 重新执行安装步骤 ...
321
  ```
322
 
 
 
 
 
323
  ## 📄 许可证
324
 
325
  本项目采用 MIT 许可证开源。
 
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 的英文语音合成,支持以下角色:
 
82
 
83
  #### 技术特点
84
  - **智能引擎选择** - 系统根据内容语言自动选择最适合的TTS引擎
85
+ - **动态说话人管理** - 支持运行时动态加载和切换说话人
86
  - **高质量合成** - 采用先进的神经网络技术,生成自然流畅的语音
 
87
  - **可扩展架构** - 模块化设计,方便添加更多语音角色和TTS引擎
88
 
89
  ### ⚙️ 服务模式
 
150
  直接在终端进行实时语音对话。
151
 
152
  ```bash
153
+ # 启动语音对话系统 (默认使用中文,沈逸角色)
154
  python src/VoiceDialogue/main.py
155
 
156
  # 指定语言和角色
157
+ python src/VoiceDialogue/main.py --language en --speaker Heart
158
+
159
+ # 查看所有可用角色
160
+ python src/VoiceDialogue/main.py --help
161
  ```
162
 
163
  **首次运行说明**:
 
173
  # 启动 API 服务器
174
  python src/VoiceDialogue/main.py --mode api
175
 
176
+ # 指定不同端口和启用热重载
177
+ python src/VoiceDialogue/main.py --mode api --port 9000 --reload
178
  ```
179
+
180
+ **API 服务特性**:
181
  - API 文档地址: `http://localhost:8000/docs`
182
+ - 支持 TTS 模型管理(查看、加载、删除)
183
+ - 实时模型状态监控
184
+ - RESTful API 设计
185
 
186
  ## ⚙️ 配置选项
187
 
 
193
  |---|---|---|---|---|
194
  | `--mode` | `-m` | `cli`, `api` | `cli` | 设置运行模式 |
195
  | `--language`| `-l` | `zh`, `en` | `zh` | (CLI模式) 设置用户语言 |
196
+ | `--speaker` | `-s` | (动态获取) | `沈逸` | (CLI模式) 设置TTS语音角色 |
197
  | `--host` | | IP地址 | `0.0.0.0` | (API模式) 服务器主机 |
198
  | `--port` | `-p` | 端口号 | `8000` | (API模式) 服务器端口 |
199
  | `--reload`| | 无 | `False` | (API模式) 启用热重载 |
200
 
201
+ **支持的说话人角色**(动态加载):
202
  - 中文角色:`罗翔`, `马保国`, `沈逸`, `杨幂`, `周杰伦`, `马云`
203
  - 英文角色:`Heart`, `Bella`, `Nicole`
204
 
 
207
  #### 大语言模型 (LLM)
208
 
209
  - **模型路径和参数**: LLM 的模型和推理参数目前在代码中硬编码,方便快速启动。
210
+ - **文件���置**: `src/VoiceDialogue/services/text/generator.py`
211
+ - **自定义**: 你可以修改 `LLMResponseGenerator` 类中的配置。
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
212
 
213
  #### 语音识别 (ASR)
214
 
215
+ - **引擎自动选择**: 系统会根据 `--language` 参数自动选择最合适的 ASR 引擎。
216
+ - **模型配置**: ASR 模型的具体配置位于 `src/VoiceDialogue/services/speech/recognizers/manager.py`。
217
 
218
  #### 系统提示词 (System Prompt)
219
 
220
  - **功能**: 定义 AI 角色的行为和说话风格。
221
+ - **文件位置**: `src/VoiceDialogue/services/text/generator.py`
222
+ - **自定义**: 你可以修改系统提示词变量的值。
223
 
224
  ## 📁 项目结构
225
 
 
227
  VoiceDialogue/
228
  ├── src/
229
  │ └── VoiceDialogue/
230
+ │ ├── main.py # 主程序入口
231
  │ ├── api/ # Web API 模块 (FastAPI)
232
  │ │ ├── app.py # FastAPI 应用实例
233
  │ │ ├── server.py # uvicorn 服务器
234
+ │ │ ├── core/ # 核心配置
235
+ │ │ ├── routes/ # API 路由
236
+ │ │ ├── schemas/ # 数据模型
237
+ │ │ └── middleware/ # 中间件
238
  │ ├── config/ # 配置管理
239
+ │ │ └── paths.py # 路径配置
240
+ ├── core/ # 核心模块
241
+ │ │ └── constants.py # 全局常量和队列
242
  │ ├── models/ # 数据模型和任务
243
  │ │ ├── language_model.py # 语言模型定义
244
  │ │ └── voice_task.py # 语音任务定义
245
  │ ├── services/ # 服务模块
246
  │ │ ├── audio/ # 音频处理服务
247
+ │ │ │ ├── capture.py # 回声消除音频捕获
248
+ │ │ │ ├── player.py # 音频播放
249
+ │ │ │ ├── generator.py # TTS 音频生成器
250
+ │ │ │ └── generators/ # TTS 引擎管理
251
  │ │ ├── speech/ # 语音识别服务
252
+ │ │ │ ├── monitor.py # 语音状态监控
253
+ │ │ │ ├── recognizer.py # ASR 识别服务
254
+ │ │ │ └── recognizers/ # ASR 引擎管理
255
  │ │ └── text/ # 文本生成服务
256
+ │ │ └── generator.py # LLM 文本生成
257
+ │ └── utils/ # 工具函数
258
+ ├── third_party/ # 第三方库
259
+ └── moyoyo_tts/ # GPT-SoVITs TTS 引擎
260
+ ├── tests/ # 测试文件
261
+ ├── docs/ # 文档目录 (空)
262
+ ├── assets/ # 资源文件
263
  ├── requirements.txt # Python 依赖
264
  └── README.md # 项目说明文档
265
  ```
 
303
 
304
  ### 3. 内存不足错误 (OOM)
305
  - **问题**: `CUDA out of memory` 或 RAM 不足。
306
+ - **解决方案**: LLM 是主要的内存消耗者。你可以通过修改 `src/VoiceDialogue/services/text/generator.py` 来降低资源消耗:
307
+ - **更换模型**: 将模型路径指向一个更小的模型(如 7B Q4 量化模型)。
308
+ - **减少批处理大小**: 减小模型参数中的 `n_batch` 值(如 `256`)。
309
  - **减少上下文长度**: 减小 `n_ctx` 的值(如 `1024`)。
310
 
311
  ### 4. 依赖包冲突
 
317
  # ... 重新执行安装步骤 ...
318
  ```
319
 
320
+ ### 5. 说话人角色不存在
321
+ - **问题**: 指定的说话人不在支持列表中。
322
+ - **解决方案**: 使用 `python src/VoiceDialogue/main.py --help` 查看所有可用的说话人角色。
323
+
324
  ## 📄 许可证
325
 
326
  本项目采用 MIT 许可证开源。