8935196fcd
Deploy / Staging E2E Tests (push) Has been skipped
Deploy / Build Production Runtime Images (push) Has been skipped
Deploy / Deploy Production (push) Has been skipped
Deploy / Production Browser E2E (push) Has been skipped
Deploy / Deploy Staging (push) Failing after 138h4m33s
CI/CD Pipeline / Frontend Lint (push) Failing after 138h4m39s
CI/CD Pipeline / Validate Code Quality And Tests (push) Failing after 138h4m39s
66 lines
1.8 KiB
Python
66 lines
1.8 KiB
Python
"""音色克隆 API Schema。"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from datetime import datetime
|
|
from typing import Any, Dict, List, Optional
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
|
|
class CreateVoiceCloneRequest(BaseModel):
|
|
"""创建音色克隆请求。"""
|
|
|
|
name: str = Field(..., min_length=1, max_length=100, description="音色名称")
|
|
description: str = Field("", description="音色描述")
|
|
source_audio_url: str = Field("", description="参考音频 URL")
|
|
voice_model: str = Field("", description="语音模型名称")
|
|
language: str = Field("zh-CN", description="语言")
|
|
gender: str = Field("unknown", description="性别")
|
|
max_retries: int = Field(3, ge=1, le=10, description="最大重试次数")
|
|
metadata_: Optional[Dict[str, Any]] = Field(default=None, alias="metadata", description="额外元数据")
|
|
|
|
class Config:
|
|
populate_by_name = True
|
|
|
|
|
|
class VoiceCloneProfileResponse(BaseModel):
|
|
"""音色克隆档案响应。"""
|
|
|
|
id: str
|
|
user_id: str
|
|
name: str
|
|
description: str = ""
|
|
source_audio_url: str = ""
|
|
voice_id: str = ""
|
|
voice_model: str = ""
|
|
language: str = "zh-CN"
|
|
gender: str = "unknown"
|
|
status: str
|
|
error_message: str = ""
|
|
retry_count: int = 0
|
|
max_retries: int = 3
|
|
metadata_: Optional[Dict[str, Any]] = Field(default=None, alias="metadata", description="额外元数据")
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
class Config:
|
|
populate_by_name = True
|
|
|
|
|
|
class VoiceCloneStatusResponse(BaseModel):
|
|
"""音色克隆状态响应(用于轮询)。"""
|
|
|
|
id: str
|
|
status: str
|
|
error_message: str = ""
|
|
voice_id: str = ""
|
|
retry_count: int = 0
|
|
|
|
|
|
class ListVoiceCloneResponse(BaseModel):
|
|
"""音色克隆列表响应。"""
|
|
|
|
items: List[VoiceCloneProfileResponse]
|
|
total: int
|