# TTS 模块集成检查清单 使用此清单来完整集成 TTS 模块到你的应用中。 ## ✅ 基础集成步骤 ### 1. 依赖安装 - [x] `edge-tts` 已添加到 `requirements.txt` - [ ] 运行 `pip install -r requirements.txt` 安装新依赖 ```bash pip install edge-tts ``` ### 2. 配置设置 - [x] 配置项已添加到 `config/settings.py` - [ ] 在 `.env` 文件中添加 TTS 相关配置 ```env # 添加到 .env 文件 TTS_ENGINE=edge-tts TTS_LANGUAGE=zh-CN TTS_VOICE= TTS_RATE=1.0 TTS_PITCH=1.0 ``` ### 3. 核心模块 - [x] `tts/base.py` - 抽象基类 - [x] `tts/edge_tts_engine.py` - Edge-TTS 实现 - [x] `tts/factory.py` - 工厂类 - [x] `tts/service.py` - 高级服务 - [x] `tts/__init__.py` - 模块入口 ## 🔌 集成到应用 ### 4. API 路由集成 **选项 A:添加到现有的 API 路由中(推荐)** 编辑 `api/v1/routers.py`: ```python from fastapi import APIRouter from api.v1.tts_routes import router as tts_router router = APIRouter() # 包含 TTS 路由 router.include_router(tts_router) # 你的其他路由... ``` **选项 B:在 main.py 中直接注册** 编辑 `main.py`: ```python from api.v1.tts_routes import router as tts_router # 在应用启动时 app.include_router(tts_router) ``` **验证:** - [ ] API 路由已集成 - [ ] 可以访问 `/api/v1/tts/engines` 获取支持的引擎列表 ### 5. 在定时任务中使用(可选) 编辑 `scheduler/jobs.py`,如果需要定时生成播客: ```python from tts.service import TTSService async def job_generate_podcast(): """定时生成播客任务""" try: # 获取需要转换的文本(从数据库、API 等) text = "需要转换的文本内容..." # 合成语音 audio = await TTSService.synthesize(text) # 保存或处理音频 # ... logger.info("Podcast generated successfully") except Exception as e: logger.error(f"Failed to generate podcast: {e}") ``` 如果添加了新的任务,需要在 `main.py` 中注册: ```python scheduler.add_job( jobs.job_generate_podcast, trigger="cron", hour="2", # 每天凌晨 2 点 id="podcast-job", replace_existing=True, ) ``` **验证:** - [ ] 定时任务已注册(如需要) - [ ] 任务可以正确执行 ### 6. 在其他服务中使用(可选) 编辑 `services/` 下的相关服务文件: ```python from tts.service import TTSService class MyService: async def generate_audio(self, text: str) -> BytesIO: """使用 TTS 生成音频""" return await TTSService.synthesize(text) ``` **验证:** - [ ] 服务已集成 TTS 功能 - [ ] 可以正常调用 ## 🧪 测试验证 ### 7. 单元测试 创建 `tests/test_tts.py`(可选): ```python import pytest from tts.service import TTSService @pytest.mark.asyncio async def test_tts_synthesize(): """测试 TTS 合成""" audio = await TTSService.synthesize("测试") assert audio.getbuffer().nbytes > 0 @pytest.mark.asyncio async def test_tts_voices(): """测试获取声音列表""" voices = await TTSService.get_supported_voices() assert len(voices) > 0 ``` 运行测试: ```bash pytest tests/test_tts.py -v ``` **验证:** - [ ] 测试已创建 - [ ] 所有测试通过 ### 8. 手动测试 **测试 1:API 端点** ```bash # 测试获取支持的引擎 curl http://localhost:8000/api/v1/tts/engines # 测试获取声音列表 curl http://localhost:8000/api/v1/tts/voices # 测试获取引擎信息 curl http://localhost:8000/api/v1/tts/engine-info # 测试合成语音 curl -X POST http://localhost:8000/api/v1/tts/synthesize \ -H "Content-Type: application/json" \ -d '{"text":"你好,世界!"}' ``` **测试 2:Python 代码** ```python import asyncio from tts.service import TTSService async def test(): # 测试合成 audio = await TTSService.synthesize("测试语音合成") print(f"合成成功,音频大小: {audio.getbuffer().nbytes} bytes") # 测试获取声音列表 voices = await TTSService.get_supported_voices() print(f"找到 {len(voices)} 个声音") # 测试引擎信息 info = TTSService.get_engine_info() print(f"引擎信息: {info}") asyncio.run(test()) ``` **验证:** - [ ] API 端点响应正常 - [ ] 可以成功合成语音 - [ ] 可以获取声音列表 - [ ] 引擎信息输出正确 ## 📋 可选增强功能 ### 9. 添加缓存(可选) 为避免重复合成相同文本: ```python # 在 tts/service.py 中添加缓存 from functools import lru_cache class TTSService: @lru_cache(maxsize=128) async def synthesize(self, text: str, ...): # 缓存合成结果 ... ``` ### 10. 添加声音选择界面(可选) 在 API 中添加选择声音的端点: ```python @app.get("/api/v1/tts/voices/{language}") async def get_voices_by_language(language: str): voices = await TTSService.get_supported_voices(language) return {"language": language, "voices": voices} ``` ### 11. 添加音频输出功能(可选) ```python from fastapi.responses import StreamingResponse @app.post("/api/v1/tts/stream") async def stream_audio(request: TTSSynthesizeRequest): """流式输出音频""" audio = await TTSService.synthesize(request.text) return StreamingResponse( iter([audio.getvalue()]), media_type="audio/mpeg" ) ``` ## 📚 文档和示例 - [ ] 阅读 `tts/README.md` - 完整文档 - [ ] 查看 `tts/examples.py` - 使用示例 - [ ] 参考 `TTS_QUICK_START.md` - 快速开始 - [ ] 查看 `TTS_IMPLEMENTATION_SUMMARY.md` - 实现总结 ## 🚀 部署前检查 - [ ] 所有依赖已安装 - [ ] 配置文件已更新 - [ ] API 路由已集成(如需要) - [ ] 定时任务已注册(如需要) - [ ] 所有测试通过 - [ ] 日志记录正常 - [ ] 异常处理完整 - [ ] 文档已更新 ## 🔄 后续维护 ### 扩展新引擎 如需添加新的 TTS 引擎(如 Google TTS、Baidu TTS 等): 1. 在 `tts/` 下创建新文件 `tts/google_tts_engine.py` 2. 实现 `TTSEngine` 接口 3. 在 `tts/factory.py` 中注册 4. 更新 `config/settings.py` 5. 更新此清单 ### 监控和日志 确保系统中有以下监控: - [ ] TTS 调用次数和时间 - [ ] 失败率和错误日志 - [ ] 音频文件大小统计 - [ ] 不同语言的使用频率 ## 📞 支持和问题排查 **问题:edge-tts 需要网络连接** - 解决方案:确保网络连接正常,或使用离线 TTS 引擎 **问题:某些语言声音不可用** - 解决方案:检查支持的声音列表,确保使用了正确的语言代码 **问题:合成速度慢** - 解决方案:设置较高的 `TTS_RATE` 值或使用缓存 --- **完成日期:** _____________ **负责人:** _____________ **备注:** _____________