178 lines
5.0 KiB
Markdown
178 lines
5.0 KiB
Markdown
# TTS 模块实现总结
|
||
|
||
## 概述
|
||
|
||
已成功在 `tts` 目录下实现了一个完整的 TTS(文本转语音)引擎抽象层,提供统一的接口,支持多引擎扩展,目前已实现 Edge-TTS 引擎支持。
|
||
|
||
## 实现的文件结构
|
||
|
||
```
|
||
tts/
|
||
├── __init__.py # 模块入口,导出主要类
|
||
├── base.py # TTSEngine 基类(抽象接口)
|
||
├── edge_tts_engine.py # Edge-TTS 引擎具体实现
|
||
├── factory.py # TTSEngineFactory 工厂类
|
||
├── service.py # TTSService 高级服务接口
|
||
├── examples.py # 使用示例
|
||
└── README.md # 详细文档
|
||
```
|
||
|
||
## 核心设计
|
||
|
||
### 1. 抽象基类 (base.py)
|
||
- `TTSEngine`: 所有 TTS 引擎必须实现的接口
|
||
- 定义了 4 个核心方法:
|
||
- `synthesize()`: 文本合成语音
|
||
- `get_supported_voices()`: 获取支持的声音列表
|
||
- `get_engine_name()`: 获取引擎名称
|
||
- `get_engine_version()`: 获取引擎版本
|
||
|
||
### 2. Edge-TTS 引擎 (edge_tts_engine.py)
|
||
- 继承自 `TTSEngine`
|
||
- 完整实现 Edge-TTS API 调用
|
||
- 支持:
|
||
- 多语言合成(中英日韩法德西班牙语俄语等)
|
||
- 语速和音调调整
|
||
- 声音列表获取
|
||
- 预定义语言默认声音映射
|
||
|
||
### 3. 引擎工厂 (factory.py)
|
||
- `TTSEngineFactory`: 统一管理引擎创建和生命周期
|
||
- 特点:
|
||
- 单例模式:同一引擎类型只创建一个实例
|
||
- 易于扩展:提供 `register_engine()` 方法注册新引擎
|
||
- 支持多引擎类型枚举管理
|
||
|
||
### 4. 高级服务 (service.py)
|
||
- `TTSService`: 简化的服务接口
|
||
- 自动使用配置文件中的设置
|
||
- 提供 4 个核心方法:
|
||
- `synthesize()`: 合成语音(推荐使用)
|
||
- `get_supported_voices()`: 获取声音列表
|
||
- `get_engine_info()`: 获取引擎信息
|
||
- `reset_engine()`: 重置引擎(切换引擎时使用)
|
||
|
||
## 配置支持
|
||
|
||
### 在 settings.py 中添加的配置项
|
||
```python
|
||
TTS_ENGINE: str = "edge-tts" # 使用的 TTS 引擎
|
||
TTS_LANGUAGE: str = "zh-CN" # 默认语言
|
||
TTS_VOICE: str = "" # 默认声音
|
||
TTS_RATE: float = 1.0 # 语速
|
||
TTS_PITCH: float = 1.0 # 音调
|
||
```
|
||
|
||
### .env 文件配置示例
|
||
```env
|
||
TTS_ENGINE=edge-tts
|
||
TTS_LANGUAGE=zh-CN
|
||
TTS_VOICE=
|
||
TTS_RATE=1.0
|
||
TTS_PITCH=1.0
|
||
```
|
||
|
||
## 使用方式
|
||
|
||
### 方式一:推荐使用 TTSService(最简单)
|
||
```python
|
||
from tts.service import TTSService
|
||
|
||
# 使用配置文件中的默认设置
|
||
audio = await TTSService.synthesize("你好,世界!")
|
||
|
||
# 自定义参数(覆盖配置)
|
||
audio = await TTSService.synthesize("Hello", language="en-US")
|
||
```
|
||
|
||
### 方式二:使用工厂模式
|
||
```python
|
||
from tts.factory import TTSEngineFactory
|
||
|
||
engine = TTSEngineFactory.create("edge-tts")
|
||
audio = await engine.synthesize("你好,世界!")
|
||
```
|
||
|
||
### 方式三:直接使用引擎
|
||
```python
|
||
from tts.edge_tts_engine import EdgeTTSEngine
|
||
|
||
engine = EdgeTTSEngine()
|
||
audio = await engine.synthesize("你好,世界!")
|
||
```
|
||
|
||
## API 路由
|
||
|
||
### 新增的 REST API 端点 (api/v1/tts_routes.py)
|
||
- `POST /api/v1/tts/synthesize` - 合成语音
|
||
- `GET /api/v1/tts/voices` - 获取声音列表
|
||
- `GET /api/v1/tts/engines` - 获取支持的引擎列表
|
||
- `GET /api/v1/tts/engine-info` - 获取当前引擎信息
|
||
|
||
## 扩展其他 TTS 引擎
|
||
|
||
### 步骤:
|
||
1. 创建新引擎类,继承 `TTSEngine`
|
||
2. 实现所有抽象方法
|
||
3. 在 `factory.py` 中注册新引擎
|
||
4. 更新 `settings.py` 中的配置选项
|
||
5. 在 `.env` 中配置使用的引擎
|
||
|
||
### 预留的引擎位置(在 factory.py 中):
|
||
```python
|
||
# GOOGLE_TTS = "google-tts"
|
||
# BAIDU_TTS = "baidu-tts"
|
||
# AZURE_TTS = "azure-tts"
|
||
```
|
||
|
||
## 依赖管理
|
||
|
||
### 添加到 requirements.txt
|
||
- `edge-tts`: Edge-TTS 官方库
|
||
|
||
## 特点
|
||
|
||
✅ **模块化设计**: 清晰的分层架构,易于维护和扩展
|
||
✅ **异步优先**: 所有 IO 操作都是异步的,支持高并发
|
||
✅ **配置驱动**: 支持在配置文件中灵活选择引擎和参数
|
||
✅ **易于扩展**: 工厂模式和抽象基类简化新引擎接入
|
||
✅ **单例缓存**: 自动缓存引擎实例,性能优化
|
||
✅ **完整文档**: 详细的 README 和使用示例
|
||
✅ **错误处理**: 完整的日志和异常处理
|
||
|
||
## 下一步建议
|
||
|
||
1. 集成到主应用:
|
||
- 在 `api/v1/routers.py` 中导入 TTS 路由
|
||
- 在启动时初始化 TTS 服务
|
||
|
||
2. 添加其他 TTS 引擎:
|
||
- Google Cloud TTS
|
||
- Baidu TTS
|
||
- Azure TTS
|
||
- 本地 TTS 引擎
|
||
|
||
3. 增强功能:
|
||
- 缓存合成结果
|
||
- 流式语音输出
|
||
- 批量合成
|
||
- 音频格式转换
|
||
|
||
4. 监控和日志:
|
||
- 记录合成统计信息
|
||
- 性能监控
|
||
- 错误追踪
|
||
|
||
## 文件清单
|
||
|
||
- ✅ `tts/__init__.py` - 模块入口
|
||
- ✅ `tts/base.py` - 抽象基类
|
||
- ✅ `tts/edge_tts_engine.py` - Edge-TTS 实现
|
||
- ✅ `tts/factory.py` - 工厂类
|
||
- ✅ `tts/service.py` - 高级服务
|
||
- ✅ `tts/examples.py` - 使用示例
|
||
- ✅ `tts/README.md` - 详细文档
|
||
- ✅ `api/v1/tts_routes.py` - API 路由
|
||
- ✅ `config/settings.py` - 配置更新
|
||
- ✅ `requirements.txt` - 依赖更新
|