# 语音生成API文档 ## 概述 语音生成API提供企业级文本到语音转换服务,支持多种语音类型、语速、音调、音量等参数控制,可生成MP3、WAV、OGG等多种格式的音频文件。 ## API端点 ### 1. 生成语音 **POST** `/api/v1/voice/generate` **请求体:** ```json { "text": "欢迎使用企业级语音生成服务", "voice_type": "female", "speed": "normal", "pitch": 1.0, "volume": 1.0, "output_format": "mp3", "language": "zh-CN", "user_id": "user_12345" } ``` **参数说明:** | 参数 | 类型 | 必填 | 默认值 | 说明 | |------|------|------|--------|------| | text | string | 是 | - | 要转换的文本内容,最长5000字符 | | voice_type | string | 否 | female | 语音类型:female(甜美女生)、male(阳光男生)、child(卡通童声)、professional(专业播音) | | speed | string | 否 | normal | 语速:slow(慢速)、normal(正常)、fast(快速) | | pitch | float | 否 | 1.0 | 音调,范围0.5-2.0 | | volume | float | 否 | 1.0 | 音量,范围0.0-2.0 | | output_format | string | 否 | mp3 | 输出格式:mp3、wav、ogg | | language | string | 否 | zh-CN | 语言代码:zh-CN、en-US、ja-JP | | user_id | string | 否 | null | 用户ID,用于统计和配额管理 | **响应:** ```json { "success": true, "voice_url": "/api/voice/files/voice_abc123.mp3", "voice_id": "voice_abc123", "duration": 12.5, "file_size": 256000, "format": "mp3", "text_length": 45, "timestamp": "2024-01-01T12:00:00" } ``` ### 2. 获取语音文件 **GET** `/api/v1/voice/files/{voice_id}.{format}` **参数:** | 参数 | 类型 | 必填 | 说明 | |------|------|------|------| | voice_id | string | 是 | 语音文件ID | | format | string | 是 | 文件格式:mp3、wav、ogg | **响应:** 返回音频文件流,Content-Type为对应的音频类型。 ### 3. 获取支持的语音类型 **GET** `/api/v1/voice/supported-voices` **响应:** ```json { "success": true, "voices": { "female": {"name": "甜美女生", "description": "清晰甜美的女声"}, "male": {"name": "阳光男生", "description": "阳光活力的男声"}, "child": {"name": "卡通童声", "description": "可爱活泼的童声"}, "professional": {"name": "专业播音", "description": "专业播音员声音"} }, "formats": ["mp3", "wav", "ogg"], "languages": ["zh-CN", "en-US", "ja-JP"], "timestamp": "2024-01-01T12:00:00" } ``` ### 4. 列出语音文件 **GET** `/api/v1/voice/list?page=1&page_size=20` **查询参数:** | 参数 | 类型 | 必填 | 默认值 | 说明 | |------|------|------|--------|------| | page | int | 否 | 1 | 页码 | | page_size | int | 否 | 20 | 每页数量 | **响应:** ```json { "success": true, "voices": [ { "voice_id": "voice_abc123", "filename": "voice_abc123.mp3", "size": 256000, "created_at": "2024-01-01T12:00:00", "format": "mp3" } ], "total": 5, "page": 1, "page_size": 20, "timestamp": "2024-01-01T12:00:00" } ``` ### 5. 删除语音文件 **POST** `/api/v1/voice/delete` **请求体:** ```json { "voice_id": "voice_abc123", "confirm": true } ``` **响应:** ```json { "success": true, "message": "语音文件已成功删除", "timestamp": "2024-01-01T12:00:00" } ``` ### 6. 健康检查 **GET** `/api/v1/voice/health` **响应:** ```json { "status": "healthy", "service": "voice_generation", "output_dir": "./voice_outputs", "files_count": 10, "timestamp": "2024-01-01T12:00:00" } ``` ## 错误处理 所有API端点都遵循统一的错误响应格式: ```json { "detail": "错误描述信息" } ``` **HTTP状态码:** - 200: 请求成功 - 400: 参数错误 - 404: 资源不存在 - 500: 服务器内部错误 ## 企业级功能 ### 1. 多语言支持 支持中文、英文、日文等多种语言,可根据需要扩展。 ### 2. 参数验证 对所有输入参数进行严格验证,确保数据安全性和服务稳定性。 ### 3. 错误处理与降级 完善的错误处理机制,在主要TTS服务不可用时支持降级到备用服务。 ### 4. 性能监控 内置性能监控和日志记录,支持实时监控服务状态。 ### 5. 缓存机制 支持语音文件缓存,减少重复生成,提高响应速度。 ## 部署配置 ### 环境变量 ``` # 语音引擎配置 VOICE_ENGINE=gtts # gtts, pyttsx3, edge-tts, simulated VOICE_API_KEY=your_api_key VOICE_REGION=us-west-1 # 存储配置 STORAGE_TYPE=local # local, s3, azure_blob, gcs STORAGE_BUCKET=voice-bucket STORAGE_REGION=us-west-1 # API配置 API_RATE_LIMIT=60 API_AUTH_REQUIRED=false ``` ### 依赖安装 ```bash # 基本依赖 pip install fastapi uvicorn python-multipart # 语音生成依赖(根据选择的引擎) pip install gTTS # Google Text-to-Speech # 或 pip install pyttsx3 # 离线TTS # 或 pip install edge-tts # Microsoft Edge TTS ``` ## 使用示例 ### Python客户端 ```python import requests BASE_URL = "http://localhost:8000/api/v1" def generate_voice(text, voice_type="female"): response = requests.post(f"{BASE_URL}/voice/generate", json={ "text": text, "voice_type": voice_type, "output_format": "mp3", "language": "zh-CN" }) if response.status_code == 200: data = response.json() if data["success"]: print(f"语音生成成功: {data['voice_url']}") return data else: print(f"语音生成失败: {response.text}") return None ``` ### JavaScript/TypeScript客户端 ```typescript const API_BASE_URL = 'http://localhost:8000/api/v1'; async function generateVoice(text: string): Promise { const response = await fetch(`${API_BASE_URL}/voice/generate`, { method: 'POST', headers: { 'Content-Type': 'application/json', }, body: JSON.stringify({ text, voice_type: 'female', output_format: 'mp3' }) }); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } return await response.json(); } ``` ## 性能优化建议 1. **启用缓存**:对于重复的文本内容,启用缓存可大幅提升性能 2. **批量处理**:支持批量文本转换,减少API调用次数 3. **异步处理**:对于长文本,支持异步生成和状态查询 4. **CDN加速**:生成的语音文件可通过CDN分发,提高访问速度 5. **负载均衡**:在高并发场景下,建议部署多个实例并使用负载均衡 ## 安全注意事项 1. **输入验证**:所有用户输入都应进行严格的验证和清理 2. **配额限制**:根据用户等级实施API调用配额限制 3. **访问控制**:敏感接口应实施身份验证和授权 4. **日志审计**:记录所有API调用,便于安全审计 5. **数据加密**:敏感数据在传输和存储时应加密