playreel/backend/models/tts.py

37 lines
856 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 # 큐 위치에 얹어 합친 한 트랙