本文引用的文件
TTS(Text-to-Speech)语音合成API是AI有声书生成工具的核心功能模块,提供从文本到高质量音频的完整转换服务。该接口支持多种音色选择、参数调节、异步生成和状态查询等功能,适用于内容创作者、自媒体作者和学习者等各类用户群体。
TTS模块采用清晰的分层架构设计:
graph TB
subgraph "API层"
Controller[TTS控制器]
end
subgraph "服务层"
Service[TTS服务]
Storage[存储服务]
Queue[队列服务]
end
subgraph "提供商层"
Aliyun[阿里云TTS]
MiniMax[MiniMax TTS]
Mock[模拟TTS]
end
subgraph "基础设施"
DB[(MySQL数据库)]
OSS[(对象存储)]
Redis[(Redis缓存)]
end
Controller --> Service
Service --> Storage
Service --> Queue
Service --> Aliyun
Service --> MiniMax
Service --> Mock
Storage --> OSS
Service --> DB
Service --> Redis
图表来源
章节来源
系统内置10种优质音色,涵盖不同性别和风格:
章节来源
sequenceDiagram
participant Client as 客户端
participant API as API网关
participant Auth as 认证中间件
participant TTS as TTS控制器
participant Service as TTS服务
participant Provider as TTS提供商
participant Storage as 存储服务
Client->>API : POST /api/tts/generate
API->>Auth : 验证JWT令牌
Auth-->>API : 用户信息
API->>TTS : 处理生成请求
TTS->>Service : 生成音频
Service->>Provider : 调用TTS API
Provider-->>Service : 返回音频数据
Service->>Storage : 上传音频文件
Storage-->>Service : 返回访问URL
Service-->>TTS : 返回生成结果
TTS-->>Client : 返回音频信息
Note over Client,Storage : 异步生成流程
图表来源
接口定义
/api/tts/voices请求参数
响应格式
{
"code": 0,
"message": "success",
"data": {
"voices": [
{
"id": "cherry",
"name": "芊悦",
"gender": "female",
"description": "阳光积极、亲切自然"
}
]
}
}
实现细节
章节来源
接口定义
/api/tts/providers请求参数
响应格式
{
"code": 0,
"message": "success",
"data": {
"providers": [
{
"id": "aliyun",
"name": "阿里云百炼",
"enabled": true
},
{
"id": "minimax",
"name": "MiniMax",
"enabled": false
}
]
}
}
实现细节
章节来源
接口定义
/api/tts/generate请求参数
{
"text": "要转换的文本内容",
"voiceId": "cherry",
"voiceParams": {
"speed": 1.0,
"pitch": 0,
"volume": 50
},
"bookId": "123",
"chapterTitle": "第一章",
"ttsProvider": "aliyun"
}
响应格式
{
"code": 0,
"message": "音频生成任务已创建",
"data": {
"audioId": "550e8400-e29b-41d4-a716-446655440000",
"audioUrl": ""
}
}
参数验证规则
配额检查流程
flowchart TD
Start([开始生成]) --> ValidateText["验证文本参数"]
ValidateText --> CheckUser{"用户已登录?"}
CheckUser --> |是| CheckQuota["检查音频时长配额"]
CheckUser --> |否| SkipQuota["跳过配额检查"]
CheckQuota --> QuotaAllowed{"配额充足?"}
QuotaAllowed --> |否| Reject["拒绝请求"]
QuotaAllowed --> |是| Process["处理生成"]
SkipQuota --> Process
Process --> CreateRecord["创建音频记录"]
CreateRecord --> GenerateAudio["生成音频"]
GenerateAudio --> ConsumeQuota["消耗配额"]
ConsumeQuota --> Success["返回结果"]
Reject --> End([结束])
Success --> End
图表来源
实现细节
章节来源
接口定义
/api/tts/status/:audioId请求参数
响应格式
{
"code": 0,
"message": "success",
"data": {
"status": "processing",
"audio": {
"audioUrl": "/uploads/550e8400/output.mp3",
"audioDuration": 120,
"audioSize": 1024000
}
}
}
状态类型
实现细节
章节来源
接口定义
/api/tts/preview请求参数
{
"voiceId": "cherry",
"voiceParams": {
"speed": 1.0,
"pitch": 0,
"volume": 50
},
"ttsProvider": "aliyun"
}
响应格式
{
"code": 0,
"message": "success",
"data": {
"previewText": "你好,欢迎使用AI有声书",
"voiceId": "cherry",
"audioUrl": "/uploads/preview-550e8400/output.mp3"
}
}
实现细节
章节来源
接口定义
/api/tts/download/:audioId请求参数
响应格式
{
"code": 0,
"message": "success",
"data": {
"id": 123,
"title": "音频标题",
"audioUrl": "/uploads/550e8400/output.mp3",
"duration": 120,
"size": 1024000,
"downloadUrl": "/uploads/550e8400/output.mp3"
}
}
实现细节
章节来源
graph LR
subgraph "外部依赖"
Aliyun[AWS SDK]
MiniMax[HTTP Client]
FFmpeg[FFmpeg CLI]
Axios[Axios]
end
subgraph "内部模块"
Config[配置管理]
Types[类型定义]
Logger[日志服务]
ErrorHandler[错误处理]
end
TTSController --> TTSProvider
TTSProvider --> Config
TTSProvider --> Types
TTSProvider --> Logger
TTSProvider --> ErrorHandler
TTSProvider --> Aliyun
TTSProvider --> MiniMax
TTSProvider --> FFmpeg
TTSProvider --> Axios
图表来源
章节来源
| 错误码 | 说明 | 处理建议 |
|---|---|---|
| 400 | 请求参数错误 | 检查必填参数和格式 |
| 401 | 未授权 | 验证JWT令牌有效性 |
| 403 | 禁止访问 | 检查用户权限和配额 |
| 404 | 资源不存在 | 确认音频ID正确性 |
| 500 | 服务器内部错误 | 查看服务日志 |
flowchart TD
CheckQuota[检查用户配额] --> DailyLimit{每日限制}
DailyLimit --> |超限| DailyError[返回每日限制错误]
DailyLimit --> |未超限| WordLimit{字数限制}
WordLimit --> |超限| WordError[返回字数限制错误]
WordLimit --> |未超限| ProviderCheck[提供商检查]
ProviderCheck --> RateLimit{提供商限额}
RateLimit --> |超限| ProviderError[切换其他提供商]
RateLimit --> |未超限| Allow[允许生成]
图表来源
章节来源
TTS API接口提供了完整的文本转语音解决方案,具有以下特点:
建议在生产环境中:
基本集成步骤
最佳实践建议
使用限制
章节来源