# fullTTS **Repository Path**: peter_dayu/full-tts ## Basic Information - **Project Name**: fullTTS - **Description**: 基于openai-edge开发的小说音频文件生成 - **Primary Language**: Python - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-08-08 - **Last Updated**: 2025-08-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🎤 TTS转换器 - 智能文本转语音系统 [![Python Version](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/) [![Flask Version](https://img.shields.io/badge/flask-3.0+-green.svg)](https://flask.palletsprojects.com/) [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) [![Docker](https://img.shields.io/badge/docker-supported-brightgreen.svg)](https://www.docker.com/) 一个功能强大的文本转语音(TTS)Web应用程序,支持多种文档格式,智能章节分割,并提供OpenAI兼容的API接口。基于Microsoft Edge TTS构建,支持多语言和多音色。 ## ✨ 功能特点 ### 📄 多格式文档支持 - **PDF文档**: 自动提取PDF中的文本内容 - **Word文档**: 支持DOCX格式文档 - **纯文本**: 支持TXT格式文件 - **智能编码**: 自动检测文本编码格式 ### 🔪 智能章节分割 - **自动识别**: 智能识别章节标题和分段 - **多种模式**: 支持中英文章节模式 - **长度控制**: 自动分割过长的文本段落 - **预览功能**: 转换前可预览章节内容 ### 🎵 高质量语音合成 - **多种音色**: 支持中文、英文、日文、韩文等多种语音 - **自然语调**: 基于Microsoft Edge TTS,语音自然流畅 - **批量转换**: 支持多章节并行转换 - **进度跟踪**: 实时显示转换进度 ### 🌐 现代化Web界面 - **响应式设计**: 适配桌面和移动设备 - **拖拽上传**: 支持文件拖拽上传 - **实时预览**: 音频在线播放和预览 - **批量下载**: 一键下载所有音频文件 ### 🔌 OpenAI兼容API - **标准接口**: 兼容OpenAI TTS API格式 - **RESTful API**: 标准的REST API接口 - **API密钥认证**: 可选的API密钥保护 - **多种格式**: 支持多种音频输出格式 ## 🚀 快速开始 ### 方式1: Docker部署(推荐) ```bash # 克隆项目 git clone https://github.com/your-username/tts-converter.git cd tts-converter # 配置环境变量 cp .env.example .env # 编辑 .env 文件配置你的设置 # 启动服务 chmod +x deploy.sh ./deploy.sh start # 访问应用 # Web界面: http://localhost:5050 # API文档: http://localhost:5050/health ``` ### 方式2: Python直接运行 ```bash # 创建虚拟环境 python -m venv venv # 激活虚拟环境 # Windows venv\Scripts\activate # macOS/Linux source venv/bin/activate # 安装依赖 pip install -r requirements.txt # 配置环境变量 cp .env.example .env # 编辑 .env 文件 # 启动应用 python app.py ``` ## 🔧 配置说明 ### 环境变量配置 创建 `.env` 文件并配置以下参数: ```env # 服务器配置 HOST=0.0.0.0 PORT=5050 DEBUG=False SECRET_KEY=your-secret-key-change-this # API配置 API_KEY=your_api_key_here REQUIRE_API_KEY=True DEFAULT_VOICE=zh-CN-XiaoxiaoNeural DEFAULT_RESPONSE_FORMAT=mp3 DEFAULT_SPEED=1.0 DEFAULT_LANGUAGE=zh-CN # 文件配置 MAX_CONTENT_LENGTH=52428800 # 50MB UPLOAD_FOLDER=static/uploads AUDIO_FOLDER=static/audio AUTO_CLEANUP_HOURS=24 ``` ### 支持的语音列表 | 语音ID | 语言 | 性别 | 描述 | |--------|------|------|------| | `zh-CN-XiaoxiaoNeural` | 中文 | 女 | 晓晓 | | `zh-CN-YunxiNeural` | 中文 | 男 | 云希 | | `zh-CN-YunjianNeural` | 中文 | 男 | 云健 | | `en-US-AriaNeural` | 英文 | 女 | Aria | | `en-US-DavisNeural` | 英文 | 男 | Davis | | `ja-JP-NanamiNeural` | 日文 | 女 | Nanami | | `ko-KR-SunHiNeural` | 韩文 | 女 | SunHi | ## 📖 使用指南 ### Web界面使用 1. **上传文件** - 访问 `http://localhost:5050` - 拖拽或点击上传PDF/DOCX/TXT文件 - 选择语音类型 - 点击"开始转换" 2. **章节预览** - 系统自动分析文档结构 - 预览检测到的章节 - 选择要转换的章节 - 确认后开始转换 3. **下载音频** - 转换完成后查看结果页面 - 在线试听音频文件 - 单个下载或批量下载 - 分享转换结果 ### API接口使用 #### 语音合成API ```bash curl -X POST "http://localhost:5050/v1/audio/speech" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "model": "tts-1", "input": "你好,这是一个测试。", "voice": "zh-CN-XiaoxiaoNeural", "response_format": "mp3", "speed": 1.0 }' ``` #### 获取可用模型 ```bash curl -X GET "http://localhost:5050/v1/models" \ -H "Authorization: Bearer YOUR_API_KEY" ``` #### 获取可用语音 ```bash curl -X GET "http://localhost:5050/v1/voices" \ -H "Authorization: Bearer YOUR_API_KEY" ``` #### 健康检查 ```bash curl -X GET "http://localhost:5050/health" ``` ### Python SDK示例 ```python import requests # 配置 API_BASE = "http://localhost:5050" API_KEY = "your_api_key_here" headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } # 语音合成 response = requests.post( f"{API_BASE}/v1/audio/speech", headers=headers, json={ "model": "tts-1", "input": "Hello, this is a test message.", "voice": "en-US-AriaNeural", "response_format": "mp3" } ) if response.status_code == 200: with open("speech.mp3", "wb") as f: f.write(response.content) print("音频文件已保存为 speech.mp3") ``` ## 🐳 Docker部署详解 ### 基础部署 ```bash # 构建和启动 ./deploy.sh build ./deploy.sh start # 查看服务状态 ./deploy.sh status # 查看日志 ./deploy.sh logs ``` ### 使用Nginx反向代理 ```bash # 启动包含Nginx的完整服务 ./deploy.sh start nginx # 访问地址 # http://localhost (通过Nginx) # http://localhost:5050 (直接访问应用) ``` ### 使用Redis缓存 ```bash # 启动包含Redis的服务 ./deploy.sh start redis # 启动所有服务 ./deploy.sh start all ``` ### 数据备份 ```bash # 备份数据 ./deploy.sh backup # 备份会保存在 backup/ 目录下 ``` ## 🔍 故障排除 ### 常见问题 1. **文件上传失败** - 检查文件大小是否超过50MB限制 - 确认文件格式是否支持(PDF/DOCX/TXT) - 查看服务器日志获取详细错误信息 2. **语音转换失败** - 确认网络连接正常(需要访问Microsoft TTS服务) - 检查选择的语音是否支持 - 查看错误日志定位具体问题 3. **API调用失败** - 检查API密钥是否正确 - 确认请求格式符合OpenAI规范 - 验证请求参数是否有效 4. **Docker部署问题** - 确认Docker和Docker Compose已安装 - 检查端口5050是否被占用 - 查看容器日志:`docker-compose logs -f` ### 日志查看 ```bash # Docker部署日志 docker-compose logs -f tts-app # Python直接运行日志 tail -f logs/tts_server.log # Nginx日志(如果使用) docker-compose logs -f nginx ``` ### 性能优化 1. **增加并发处理** ```bash # 修改 docker-compose.yml 中的 gunicorn 配置 CMD ["gunicorn", "--workers", "8", "--bind", "0.0.0.0:5050", "app:app"] ``` 2. **启用Redis缓存** ```bash ./deploy.sh start redis ``` 3. **使用Nginx负载均衡** - 修改 `nginx.conf` 配置文件 - 添加多个upstream服务器 ## 🤝 贡献指南 欢迎提交Issues和Pull Requests! ### 开发环境设置 ```bash # 克隆仓库 git clone https://github.com/your-username/tts-converter.git cd tts-converter # 创建开发环境 python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate pip install -r requirements.txt # 安装开发依赖 pip install -r requirements-dev.txt # 运行测试 python -m pytest # 代码格式化 black . flake8 . ``` ### 提交规范 - 使用清晰的commit message - 为新功能添加测试 - 更新相关文档 - 遵循PEP 8代码规范 ## 📄 许可证 本项目基于 Apache License2.0 许可证开源 - 查看 [LICENSE](LICENSE) 文件了解详情。 ## 🙏 致谢 - [Microsoft Edge TTS](https://github.com/rany2/edge-tts) - 核心TTS引擎 - [Flask](https://flask.palletsprojects.com/) - Web框架 - [Bootstrap](https://getbootstrap.com/) - UI框架 - [Font Awesome](https://fontawesome.com/) - 图标库 ## 📞 支持 - 📧 邮件支持: your-email@example.com - 💬 GitHub Issues: [项目Issues页面](https://github.com/your-username/tts-converter/issues) - 📖 文档: [在线文档](https://your-username.github.io/tts-converter) ## 🎯 路线图 - [ ] 支持更多音频格式输出 - [ ] 添加音频后处理功能 - [ ] 支持SSML标记语言 - [ ] 添加语音情感控制 - [ ] 支持音频拼接和编辑 - [ ] 添加API使用统计 - [ ] 支持批量文件处理 - [ ] 添加音频质量控制 --- ⭐ 如果这个项目对你有帮助,请给它一个星标!