fvbarros commited on
Commit
97c9772
·
verified ·
1 Parent(s): 53cc30b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +55 -25
app.py CHANGED
@@ -1,38 +1,68 @@
1
  import gradio as gr
2
  from audiocraft.models import MusicGen, AudioGen
3
  from audiocraft.data.audio import audio_write
4
- import torchaudio
5
  import tempfile
 
 
 
 
 
6
 
7
  # Carregar modelos
8
- musicgen = MusicGen.get_pretrained('facebook/musicgen-small')
9
- audiogen = AudioGen.get_pretrained('facebook/audiogen-medium')
 
 
 
 
 
 
 
10
 
11
- # Definir duração padrão
12
- musicgen.set_generation_params(duration=2)
13
- audiogen.set_generation_params(duration=2)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
14
 
15
  def generate_music(prompt):
16
- print("Gerando música para:", prompt)
17
- wav = musicgen.generate([prompt])[0]
18
- print("Áudio gerado, salvando...")
19
- with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as fp:
20
- audio_write(fp.name, wav.cpu(), musicgen.sample_rate, strategy="loudness", loudness_compressor=True)
21
- print("Arquivo salvo em", fp.name)
22
- return fp.name
23
 
24
  def generate_sound_effect(prompt):
25
- print("Gerando som para:", prompt)
26
- wav = audiogen.generate([prompt])[0]
27
- print("Som gerado, salvando...")
28
- with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as fp:
29
- audio_write(fp.name, wav.cpu(), audiogen.sample_rate, strategy="loudness", loudness_compressor=True)
30
- print("Arquivo salvo em", fp.name)
31
- return fp.name
32
 
33
- music_interface = gr.Interface(fn=generate_music, inputs=gr.Text(label="Prompt para música"), outputs=gr.Audio(type="filepath"), title="🎵 MusicGen")
34
- sound_interface = gr.Interface(fn=generate_sound_effect, inputs=gr.Text(label="Prompt para efeito sonoro"), outputs=gr.Audio(type="filepath"), title="🔊 AudioGen")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
35
 
36
- # Interface combinada
37
- demo = gr.TabbedInterface([music_interface, sound_interface], ["MusicGen", "AudioGen"])
38
- demo.launch()
 
1
  import gradio as gr
2
  from audiocraft.models import MusicGen, AudioGen
3
  from audiocraft.data.audio import audio_write
 
4
  import tempfile
5
+ import torch
6
+
7
+ # Verificar se há GPU disponível
8
+ device = "cuda" if torch.cuda.is_available() else "cpu"
9
+ print(f"Usando dispositivo: {device}")
10
 
11
  # Carregar modelos
12
+ try:
13
+ musicgen = MusicGen.get_pretrained('facebook/musicgen-small').to(device)
14
+ audiogen = AudioGen.get_pretrained('facebook/audiogen-medium').to(device)
15
+ # Definir duração padrão
16
+ musicgen.set_generation_params(duration=5) # Aumentei para 5 segundos
17
+ audiogen.set_generation_params(duration=5)
18
+ except Exception as e:
19
+ print(f"Erro ao carregar modelos: {e}")
20
+ raise
21
 
22
+ def generate_audio(prompt, model, model_name):
23
+ try:
24
+ print(f"Gerando {model_name} para:", prompt)
25
+ wav = model.generate([prompt])[0]
26
+ print("Áudio gerado, salvando...")
27
+ with tempfile.NamedTemporaryFile(delete=False, suffix=".wav") as fp:
28
+ audio_write(
29
+ fp.name,
30
+ wav.cpu(),
31
+ model.sample_rate,
32
+ strategy="loudness",
33
+ loudness_compressor=True
34
+ )
35
+ print(f"Arquivo {model_name} salvo em", fp.name)
36
+ return fp.name
37
+ except Exception as e:
38
+ print(f"Erro ao gerar {model_name}: {e}")
39
+ raise
40
 
41
  def generate_music(prompt):
42
+ return generate_audio(prompt, musicgen, "música")
 
 
 
 
 
 
43
 
44
  def generate_sound_effect(prompt):
45
+ return generate_audio(prompt, audiogen, "efeito sonoro")
 
 
 
 
 
 
46
 
47
+ # Configuração da interface
48
+ with gr.Blocks() as demo:
49
+ gr.Markdown("# 🎵 Gerador de Áudio com MusicGen e AudioGen")
50
+ with gr.Tabs():
51
+ with gr.TabItem("MusicGen 🎵"):
52
+ gr.Markdown("## Gerar Música")
53
+ with gr.Row():
54
+ music_input = gr.Text(label="Descreva a música que deseja")
55
+ music_output = gr.Audio(label="Música Gerada", type="filepath")
56
+ music_button = gr.Button("Gerar Música")
57
+ music_button.click(fn=generate_music, inputs=music_input, outputs=music_output)
58
+
59
+ with gr.TabItem("AudioGen 🔊"):
60
+ gr.Markdown("## Gerar Efeitos Sonoros")
61
+ with gr.Row():
62
+ sound_input = gr.Text(label="Descreva o efeito sonoro que deseja")
63
+ sound_output = gr.Audio(label="Som Gerado", type="filepath")
64
+ sound_button = gr.Button("Gerar Som")
65
+ sound_button.click(fn=generate_sound_effect, inputs=sound_input, outputs=sound_output)
66
 
67
+ if __name__ == "__main__":
68
+ demo.launch()