lipsDetection / app.py
farid678's picture
Update app.py
e900cc0 verified
import gradio as gr
import subprocess
import tempfile
import whisper
import os
# -----------------------------
# بارگذاری مدل Whisper
# -----------------------------
print("🎧 Loading Whisper model (large-v3)...")
model = whisper.load_model("large-v3") # می‌توانید small, medium, large هم انتخاب کنید
# -----------------------------
# تابع پردازش ویدیو و تبدیل به متن
# -----------------------------
def transcribe_video(video_path): # video_path یک رشته مسیر فایل است
try:
# ایجاد فایل صوتی موقت
tmp_audio_path = tempfile.NamedTemporaryFile(delete=False, suffix=".wav").name
# استخراج صدا با ffmpeg
subprocess.run(
["ffmpeg", "-y", "-i", video_path, "-ar", "16000", "-ac", "1", tmp_audio_path],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL
)
# تبدیل صدا به متن
result = model.transcribe(tmp_audio_path, fp16=False)
text = result["text"].strip()
# پاک کردن فایل صوتی موقت
os.remove(tmp_audio_path)
return text or "متنی شناسایی نشد."
except Exception as e:
return f"⚠️ خطا در پردازش ویدیو: {e}"
# -----------------------------
# رابط کاربری Gradio
# -----------------------------
iface = gr.Interface(
fn=transcribe_video,
inputs=gr.Video(label="🎥 ویدیو را آپلود کنید"),
outputs=gr.Textbox(label="📝 متن استخراج‌شده"),
title="🎧 ویدیو به متن با Whisper",
description="ویدیوی خود را آپلود کنید تا گفتار آن به متن تبدیل شود."
)
if __name__ == "__main__":
iface.launch(server_name="0.0.0.0", server_port=7860)