package dto import ( "digital-human/digitalhuman/consts" "gitea.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编码的音频数据 }