Source code for lingua_loop.schemas.transcript

"""Pydantic models for transcript requests and responses."""

from typing import List

from pydantic import BaseModel
from pydantic import Field

from lingua_loop.constants import MAX_SCORE
from lingua_loop.constants import MIN_SCORE
from lingua_loop.integrations.youtube.types import SupportedLanguageCodes


[docs] class SegmentSchema(BaseModel): """Schema for a transcript segment.""" start: float = Field(ge=0.0) duration: float = Field(gt=0.0) text: str = Field(min_length=1)
[docs] class TranscriptResponse(BaseModel): """Response model for a transcript request.""" video_id: str = Field(min_length=1) segments: List[SegmentSchema] is_generated: bool
[docs] class ScoreRequest(BaseModel): """Request model for scoring a transcription.""" video_id: str = Field(min_length=1) segment_indices: List[int] = Field(min_length=1) user_text: str = Field(min_length=1) language_code: SupportedLanguageCodes
[docs] class ScoreResponse(BaseModel): """Response model for a scored transcription.""" score: float = Field(ge=MIN_SCORE, le=MAX_SCORE) reference_text: str = Field(min_length=1)