Files
ai-agent/digital-human/model/dto/audio_dto.go
2026-06-10 15:29:21 +08:00

152 lines
5.8 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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编码的音频数据
}