File size: 802 Bytes
345855e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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