from faster_whisper import WhisperModel from .config import MODEL_SIZE, TEMP_DIR from .ffmpeg import extract_audio import os model = None os.makedirs(TEMP_DIR, exist_ok=True) def get_model(): global model if model is None: model = WhisperModel( MODEL_SIZE, device="cpu", compute_type="int8" ) return model def transcribe_video(video): audio = f"{TEMP_DIR}/audio.wav" extract_audio(video, audio) segments, _ = get_model().transcribe( audio, word_timestamps=True ) words = [] for seg in segments: for w in seg.words: words.append({ "start": w.start, "end": w.end, "text": w.word.strip() }) return words