Files
meme/docs/TTS_IMPLEMENTATION_SUMMARY.md
2025-11-28 20:27:10 +08:00

178 lines
5.0 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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` - 依赖更新