Files
bornetime/backend/app/services/translator.py
T
oval 6851b26923 Initial commit: Børnetime app scaffold
FastAPI + Celery + Svelte app for English→Danish video translation
with voice cloning. Includes diarization, STT, translation, TTS,
and audio mixing pipeline.
2026-07-10 22:42:23 +02:00

61 lines
1.2 KiB
Python

import logging
from ..config import settings
logger = logging.getLogger(__name__)
_llm = None
def _load_model():
global _llm
if _llm is not None:
return
from llama_cpp import Llama
logger.info("Loading TranslateGemma 12B from %s", settings.translate_model_path)
_llm = Llama(
model_path=settings.translate_model_path,
n_gpu_layers=settings.translate_n_gpu_layers,
n_ctx=2048,
verbose=False,
)
def translate(text: str) -> str:
_load_model()
if not text.strip():
return ""
lines = [
"Translate the following English text to Danish.",
"Preserve the original meaning, tone, and style.",
"Output only the Danish translation, nothing else.",
"",
f"English: {text}",
"",
"Danish:",
]
prompt = "\n".join(lines)
stop_tokens = ["\n\n", "English:", "User:"]
output = _llm(
prompt,
max_tokens=1024,
temperature=0.1,
stop=stop_tokens,
echo=False,
)
result = output["choices"][0]["text"].strip()
return result
def unload_model():
global _llm
_llm = None
import torch
torch.cuda.empty_cache()