add edge tts
This commit is contained in:
273
docs/TTS_QUICK_START.md
Normal file
273
docs/TTS_QUICK_START.md
Normal file
@ -0,0 +1,273 @@
|
||||
# TTS 模块 - 快速开始指南
|
||||
|
||||
## 📋 前置条件
|
||||
|
||||
- Python 3.8+
|
||||
- pip 包管理器
|
||||
|
||||
## 🚀 快速开始(5 分钟)
|
||||
|
||||
### 1. 安装依赖
|
||||
|
||||
```bash
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
这会自动安装 `edge-tts` 库。
|
||||
|
||||
### 2. 配置 TTS 引擎
|
||||
|
||||
编辑 `.env` 文件,添加或更新以下配置:
|
||||
|
||||
```env
|
||||
# TTS 配置(可选,有默认值)
|
||||
TTS_ENGINE=edge-tts
|
||||
TTS_LANGUAGE=zh-CN
|
||||
TTS_VOICE=
|
||||
TTS_RATE=1.0
|
||||
TTS_PITCH=1.0
|
||||
```
|
||||
|
||||
### 3. 最小化代码示例
|
||||
|
||||
#### 选项 A:在 FastAPI 路由中使用
|
||||
|
||||
```python
|
||||
# 在你的 FastAPI 应用中导入 TTS 路由
|
||||
from api.v1.tts_routes import router as tts_router
|
||||
|
||||
app.include_router(tts_router)
|
||||
|
||||
# 然后调用 API
|
||||
# POST /api/v1/tts/synthesize
|
||||
# {
|
||||
# "text": "你好,世界!"
|
||||
# }
|
||||
```
|
||||
|
||||
#### 选项 B:在定时任务中使用
|
||||
|
||||
```python
|
||||
from tts.service import TTSService
|
||||
import asyncio
|
||||
|
||||
async def job_podcast():
|
||||
"""生成播客音频"""
|
||||
text = "今天的新闻摘要..."
|
||||
audio = await TTSService.synthesize(text)
|
||||
|
||||
# 保存音频
|
||||
with open("podcast.mp3", "wb") as f:
|
||||
f.write(audio.getvalue())
|
||||
```
|
||||
|
||||
#### 选项 C:在其他异步函数中使用
|
||||
|
||||
```python
|
||||
from tts.service import TTSService
|
||||
|
||||
async def my_function():
|
||||
# 合成语音
|
||||
audio = await TTSService.synthesize(
|
||||
text="你好,这是一个测试。",
|
||||
language="zh-CN",
|
||||
rate=1.0 # 正常速度
|
||||
)
|
||||
|
||||
# 使用音频...
|
||||
```
|
||||
|
||||
## 💡 常见用途
|
||||
|
||||
### 1. 将新闻文本转为语音播客
|
||||
|
||||
```python
|
||||
from tts.service import TTSService
|
||||
|
||||
async def create_podcast(article_text: str):
|
||||
"""将文章转为语音"""
|
||||
audio = await TTSService.synthesize(article_text)
|
||||
return audio
|
||||
```
|
||||
|
||||
### 2. 多语言支持
|
||||
|
||||
```python
|
||||
from tts.service import TTSService
|
||||
|
||||
async def multilingual_tts(text: str, language: str):
|
||||
"""支持多语言的文本合成"""
|
||||
audio = await TTSService.synthesize(
|
||||
text=text,
|
||||
language=language
|
||||
)
|
||||
return audio
|
||||
|
||||
# 使用
|
||||
audio_zh = await multilingual_tts("你好", "zh-CN") # 中文
|
||||
audio_en = await multilingual_tts("Hello", "en-US") # 英文
|
||||
```
|
||||
|
||||
### 3. 调整语速和音调
|
||||
|
||||
```python
|
||||
from tts.service import TTSService
|
||||
|
||||
async def create_fast_speech(text: str):
|
||||
"""创建加速的语音"""
|
||||
audio = await TTSService.synthesize(
|
||||
text=text,
|
||||
rate=1.5, # 50% 快速
|
||||
pitch=1.2 # 音调提高 20%
|
||||
)
|
||||
return audio
|
||||
```
|
||||
|
||||
### 4. 获取支持的声音
|
||||
|
||||
```python
|
||||
from tts.service import TTSService
|
||||
|
||||
async def list_voices():
|
||||
"""列出所有可用的声音"""
|
||||
voices = await TTSService.get_supported_voices(language="zh-CN")
|
||||
|
||||
for voice in voices:
|
||||
print(f"名称: {voice['display_name']}")
|
||||
print(f"ID: {voice['name']}")
|
||||
print(f"性别: {voice['gender']}")
|
||||
print("---")
|
||||
```
|
||||
|
||||
## 🔧 在实际项目中集成
|
||||
|
||||
### 集成到 routers.py
|
||||
|
||||
编辑 `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)
|
||||
|
||||
# 你的其他路由...
|
||||
```
|
||||
|
||||
然后在 `main.py` 中:
|
||||
|
||||
```python
|
||||
from api.v1.routers import router
|
||||
|
||||
app.include_router(router)
|
||||
```
|
||||
|
||||
### 集成到定时任务
|
||||
|
||||
编辑 `scheduler/jobs.py`:
|
||||
|
||||
```python
|
||||
from tts.service import TTSService
|
||||
from utils.logger import logger
|
||||
|
||||
async def job_generate_podcast():
|
||||
"""定时生成播客"""
|
||||
try:
|
||||
# 获取文章内容(从数据库或 API)
|
||||
article_text = "...你的文章内容..."
|
||||
|
||||
# 合成语音
|
||||
audio = await TTSService.synthesize(article_text)
|
||||
|
||||
# 保存到文件或数据库
|
||||
logger.info("Podcast generated successfully")
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Failed to generate podcast: {e}")
|
||||
```
|
||||
|
||||
## 📚 支持的语言
|
||||
|
||||
| 语言 | 代码 | 默认声音 |
|
||||
|------|------|---------|
|
||||
| 中文(简体)| zh-CN | 晓晓 (XiaoxiaoNeural) |
|
||||
| 中文(繁体)| zh-TW | HsiaoChen |
|
||||
| 英文(美国)| en-US | Aria (AriaNeural) |
|
||||
| 英文(英国)| en-GB | Sonia (SoniaNeural) |
|
||||
| 日语 | ja-JP | NanaminNeural |
|
||||
| 韩语 | ko-KR | SunHiNeural |
|
||||
| 法语 | fr-FR | CelesteNeural |
|
||||
| 德语 | de-DE | ConraadNeural |
|
||||
| 西班牙语 | es-ES | AlvaroNeural |
|
||||
| 俄语 | ru-RU | DmitryNeural |
|
||||
|
||||
## ⚙️ 配置参数详解
|
||||
|
||||
| 参数 | 说明 | 范围 | 默认值 |
|
||||
|------|------|------|--------|
|
||||
| TTS_ENGINE | 使用的 TTS 引擎 | edge-tts | edge-tts |
|
||||
| TTS_LANGUAGE | 默认语言 | 任何支持的语言代码 | zh-CN |
|
||||
| TTS_VOICE | 默认声音 | 任何支持的声音 ID | "" (使用默认) |
|
||||
| TTS_RATE | 语速 | 0.5 - 2.0 | 1.0 |
|
||||
| TTS_PITCH | 音调 | 0.5 - 2.0 | 1.0 |
|
||||
|
||||
## 🧪 运行示例
|
||||
|
||||
```bash
|
||||
# 运行 TTS 示例代码
|
||||
python tts/examples.py
|
||||
```
|
||||
|
||||
## 📖 详细文档
|
||||
|
||||
更多详细信息请查看:
|
||||
- `tts/README.md` - 完整的 TTS 模块文档
|
||||
- `TTS_IMPLEMENTATION_SUMMARY.md` - 实现总结
|
||||
|
||||
## ❓ 常见问题
|
||||
|
||||
### Q: 如何切换到其他 TTS 引擎?
|
||||
A: 编辑 `.env` 文件,更改 `TTS_ENGINE` 的值。当前只支持 `edge-tts`。
|
||||
|
||||
### Q: 如何添加新的 TTS 引擎?
|
||||
A:
|
||||
1. 在 `tts/` 目录创建新文件,实现 `TTSEngine` 接口
|
||||
2. 在 `tts/factory.py` 中注册新引擎
|
||||
3. 更新 `config/settings.py` 中的配置选项
|
||||
4. 在 `.env` 中使用新引擎
|
||||
|
||||
### Q: 合成的音频格式是什么?
|
||||
A: MP3 格式,保存在 `BytesIO` 对象中。
|
||||
|
||||
### Q: 支持离线使用吗?
|
||||
A: Edge-TTS 需要网络连接。如需离线支持,可以集成本地引擎如 pyttsx3。
|
||||
|
||||
### Q: 如何提高合成速度?
|
||||
A:
|
||||
1. 设置 `TTS_RATE` > 1.0(例如 1.5)
|
||||
2. 或在调用时传入 `rate` 参数
|
||||
|
||||
## 🐛 调试
|
||||
|
||||
如遇到问题,检查日志:
|
||||
|
||||
```python
|
||||
from utils.logger import logger
|
||||
|
||||
logger.debug("TTS 调试信息")
|
||||
logger.error("TTS 错误信息")
|
||||
```
|
||||
|
||||
## 📞 支持
|
||||
|
||||
如需帮助,请参考:
|
||||
1. `tts/README.md` - 详细文档
|
||||
2. `tts/examples.py` - 使用示例
|
||||
3. 查看 `utils/logger.py` 中的日志记录
|
||||
|
||||
---
|
||||
|
||||
祝使用愉快!🎉
|
||||
Reference in New Issue
Block a user