feat: mvp
This commit is contained in:
65
dubbing/config.py
Normal file
65
dubbing/config.py
Normal file
@@ -0,0 +1,65 @@
|
||||
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()
|
||||
Reference in New Issue
Block a user