Turbiling commited on
Commit
d48c3cd
·
verified ·
1 Parent(s): 313ea55

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +18 -8
app.py CHANGED
@@ -2,6 +2,7 @@
2
  AI Graduate Job-Matching Platform
3
  Complete Hugging Face Spaces Deployment Version
4
  Developer: Najaf Ali Sharqi
 
5
  """
6
 
7
  import os
@@ -9,8 +10,9 @@ import gradio as gr
9
  import tempfile
10
  import traceback
11
  from groq import Groq
12
- from moviepy.editor import VideoFileClip
13
- import json
 
14
 
15
  # ============================================================================
16
  # CONFIGURATION
@@ -32,18 +34,26 @@ SCORING_WEIGHTS = {
32
  }
33
 
34
  # ============================================================================
35
- # TRANSCRIPTION MODULE
36
  # ============================================================================
37
 
38
  def extract_audio_from_video(video_path):
 
 
 
 
39
  try:
40
- video = VideoFileClip(video_path)
41
- duration = video.duration
 
 
 
 
42
  temp_audio = tempfile.NamedTemporaryFile(suffix=".mp3", delete=False)
43
  audio_path = temp_audio.name
44
  temp_audio.close()
45
- video.audio.write_audiofile(audio_path, logger=None, verbose=False)
46
- video.close()
47
  return audio_path, duration
48
  except Exception as e:
49
  print(f"Error extracting audio: {str(e)}")
@@ -92,7 +102,7 @@ def process_video_ui(video, language):
92
  def create_ui():
93
  with gr.Blocks(title="AI Graduate Job Matcher") as demo:
94
  gr.HTML("<h1>🎓 AI Graduate Job-Matching Platform</h1><p>Developer: Najaf Ali Sharqi</p>")
95
- video_input = gr.Video(label="Upload Video / ویڈیو اپ لوڈ کریں", source="upload")
96
  language_dropdown = gr.Dropdown(choices=["English", "Urdu / اردو"], value="English", label="Output Language / آؤٹ پٹ زبان")
97
  process_btn = gr.Button("🚀 Generate Transcript / ٹرانسکرپٹ بنائیں")
98
  transcript_output = gr.Textbox(label="Transcript / ٹرانسکرپٹ", lines=15)
 
2
  AI Graduate Job-Matching Platform
3
  Complete Hugging Face Spaces Deployment Version
4
  Developer: Najaf Ali Sharqi
5
+ MoviePy-free (uses OpenCV + imageio)
6
  """
7
 
8
  import os
 
10
  import tempfile
11
  import traceback
12
  from groq import Groq
13
+ import cv2
14
+ import imageio
15
+ import numpy as np
16
 
17
  # ============================================================================
18
  # CONFIGURATION
 
34
  }
35
 
36
  # ============================================================================
37
+ # TRANSCRIPTION MODULE (Video -> Audio)
38
  # ============================================================================
39
 
40
  def extract_audio_from_video(video_path):
41
+ """
42
+ Extract audio from video using imageio + OpenCV (MoviePy alternative)
43
+ Saves a temporary .mp3 file and returns its path and video duration
44
+ """
45
  try:
46
+ reader = imageio.get_reader(video_path, 'ffmpeg')
47
+ fps = reader.get_meta_data()['fps']
48
+ nframes = reader.get_meta_data()['nframes']
49
+ duration = nframes / fps
50
+
51
+ # Save audio using ffmpeg via imageio
52
  temp_audio = tempfile.NamedTemporaryFile(suffix=".mp3", delete=False)
53
  audio_path = temp_audio.name
54
  temp_audio.close()
55
+
56
+ os.system(f"ffmpeg -y -i '{video_path}' -q:a 0 -map a '{audio_path}'") # extract audio
57
  return audio_path, duration
58
  except Exception as e:
59
  print(f"Error extracting audio: {str(e)}")
 
102
  def create_ui():
103
  with gr.Blocks(title="AI Graduate Job Matcher") as demo:
104
  gr.HTML("<h1>🎓 AI Graduate Job-Matching Platform</h1><p>Developer: Najaf Ali Sharqi</p>")
105
+ video_input = gr.File(label="Upload Video / ویڈیو اپ لوڈ کریں", file_types=[".mp4", ".mov", ".avi"])
106
  language_dropdown = gr.Dropdown(choices=["English", "Urdu / اردو"], value="English", label="Output Language / آؤٹ پٹ زبان")
107
  process_btn = gr.Button("🚀 Generate Transcript / ٹرانسکرپٹ بنائیں")
108
  transcript_output = gr.Textbox(label="Transcript / ٹرانسکرپٹ", lines=15)