pdf_explainer / api /models.py
spagestic's picture
api updated
d1c4aa1
raw
history blame
2.35 kB
"""
Pydantic models for request/response validation and API documentation.
"""
from typing import Optional
from pydantic import BaseModel, Field
class TTSRequest(BaseModel):
"""Request model for TTS generation with optional voice cloning."""
text: str = Field(..., description="Text to convert to speech", max_length=5000)
voice_prompt_base64: Optional[str] = Field(None, description="Base64 encoded voice prompt audio")
class FullTextTTSRequest(BaseModel):
"""Request model for full-text TTS generation with server-side processing."""
text: str = Field(..., description="Full text to convert to speech (any length)")
voice_prompt_base64: Optional[str] = Field(None, description="Base64 encoded voice prompt audio")
max_chunk_size: Optional[int] = Field(800, description="Maximum characters per chunk")
silence_duration: Optional[float] = Field(0.5, description="Silence duration between chunks (seconds)")
fade_duration: Optional[float] = Field(0.1, description="Fade in/out duration (seconds)")
overlap_sentences: Optional[int] = Field(0, description="Number of sentences to overlap between chunks")
class TTSResponse(BaseModel):
"""Response model for TTS generation with JSON output."""
success: bool = Field(..., description="Whether the request was successful")
message: str = Field(..., description="Status message")
audio_base64: Optional[str] = Field(None, description="Base64 encoded audio data")
duration_seconds: Optional[float] = Field(None, description="Duration of generated audio in seconds")
class FullTextTTSResponse(BaseModel):
"""Response model for full-text TTS generation."""
success: bool = Field(..., description="Whether the request was successful")
message: str = Field(..., description="Status message")
audio_base64: Optional[str] = Field(None, description="Base64 encoded audio data")
duration_seconds: Optional[float] = Field(None, description="Duration of generated audio in seconds")
processing_info: Optional[dict] = Field(None, description="Information about the processing (chunks, etc.)")
class HealthResponse(BaseModel):
"""Response model for health check endpoint."""
status: str = Field(..., description="Service status")
model_loaded: bool = Field(..., description="Whether the TTS model is loaded")