37 lines
816 B
Python
37 lines
816 B
Python
from dataclasses import dataclass
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
class TypecastVoice(BaseModel):
|
|
"""Typecast(ssfm-v30) 설정. 주면 엔진이 typecast가 된다."""
|
|
voice_id: str
|
|
emotion: str = "normal"
|
|
emotion_intensity: float = 1.0
|
|
tempo: float = 1.0 # OpenAI의 speed에 대응
|
|
|
|
|
|
class NarrationCue(BaseModel):
|
|
index: int
|
|
text: str
|
|
start: float
|
|
duration: float
|
|
end: float
|
|
pause_after: float
|
|
|
|
|
|
class NarrationTimeline(BaseModel):
|
|
"""씬·카메라 비트를 여기 큐에 맞춘다."""
|
|
engine: str
|
|
voice: str
|
|
lead_in: float
|
|
tail: float
|
|
total: float
|
|
cues: list[NarrationCue]
|
|
|
|
|
|
@dataclass
|
|
class NarrationAudio:
|
|
timeline: NarrationTimeline
|
|
mp3: bytes # 큐 위치에 얹어 합친 한 트랙
|