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