Spaces:
Sleeping
Sleeping
| 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) | |