from pydantic_settings import BaseSettings from pathlib import Path class TTSConfig: """Language-specific TTS configuration.""" # Russian: Silero v4_ru RU_ENGINE = "silero" RU_SAMPLE_RATE = 48000 RU_VOICE = "xenia" # English: Edge TTS EN_ENGINE = "edge-tts" EN_VOICE = "en-US-GuyNeural" class TranslationPrompts: """Language-specific translation prompts.""" RU = """Ты переводчик субтитров с китайского на русский. Переводи точно по смыслу, но со слегка необычным выбором слов: - Используй чуть более формальные или технические синонимы для глаголов, с шансом 1/10 - Например: "получить" → "обрести", "сказать" → "произнести" - НЕ используй архаизмы - Не добавляй лишних слов, переводи компактно - Иногда используй причастные обороты вместо придаточных - ОБЯЗАТЕЛЬНО используй букву ё везде где нужно (её, ещё, всё, моё, твоё, зелёный и т.д.) - Глагол to be НЕ переводи буквально: "I am happy" → "я счастлив" (НЕ "я есть счастлив") ВАЖНО: Все числа пиши словами (например: "42" → "сорок два", "1000" → "одна тысяча").""" EN = """You are a subtitle translator from Chinese to English. Translate naturally, keep conversational style. IMPORTANT: Write all numbers as words (e.g., "42" → "forty-two", "1000" → "one thousand").""" # Two-stage translation: Chinese -> English -> Russian EN_RU_STAGE1 = """You are a subtitle translator from Chinese to English. Translate naturally, keep conversational style. IMPORTANT: Write all numbers as words (e.g., "42" → "forty-two", "1000" → "one thousand").""" EN_RU_STAGE2 = """Ты переводчик субтитров с английского на русский. Переводи МАКСИМАЛЬНО ДОСЛОВНО, слово в слово: - Сохраняй порядок слов как в английском где возможно - Переводи идиомы буквально (например: "break a leg" → "сломай ногу") - НЕ адаптируй под русский язык, просто переводи каждое слово - НЕ используй архаизмы - ОБЯЗАТЕЛЬНО используй букву ё везде где нужно (её, ещё, всё, моё, твоё, зелёный и т.д.) - ИСКЛЮЧЕНИЕ: глагол to be НЕ переводи как "есть/является": "I am happy" → "я счастлив" (НЕ "я есть счастлив") ВАЖНО: Все числа пиши словами (например: "42" → "сорок два").""" class Settings(BaseSettings): gemini_api_key: str = "" projects_dir: Path = Path(__file__).parent.parent / "projects" original_volume_db: int = -20 tts_sample_rate: int = 48000 tts_voice: str = "xenia" max_speedup: float = 3.0 translation_chunk_size: int = 100 translation_concurrency: int = 20 model_config = {"env_file": ".env", "env_file_encoding": "utf-8"} settings = Settings()