| 1 | from typing import Any, Dict, Literal, Optional |
| 2 | |
| 3 | from pydantic import BaseModel, Field |
| 4 | |
| 5 | |
| 6 | class StandardPipelineRequest(BaseModel): |
| 7 | text: str = Field(..., description="Topic or fixed narration script") |
| 8 | mode: str = "copy" |
| 9 | title: Optional[str] = None |
| 10 | segment_count: Optional[int] = Field(None, ge=1, le=20, description="Target narration segment count for inspiration mode") |
| 11 | n_scenes: int = 5 |
| 12 | split_mode: str = "paragraph" |
| 13 | llm_model: str |
| 14 | image_model: str |
| 15 | video_model: Optional[str] = None |
| 16 | video_mode: str = Field("image_concat", description="image_concat or dynamic_video") |
| 17 | video_ratio: str = "9:16" |
| 18 | image_resolution: str = "1080P" |
| 19 | video_resolution: Optional[str] = None |
| 20 | style_control: Optional[str] = None |
| 21 | generate_audio: bool = True |
| 22 | generate_videos: bool = False |
| 23 | enable_subtitles: bool = False |
| 24 | subtitle_render_mode: Literal["postprocess", "image_model"] = "postprocess" |
| 25 | subtitle_template: Optional[str] = None |
| 26 | subtitle_template_fields: Optional[Dict[str, str]] = None |
| 27 | template_media_kind: Literal["image", "video"] = "image" |
| 28 | video_duration: int = 5 |
| 29 | tts_voice: str = "zh-CN-YunjianNeural" |
| 30 | tts_speed: float = 1.0 |
| 31 | negative_prompt: Optional[str] = None |
| 32 | watermark: Optional[bool] = None |
| 33 | generate_audio_native: Optional[bool] = None |
| 34 | |
| 35 | |
| 36 | class ActionTransferPipelineRequest(BaseModel): |
| 37 | prompt_text: str |
| 38 | image_path: str |
| 39 | video_path: str |
| 40 | video_model: str |
| 41 | duration: int = 5 |
| 42 | video_ratio: str = "9:16" |
| 43 | video_resolution: Optional[str] = None |
| 44 | resolution: Optional[str] = None |
| 45 | negative_prompt: Optional[str] = None |
| 46 | watermark: Optional[bool] = None |
| 47 | prompt_extend: Optional[bool] = None |
| 48 | |
| 49 | |
| 50 | class DigitalHumanPipelineRequest(BaseModel): |
| 51 | mode: str = "customize" |
| 52 | character_image_path: str |
| 53 | goods_image_path: Optional[str] = None |
| 54 | goods_title: Optional[str] = None |
| 55 | goods_text: Optional[str] = None |
| 56 | llm_model: str |
| 57 | image_model: str |
| 58 | image_resolution: str = "1080P" |
| 59 | video_model: str |
| 60 | duration: int = 5 |
| 61 | video_ratio: str = "9:16" |
| 62 | video_resolution: Optional[str] = None |
| 63 | resolution: Optional[str] = None |
| 64 | tts_voice: str = "zh-CN-YunjianNeural" |
| 65 | tts_speed: float = 1.0 |
| 66 | negative_prompt: Optional[str] = None |
| 67 | watermark: Optional[bool] = None |
| 68 | prompt_extend: Optional[bool] = None |
| 69 | |
| 70 | |
| 71 | class GenericPipelineRequest(BaseModel): |
| 72 | params: Dict[str, Any] |
| 73 |