Artificial-superintelligence commited on
Commit
56ee6a5
·
verified ·
1 Parent(s): 2a2db8b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +31 -24
app.py CHANGED
@@ -1,14 +1,14 @@
1
  import streamlit as st
2
- from moviepy.editor import VideoFileClip, AudioFileClip, TextClip, CompositeVideoClip, concatenate_audioclips
3
  import whisper
4
  from translate import Translator
5
  from gtts import gTTS
6
  import tempfile
7
  import os
8
  import numpy as np
9
- from datetime import timedelta
10
  import shutil
11
  from pathlib import Path
 
12
 
13
  # Set page configuration
14
  st.set_page_config(
@@ -86,7 +86,7 @@ class VideoProcessor:
86
  # Extract audio to temporary file
87
  audio_path = self.create_temp_path(".wav")
88
  video.audio.write_audiofile(audio_path, fps=16000, verbose=False, logger=None)
89
-
90
  # Check if audio file is not empty
91
  if os.path.getsize(audio_path) == 0:
92
  raise ValueError("Extracted audio file is empty")
@@ -128,11 +128,12 @@ class VideoProcessor:
128
  return translated_segments
129
 
130
  def generate_tamil_audio(self, text):
131
- """Generate Tamil audio using gTTS"""
132
  try:
133
  audio_path = self.create_temp_path(".mp3")
134
  tts = gTTS(text=text, lang='ta', slow=False)
135
  tts.save(audio_path)
 
136
  return audio_path
137
  except Exception as e:
138
  raise Exception(f"Audio generation error: {str(e)}")
@@ -266,27 +267,33 @@ def main():
266
  with col2:
267
  generate_subtitles = st.checkbox("Generate Subtitles", value=True)
268
 
269
- # Ensure subtitle size and color are always defined
270
- subtitle_size = 24 # Default subtitle size
271
- subtitle_color = 'white' # Default subtitle color
272
-
273
  if generate_subtitles:
274
- subtitle_size = st.slider("Subtitle Size", 10, 40, 24)
275
- subtitle_color = st.color_picker("Subtitle Color", "#FFFFFF")
276
-
 
 
 
 
277
  if st.button("Process Video"):
278
- try:
279
- output_video_path = process_video(
280
- video_file.read(),
281
- voice_type,
282
- generate_subtitles=generate_subtitles,
283
- subtitle_size=subtitle_size,
284
- subtitle_color=subtitle_color
285
- )
286
- st.success("Video processing complete!")
287
- st.video(output_video_path)
288
- except Exception as e:
289
- st.error(f"Error: {e}")
290
-
 
 
 
 
 
 
291
  if __name__ == "__main__":
292
  main()
 
1
  import streamlit as st
2
+ from moviepy.editor import VideoFileClip, AudioFileClip, TextClip, CompositeVideoClip
3
  import whisper
4
  from translate import Translator
5
  from gtts import gTTS
6
  import tempfile
7
  import os
8
  import numpy as np
 
9
  import shutil
10
  from pathlib import Path
11
+ import time
12
 
13
  # Set page configuration
14
  st.set_page_config(
 
86
  # Extract audio to temporary file
87
  audio_path = self.create_temp_path(".wav")
88
  video.audio.write_audiofile(audio_path, fps=16000, verbose=False, logger=None)
89
+
90
  # Check if audio file is not empty
91
  if os.path.getsize(audio_path) == 0:
92
  raise ValueError("Extracted audio file is empty")
 
128
  return translated_segments
129
 
130
  def generate_tamil_audio(self, text):
131
+ """Generate Tamil audio using gTTS with rate limiting"""
132
  try:
133
  audio_path = self.create_temp_path(".mp3")
134
  tts = gTTS(text=text, lang='ta', slow=False)
135
  tts.save(audio_path)
136
+ time.sleep(1) # Adding delay to avoid rate limit issues
137
  return audio_path
138
  except Exception as e:
139
  raise Exception(f"Audio generation error: {str(e)}")
 
267
  with col2:
268
  generate_subtitles = st.checkbox("Generate Subtitles", value=True)
269
 
 
 
 
 
270
  if generate_subtitles:
271
+ col3, col4 = st.columns(2)
272
+ with col3:
273
+ subtitle_size = st.slider("Subtitle Size", 16, 32, 24)
274
+ with col4:
275
+ subtitle_color = st.color_picker("Subtitle Color", "#FFFFFF")
276
+
277
+ # Process video
278
  if st.button("Process Video"):
279
+ with st.spinner("Processing video..."):
280
+ try:
281
+ output_video_path = process_video(
282
+ video_file.read(),
283
+ voice_type,
284
+ generate_subtitles,
285
+ subtitle_size,
286
+ subtitle_color
287
+ )
288
+
289
+ st.video(output_video_path)
290
+ st.success("Video processed successfully!")
291
+
292
+ with open(output_video_path, "rb") as f:
293
+ st.download_button("Download Processed Video", f, file_name="processed_video.mp4")
294
+
295
+ except Exception as e:
296
+ st.error(f"Error: {str(e)}")
297
+
298
  if __name__ == "__main__":
299
  main()