File size: 989 Bytes
fba6023
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
from __future__ import annotations

from typing import Any, Literal

from pydantic import BaseModel, ConfigDict, Field


class URLInput(BaseModel):
    model_config = ConfigDict(extra="allow")

    url: str
    filename: str | None = None


class Base64Input(BaseModel):
    model_config = ConfigDict(extra="allow")

    base64: str
    filename: str | None = None
    mime_type: str | None = None


class WhisperOptions(BaseModel):
    model: Literal["tiny", "base", "small", "medium", "large-v3"] | None = None
    task: Literal["transcribe", "translate"] = "transcribe"
    language: str | None = None
    output_format: Literal["txt", "srt", "vtt", "json", "tsv"] = "json"
    beam_size: int = Field(default=5, ge=1, le=20)
    vad_filter: bool = True


class YTDLPOptions(BaseModel):
    mode: Literal["video", "audio", "thumbnail", "metadata"] = "video"
    format: str | None = None
    audio_format: Literal["mp3", "m4a", "wav", "opus", "flac"] = "mp3"


JsonDict = dict[str, Any]