Spaces:
Runtime error
Update app.py
Browse files# app_multimodal.py
import gradio as gr
from transformers import pipeline
from moviepy.editor import VideoFileClip, AudioFileClip
# --- Inicializa os modelos ---
tts_model = pipeline(
"text-to-speech",
model="espnet/kan-bayashi_ljspeech_tts_train_conformer_fastspeech2"
)
video_model = pipeline(
"text-to-video",
model="Wan-AI/Wan2.2-T2V-A14B"
)
# --- Função principal ---
def gerar_video_audio(prompt):
# 1. Gera áudio
audio_out = tts_model(prompt)
audio_path = "audio.wav"
with open(audio_path, "wb") as f:
f.write(audio_out["audio"])
# 2. Gera vídeo
video_out = video_model(prompt, max_length=60) # gera até 60 segundos
video_path = "video.mp4"
video_out[0].save(video_path) # salva o vídeo gerado
# 3. Combina áudio e vídeo
video_clip = VideoFileClip(video_path)
audio_clip = AudioFileClip(audio_path)
final_clip = video_clip.set_audio(audio_clip)
final_path = "video_final.mp4"
final_clip.write_videofile(final_path, codec="libx264", audio_codec="aac")
return final_path
# --- Interface Gradio ---
demo = gr.Interface(
fn=gerar_video_audio,
inputs=gr.Textbox(lines=2, placeholder="Digite o texto para gerar vídeo e áudio..."),
outputs=gr.Video(label="Vídeo com Áudio"),
title="Gerador Multimodal de Vídeo + Áudio",
description="Digite um texto e receba um vídeo com a voz gerada pelo modelo TTS."
)
# Lançar a interface
demo.launch()
|
@@ -1,38 +1,14 @@
|
|
|
|
|
| 1 |
import gradio as gr
|
| 2 |
from transformers import pipeline
|
| 3 |
-
|
| 4 |
-
# Função que gera áudio a partir do texto
|
| 5 |
-
def gerar_audio(texto):
|
| 6 |
-
# Carrega o modelo de TTS do Hugging Face
|
| 7 |
-
tts = pipeline("text-to-speech", model="espnet/kan-bayashi_ljspeech_tts_train_conformer_fastspeech2")
|
| 8 |
-
|
| 9 |
-
# Gera o áudio
|
| 10 |
-
audio = tts(texto)
|
| 11 |
-
|
| 12 |
-
# Retorna o áudio para Gradio
|
| 13 |
-
return audio["audio"]
|
| 14 |
-
|
| 15 |
-
# Interface Gradio
|
| 16 |
-
demo = gr.Interface(
|
| 17 |
-
fn=gerar_audio,
|
| 18 |
-
inputs=gr.Textbox(lines=2, placeholder="Digite o texto aqui..."),
|
| 19 |
-
outputs=gr.Audio(label="Áudio Gerado"),
|
| 20 |
-
title="Gerador de Áudio AI",
|
| 21 |
-
description="Digite um texto e o modelo transforma em fala (áudio)."
|
| 22 |
-
)
|
| 23 |
-
|
| 24 |
-
# Lança a interface
|
| 25 |
-
demo.launch()
|
| 26 |
-
# app.py
|
| 27 |
-
import gradio as gr
|
| 28 |
-
from transformers import pipeline
|
| 29 |
-
from moviepy.editor import VideoFileClip, AudioFileClip, CompositeVideoClip
|
| 30 |
|
| 31 |
# --- Inicializa os modelos ---
|
| 32 |
tts_model = pipeline(
|
| 33 |
"text-to-speech",
|
| 34 |
model="espnet/kan-bayashi_ljspeech_tts_train_conformer_fastspeech2"
|
| 35 |
)
|
|
|
|
| 36 |
video_model = pipeline(
|
| 37 |
"text-to-video",
|
| 38 |
model="Wan-AI/Wan2.2-T2V-A14B"
|
|
@@ -45,19 +21,19 @@ def gerar_video_audio(prompt):
|
|
| 45 |
audio_path = "audio.wav"
|
| 46 |
with open(audio_path, "wb") as f:
|
| 47 |
f.write(audio_out["audio"])
|
| 48 |
-
|
| 49 |
# 2. Gera vídeo
|
| 50 |
-
video_out = video_model(prompt, max_length=60)
|
| 51 |
video_path = "video.mp4"
|
| 52 |
video_out[0].save(video_path) # salva o vídeo gerado
|
| 53 |
-
|
| 54 |
# 3. Combina áudio e vídeo
|
| 55 |
video_clip = VideoFileClip(video_path)
|
| 56 |
audio_clip = AudioFileClip(audio_path)
|
| 57 |
final_clip = video_clip.set_audio(audio_clip)
|
| 58 |
-
final_path = "
|
| 59 |
final_clip.write_videofile(final_path, codec="libx264", audio_codec="aac")
|
| 60 |
-
|
| 61 |
return final_path
|
| 62 |
|
| 63 |
# --- Interface Gradio ---
|
|
@@ -69,4 +45,5 @@ demo = gr.Interface(
|
|
| 69 |
description="Digite um texto e receba um vídeo com a voz gerada pelo modelo TTS."
|
| 70 |
)
|
| 71 |
|
| 72 |
-
|
|
|
|
|
|
| 1 |
+
# app_multimodal.py
|
| 2 |
import gradio as gr
|
| 3 |
from transformers import pipeline
|
| 4 |
+
from moviepy.editor import VideoFileClip, AudioFileClip
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 5 |
|
| 6 |
# --- Inicializa os modelos ---
|
| 7 |
tts_model = pipeline(
|
| 8 |
"text-to-speech",
|
| 9 |
model="espnet/kan-bayashi_ljspeech_tts_train_conformer_fastspeech2"
|
| 10 |
)
|
| 11 |
+
|
| 12 |
video_model = pipeline(
|
| 13 |
"text-to-video",
|
| 14 |
model="Wan-AI/Wan2.2-T2V-A14B"
|
|
|
|
| 21 |
audio_path = "audio.wav"
|
| 22 |
with open(audio_path, "wb") as f:
|
| 23 |
f.write(audio_out["audio"])
|
| 24 |
+
|
| 25 |
# 2. Gera vídeo
|
| 26 |
+
video_out = video_model(prompt, max_length=60) # gera até 60 segundos
|
| 27 |
video_path = "video.mp4"
|
| 28 |
video_out[0].save(video_path) # salva o vídeo gerado
|
| 29 |
+
|
| 30 |
# 3. Combina áudio e vídeo
|
| 31 |
video_clip = VideoFileClip(video_path)
|
| 32 |
audio_clip = AudioFileClip(audio_path)
|
| 33 |
final_clip = video_clip.set_audio(audio_clip)
|
| 34 |
+
final_path = "video_final.mp4"
|
| 35 |
final_clip.write_videofile(final_path, codec="libx264", audio_codec="aac")
|
| 36 |
+
|
| 37 |
return final_path
|
| 38 |
|
| 39 |
# --- Interface Gradio ---
|
|
|
|
| 45 |
description="Digite um texto e receba um vídeo com a voz gerada pelo modelo TTS."
|
| 46 |
)
|
| 47 |
|
| 48 |
+
# Lançar a interface
|
| 49 |
+
demo.launch()
|