Pushkar0655g commited on
Commit
91b987a
·
1 Parent(s): 9c94c47

Fix indentation error in utils.py

Browse files
Files changed (1) hide show
  1. utils.py +61 -8
utils.py CHANGED
@@ -2,26 +2,73 @@ import whisper
2
  from transformers import MarianMTModel, MarianTokenizer, AutoTokenizer, AutoModelForSeq2SeqLM
3
  import os
4
  import tempfile
 
5
 
6
  # Load Whisper model
7
  model = whisper.load_model("base")
8
 
9
  def process_video(video_file, language):
10
- # Save uploaded video to a temporary file with the correct extension
11
- video_path = os.path.join(tempfile.gettempdir(), "video.mp4") # Save as MP4 for compatibility
12
- with open(video_path, "wb") as f:
13
- f.write(video_file.read())
14
 
15
  try:
 
 
 
 
 
 
 
 
 
16
  print("Transcribing video to English...")
17
- result = model.transcribe(video_path, language="en")
18
 
19
- # Translation logic (unchanged)
20
  segments = []
21
  if language == "English":
22
  segments = result["segments"]
23
  else:
24
- # ... (rest of your translation code) ...
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
 
26
  # Create SRT file
27
  srt_path = os.path.join(tempfile.gettempdir(), "subtitles.srt")
@@ -34,4 +81,10 @@ def process_video(video_file, language):
34
  return srt_path
35
 
36
  except Exception as e:
37
- return f"Error: {str(e)}"
 
 
 
 
 
 
 
2
  from transformers import MarianMTModel, MarianTokenizer, AutoTokenizer, AutoModelForSeq2SeqLM
3
  import os
4
  import tempfile
5
+ import subprocess
6
 
7
  # Load Whisper model
8
  model = whisper.load_model("base")
9
 
10
  def process_video(video_file, language):
11
+ # Save uploaded video to a temporary file
12
+ temp_dir = tempfile.gettempdir()
13
+ video_path = os.path.join(temp_dir, "input_video") # No extension
14
+ output_video_path = os.path.join(temp_dir, "converted_video.mp4") # Convert to MP4 for compatibility
15
 
16
  try:
17
+ # Save the uploaded file
18
+ with open(video_path, "wb") as f:
19
+ f.write(video_file.read())
20
+
21
+ # Convert the video to MP4 using ffmpeg
22
+ print("Converting video to MP4...")
23
+ subprocess.run(["ffmpeg", "-i", video_path, "-c:v", "libx264", "-preset", "fast", output_video_path], check=True)
24
+
25
+ # Transcribe the video
26
  print("Transcribing video to English...")
27
+ result = model.transcribe(output_video_path, language="en")
28
 
29
+ # Translation logic
30
  segments = []
31
  if language == "English":
32
  segments = result["segments"]
33
  else:
34
+ # Define translation models
35
+ model_map = {
36
+ "Hindi": "Helsinki-NLP/opus-mt-en-hi",
37
+ "Spanish": "Helsinki-NLP/opus-mt-en-es",
38
+ "French": "Helsinki-NLP/opus-mt-en-fr",
39
+ "German": "Helsinki-NLP/opus-mt-en-de",
40
+ "Telugu": "facebook/nllb-200-distilled-600M",
41
+ "Portuguese": "Helsinki-NLP/opus-mt-en-pt",
42
+ "Russian": "Helsinki-NLP/opus-mt-en-ru",
43
+ "Chinese": "Helsinki-NLP/opus-mt-en-zh",
44
+ "Arabic": "Helsinki-NLP/opus-mt-en-ar",
45
+ "Japanese": "Helsinki-NLP/opus-mt-en-jap"
46
+ }
47
+ model_name = model_map.get(language)
48
+ if not model_name:
49
+ return f"Unsupported language: {language}"
50
+
51
+ if language == "Telugu":
52
+ tokenizer = AutoTokenizer.from_pretrained(model_name)
53
+ translation_model = AutoModelForSeq2SeqLM.from_pretrained(model_name)
54
+ tgt_lang = "tel_Telu"
55
+ print(f"Translating to Telugu using NLLB-200 Distilled...")
56
+ for segment in result["segments"]:
57
+ inputs = tokenizer(segment["text"], return_tensors="pt", padding=True)
58
+ translated_tokens = translation_model.generate(
59
+ **inputs, forced_bos_token_id=tokenizer.convert_tokens_to_ids(tgt_lang)
60
+ )
61
+ translated_text = tokenizer.batch_decode(translated_tokens, skip_special_tokens=True)[0]
62
+ segments.append({"text": translated_text, "start": segment["start"], "end": segment["end"]})
63
+ else:
64
+ tokenizer = MarianTokenizer.from_pretrained(model_name)
65
+ translation_model = MarianMTModel.from_pretrained(model_name)
66
+ print(f"Translating to {language}...")
67
+ for segment in result["segments"]:
68
+ inputs = tokenizer(segment["text"], return_tensors="pt", padding=True)
69
+ translated = translation_model.generate(**inputs)
70
+ translated_text = tokenizer.decode(translated[0], skip_special_tokens=True)
71
+ segments.append({"text": translated_text, "start": segment["start"], "end": segment["end"]})
72
 
73
  # Create SRT file
74
  srt_path = os.path.join(tempfile.gettempdir(), "subtitles.srt")
 
81
  return srt_path
82
 
83
  except Exception as e:
84
+ return f"Error: {str(e)}"
85
+ finally:
86
+ # Clean up temporary files
87
+ if os.path.exists(video_path):
88
+ os.remove(video_path)
89
+ if os.path.exists(output_video_path):
90
+ os.remove(output_video_path)