#!/usr/bin/env python3
"""Utilitários de transcrição com OpenAI Whisper."""

import whisper

_model = None


def get_model():
    global _model
    if _model is None:
        print("[whisper] Carregando modelo 'base'...")
        _model = whisper.load_model("base")
        print("[whisper] Modelo carregado.")
    return _model


def transcrever_audio(video_path: str) -> dict:
    """
    Transcreve o áudio de um vídeo/áudio e retorna:
    {
        "texto": "texto completo",
        "segmentos": [{"inicio": 0.0, "fim": 2.5, "texto": "Olá pessoal"}, ...]
    }
    """
    model = get_model()
    result = model.transcribe(video_path, language="pt", word_timestamps=True)

    segmentos = []
    for seg in result["segments"]:
        words_raw = seg.get("words") or []
        words = []
        for w in words_raw:
            txt = (w.get("word") or "").strip()
            if not txt:
                continue
            words.append({
                "word": txt,
                "start": float(w.get("start", seg["start"])),
                "end": float(w.get("end", seg["end"])),
            })

        segmentos.append({
            "inicio": seg["start"],
            "fim": seg["end"],
            "texto": seg["text"].strip(),
            "words": words,
        })

    return {
        "texto": result["text"],
        "segmentos": segmentos
    }
