Spaces:
Running
Running
Create requisites.py
Browse files- requisites.py +30 -0
requisites.py
ADDED
@@ -0,0 +1,30 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
from moviepy.editor import TextClip, AudioFileClip, CompositeVideoClip
|
2 |
+
import torch
|
3 |
+
import torchaudio
|
4 |
+
from TTS.api import TTS
|
5 |
+
|
6 |
+
# Initialize AI Text-to-Speech (Coqui TTS)
|
7 |
+
tts_model = TTS("tts_models/en/ljspeech/glow-tts").to("cpu")
|
8 |
+
vocoder = "vocoders/en/ljspeech/hifigan_v2"
|
9 |
+
|
10 |
+
def generate_speech(text):
|
11 |
+
"""Convert text to AI-generated speech using Coqui TTS."""
|
12 |
+
audio_path = "output_audio.wav"
|
13 |
+
tts_model.tts_to_file(text=text, file_path=audio_path, speaker_wav=None, vocoder_path=vocoder)
|
14 |
+
return audio_path
|
15 |
+
|
16 |
+
def create_video(text, audio_path):
|
17 |
+
"""Generate a video with text overlay and AI-generated speech."""
|
18 |
+
audio = AudioFileClip(audio_path)
|
19 |
+
duration = audio.duration
|
20 |
+
|
21 |
+
# Create text overlay
|
22 |
+
txt_clip = TextClip(text, fontsize=40, color="white", size=(1280, 720))
|
23 |
+
txt_clip = txt_clip.set_position("center").set_duration(duration)
|
24 |
+
|
25 |
+
# Combine text with audio
|
26 |
+
video = CompositeVideoClip([txt_clip.set_audio(audio)], size=(1280, 720))
|
27 |
+
output_video = "output_video.mp4"
|
28 |
+
video.write_videofile(output_video, fps=24, codec="libx264")
|
29 |
+
|
30 |
+
return output_video
|