Clipping / routers /transcriber.py
aliSaac510's picture
add auto transcript
247c596
import os
from typing import List
try:
from faster_whisper import WhisperModel
except ImportError:
WhisperModel = None
# الطريقة الصحيحة للوصول للـ schemas من داخل مجلد routers
try:
# إذا تم التشغيل من خلال main.py (FastAPI context)
from ..schemas import SentenceTiming, WordTiming
except (ImportError, ValueError):
# إذا تم التشغيل كملف مستقل أو بطريقة أخرى
import sys
parent_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
if parent_dir not in sys.path:
sys.path.append(parent_dir)
from schemas import SentenceTiming, WordTiming
def transcribe_video(video_path: str, model_size: str = "base") -> List[SentenceTiming]:
"""
توليد نص تلقائي للفيديو مع توقيتات الكلمات.
"""
if WhisperModel is None:
raise ImportError("faster-whisper is not installed. Please run 'pip install faster-whisper'")
# تحميل الموديل (سيتم تحميله مرة واحدة عند أول استدعاء)
model = WhisperModel(model_size, device="cpu", compute_type="int8")
# تنفيذ العملية
segments, info = model.transcribe(video_path, beam_size=5, word_timestamps=True)
results = []
for segment in segments:
words_timing = []
if segment.words:
for word in segment.words:
words_timing.append(WordTiming(
word=word.word.strip(),
start=word.start,
end=word.end,
confidence=word.probability
))
results.append(SentenceTiming(
text=segment.text.strip(),
start=segment.start,
end=segment.end,
words=words_timing
))
return results