152 lines
5.8 KiB
Go
152 lines
5.8 KiB
Go
package dto
|
||
|
||
import (
|
||
"ai-agent/digital-human/consts"
|
||
|
||
"gitea.redpowerfuture.com/red-future/common/beans"
|
||
"github.com/gogf/gf/v2/frame/g"
|
||
"github.com/gogf/gf/v2/os/gtime"
|
||
)
|
||
|
||
// CreateAudioReq 创建音频请求
|
||
type CreateAudioReq struct {
|
||
g.Meta `path:"/createAudio" method:"post" tags:"音频管理" summary:"创建音频" dc:"创建新的音频"`
|
||
// 基础信息
|
||
Name string `json:"name" v:"required" dc:"音频名称"`
|
||
Description string `json:"description" dc:"音频描述"`
|
||
ScriptText string `json:"scriptText" v:"required" dc:"话术文本"`
|
||
// 音色配置
|
||
Voice string `json:"voice" dc:"音色:serena/vivian/uncle_fu/ryan/aiden/ono_anna/sohee/eric/dylan,默认serena"`
|
||
VoiceType string `json:"voiceType" dc:"音色类型:preset/custom(预设/自定义),默认preset"`
|
||
CustomVoice string `json:"customVoice" dc:"自定义音色ID(用于声音克隆),voiceType=custom时必填"`
|
||
}
|
||
|
||
// CreateAudioRes 创建音频响应
|
||
type CreateAudioRes struct {
|
||
Id int64 `json:"id" dc:"音频ID"`
|
||
}
|
||
|
||
// ListAudioReq 获取音频列表请求
|
||
type ListAudioReq struct {
|
||
g.Meta `path:"/listAudios" method:"get" tags:"音频管理" summary:"获取音频列表" dc:"分页查询音频列表,支持多条件筛选"`
|
||
*beans.Page
|
||
Status consts.AudioStatus `json:"status" dc:"状态:0生成中/1成功/2失败"`
|
||
Keyword string `json:"keyword" dc:"关键词搜索"`
|
||
}
|
||
|
||
// ListAudioRes 获取音频列表响应
|
||
type ListAudioRes struct {
|
||
List []*AudioListItem `json:"list" dc:"音频列表"`
|
||
Total int64 `json:"total" dc:"总数"`
|
||
}
|
||
|
||
// AudioListItem 音频列表项
|
||
type AudioListItem struct {
|
||
ID int64 `json:"id"`
|
||
Name string `json:"name"`
|
||
Description string `json:"description"`
|
||
ScriptText string `json:"scriptText"`
|
||
AudioURL string `json:"audioUrl"`
|
||
Status consts.AudioStatus `json:"status"`
|
||
ErrorMsg string `json:"errorMsg"`
|
||
Duration int `json:"duration"`
|
||
ExternalID string `json:"externalId"`
|
||
Voice string `json:"voice"`
|
||
VoiceType string `json:"voiceType"`
|
||
CustomVoice string `json:"customVoice"`
|
||
CreatedAt *gtime.Time `json:"createdAt"`
|
||
UpdatedAt *gtime.Time `json:"updatedAt"`
|
||
}
|
||
|
||
// GetAudioReq 获取音频详情请求
|
||
type GetAudioReq struct {
|
||
g.Meta `path:"/getAudio" method:"get" tags:"音频管理" summary:"获取音频详情" dc:"获取音频详情"`
|
||
ID int64 `json:"id" v:"required" dc:"音频ID"`
|
||
}
|
||
|
||
// GetAudioRes 获取音频详情响应
|
||
type GetAudioRes struct {
|
||
ID int64 `json:"id"`
|
||
Name string `json:"name"`
|
||
Description string `json:"description"`
|
||
ScriptText string `json:"scriptText"`
|
||
AudioURL string `json:"audioUrl"`
|
||
Status consts.AudioStatus `json:"status"`
|
||
ErrorMsg string `json:"errorMsg"`
|
||
Duration int `json:"duration"`
|
||
ExternalID string `json:"externalId"`
|
||
Voice string `json:"voice"`
|
||
VoiceType string `json:"voiceType"`
|
||
CustomVoice string `json:"customVoice"`
|
||
CreatedAt *gtime.Time `json:"createdAt"`
|
||
UpdatedAt *gtime.Time `json:"updatedAt"`
|
||
}
|
||
|
||
// UpdateAudioReq 更新音频请求
|
||
type UpdateAudioReq struct {
|
||
g.Meta `path:"/updateAudio" method:"put" tags:"音频管理" summary:"更新音频" dc:"更新音频信息"`
|
||
ID int64 `json:"id" v:"required" dc:"音频ID"`
|
||
// 基础信息
|
||
Name string `json:"name" dc:"音频名称"`
|
||
Description string `json:"description" dc:"音频描述"`
|
||
// 音色配置
|
||
Voice string `json:"voice" dc:"音色"`
|
||
VoiceType string `json:"voiceType" dc:"音色类型"`
|
||
CustomVoice string `json:"customVoice" dc:"自定义音色ID"`
|
||
}
|
||
|
||
// DeleteAudioReq 删除音频请求
|
||
type DeleteAudioReq struct {
|
||
g.Meta `path:"/deleteAudio" method:"delete" tags:"音频管理" summary:"删除音频" dc:"删除音频"`
|
||
ID int64 `json:"id" v:"required" dc:"音频ID"`
|
||
}
|
||
|
||
// GenerateAudioReq 生成音频请求
|
||
type GenerateAudioReq struct {
|
||
g.Meta `path:"/generateAudio" method:"post" tags:"音频管理" summary:"生成音频" dc:"根据话术文本生成音频"`
|
||
ID int64 `json:"id" v:"required" dc:"音频ID"`
|
||
}
|
||
|
||
// GenerateAudioRes 生成音频响应
|
||
type GenerateAudioRes struct {
|
||
TaskID string `json:"taskId" dc:"任务ID"`
|
||
}
|
||
|
||
// TTSReq 文本转语音请求
|
||
type TTSReq struct {
|
||
g.Meta `path:"/tts" method:"post" tags:"音频管理" summary:"文本转语音" dc:"将文本转换为语音,直接返回MP3二进制数据"`
|
||
Text string `json:"text" v:"required" dc:"要转换的文本内容"`
|
||
Voice string `json:"voice" dc:"音色:默认default"`
|
||
Speed int `json:"speed" dc:"语速:0.5-2.0,默认1.0"`
|
||
}
|
||
|
||
// TTSRes 文本转语音响应(返回二进制MP3数据)
|
||
type TTSRes struct {
|
||
g.Meta `mime:"audio/mpeg"`
|
||
Data []byte `json:"-" dc:"MP3音频二进制数据"`
|
||
}
|
||
|
||
// GetAudioStatusOptionsReq 获取音频状态选项请求
|
||
type GetAudioStatusOptionsReq struct {
|
||
g.Meta `path:"/getAudioStatusOptions" method:"get" tags:"音频管理" summary:"获取音频状态选项" dc:"获取所有音频状态的选项列表"`
|
||
}
|
||
|
||
// GetAudioStatusOptionsRes 获取音频状态选项响应
|
||
type GetAudioStatusOptionsRes struct {
|
||
Options []consts.AudioStatusKeyValue `json:"options" dc:"音频状态选项列表"`
|
||
}
|
||
|
||
// Qwen3TTSRequest Qwen3-TTS 请求结构
|
||
type Qwen3TTSRequest struct {
|
||
Text string `json:"text"`
|
||
Speaker string `json:"speaker"` // 预设音色名或克隆音色ID
|
||
VoiceID string `json:"voice_id,omitempty"` // 克隆音色ID(可选)
|
||
}
|
||
|
||
// Qwen3TTSResponse Qwen3-TTS 响应结构
|
||
type Qwen3TTSResponse struct {
|
||
Code int `json:"code"`
|
||
Msg string `json:"msg"`
|
||
Audio string `json:"audio"` // base64编码的音频数据
|
||
}
|