5.0 KiB
5.0 KiB
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 中添加的配置项
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 文件配置示例
TTS_ENGINE=edge-tts
TTS_LANGUAGE=zh-CN
TTS_VOICE=
TTS_RATE=1.0
TTS_PITCH=1.0
使用方式
方式一:推荐使用 TTSService(最简单)
from tts.service import TTSService
# 使用配置文件中的默认设置
audio = await TTSService.synthesize("你好,世界!")
# 自定义参数(覆盖配置)
audio = await TTSService.synthesize("Hello", language="en-US")
方式二:使用工厂模式
from tts.factory import TTSEngineFactory
engine = TTSEngineFactory.create("edge-tts")
audio = await engine.synthesize("你好,世界!")
方式三:直接使用引擎
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 引擎
步骤:
- 创建新引擎类,继承
TTSEngine - 实现所有抽象方法
- 在
factory.py中注册新引擎 - 更新
settings.py中的配置选项 - 在
.env中配置使用的引擎
预留的引擎位置(在 factory.py 中):
# GOOGLE_TTS = "google-tts"
# BAIDU_TTS = "baidu-tts"
# AZURE_TTS = "azure-tts"
依赖管理
添加到 requirements.txt
edge-tts: Edge-TTS 官方库
特点
✅ 模块化设计: 清晰的分层架构,易于维护和扩展 ✅ 异步优先: 所有 IO 操作都是异步的,支持高并发 ✅ 配置驱动: 支持在配置文件中灵活选择引擎和参数 ✅ 易于扩展: 工厂模式和抽象基类简化新引擎接入 ✅ 单例缓存: 自动缓存引擎实例,性能优化 ✅ 完整文档: 详细的 README 和使用示例 ✅ 错误处理: 完整的日志和异常处理
下一步建议
-
集成到主应用:
- 在
api/v1/routers.py中导入 TTS 路由 - 在启动时初始化 TTS 服务
- 在
-
添加其他 TTS 引擎:
- Google Cloud TTS
- Baidu TTS
- Azure TTS
- 本地 TTS 引擎
-
增强功能:
- 缓存合成结果
- 流式语音输出
- 批量合成
- 音频格式转换
-
监控和日志:
- 记录合成统计信息
- 性能监控
- 错误追踪
文件清单
- ✅
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- 依赖更新