studio / utils /transcription.py
Ava2lon's picture
Upload 170 files
345855e verified
Raw
History Blame Contribute Delete
802 Bytes
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