gnosticdev commited on
Commit
ca0a564
·
verified ·
1 Parent(s): 6cb99d8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +6 -23
app.py CHANGED
@@ -2,7 +2,7 @@ import os
2
  import random
3
  import requests
4
  import gradio as gr
5
- from moviepy.editor import VideoFileClip, concatenate_videoclips, AudioFileClip, TextClip, CompositeVideoClip
6
  from moviepy.audio.fx.all import audio_loop
7
  import edge_tts
8
  import asyncio
@@ -21,7 +21,7 @@ def run_async(coro):
21
  loop.close()
22
  return result
23
 
24
- # Load local text generation model (adjust based on Hugging Face Spaces resources)
25
  try:
26
  generator = pipeline("text-generation", model="mistralai/Mistral-7B-Instruct-v0.2", device="cpu")
27
  except Exception as e:
@@ -53,7 +53,7 @@ def generate_script(prompt, custom_text=None):
53
  except Exception as e:
54
  print(f"Error generating script: {e}")
55
 
56
- # Fallback mock response if model fails
57
  if "recetas" in prompt.lower():
58
  return """
59
  1. Tacos al pastor: Jugosa carne marinada con piña.
@@ -75,19 +75,6 @@ async def generate_voice(text, output_file="output.mp3"):
75
  await communicate.save(output_file)
76
  return output_file
77
 
78
- # Generate subtitles
79
- def generate_subtitles(text, duration, fps=24):
80
- words = text.split()
81
- avg_duration = duration / len(words)
82
- subtitles = []
83
- for i, word in enumerate(words):
84
- start_time = i * avg_duration
85
- end_time = (i + 1) * avg_duration
86
- subtitle = TextClip(word, fontsize=30, color='white', bg_color='black', size=(1280, 100), font='Arial')
87
- subtitle = subtitle.set_position(('center', 'bottom')).set_duration(avg_duration).set_fps(fps)
88
- subtitles.append(subtitle)
89
- return subtitles
90
-
91
  # Download and trim video
92
  def download_and_trim_video(url, duration, output_path):
93
  response = requests.get(url, stream=True)
@@ -138,15 +125,11 @@ def create_video(prompt, custom_text, music_file):
138
  if music_file:
139
  music = AudioFileClip(music_file.name)
140
  music = audio_loop(music, duration=video_duration)
141
- final_audio = final_clip.set_audio(music.set_duration(video_duration))
142
  else:
143
- final_audio = final_clip.set_audio(audio)
144
-
145
- # Add subtitles
146
- subtitles = generate_subtitles(script, video_duration)
147
- final_clip = CompositeVideoClip([final_clip] + subtitles)
148
 
149
- # Write final video
150
  final_clip.write_videofile(output_video, codec="libx264", audio_codec="aac", fps=24)
151
 
152
  # Clean up
 
2
  import random
3
  import requests
4
  import gradio as gr
5
+ from moviepy.editor import VideoFileClip, concatenate_videoclips, AudioFileClip, CompositeVideoClip
6
  from moviepy.audio.fx.all import audio_loop
7
  import edge_tts
8
  import asyncio
 
21
  loop.close()
22
  return result
23
 
24
+ # Load local text generation model
25
  try:
26
  generator = pipeline("text-generation", model="mistralai/Mistral-7B-Instruct-v0.2", device="cpu")
27
  except Exception as e:
 
53
  except Exception as e:
54
  print(f"Error generating script: {e}")
55
 
56
+ # Fallback mock response
57
  if "recetas" in prompt.lower():
58
  return """
59
  1. Tacos al pastor: Jugosa carne marinada con piña.
 
75
  await communicate.save(output_file)
76
  return output_file
77
 
 
 
 
 
 
 
 
 
 
 
 
 
 
78
  # Download and trim video
79
  def download_and_trim_video(url, duration, output_path):
80
  response = requests.get(url, stream=True)
 
125
  if music_file:
126
  music = AudioFileClip(music_file.name)
127
  music = audio_loop(music, duration=video_duration)
128
+ final_clip = final_clip.set_audio(music.set_duration(video_duration))
129
  else:
130
+ final_clip = final_clip.set_audio(audio)
 
 
 
 
131
 
132
+ # Write final video (no subtitles to avoid ImageMagick error)
133
  final_clip.write_videofile(output_video, codec="libx264", audio_codec="aac", fps=24)
134
 
135
  # Clean up