artificialguybr commited on
Commit
e1d034f
1 Parent(s): 8b4b52c

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +20 -30
app.py CHANGED
@@ -4,44 +4,34 @@ import torchaudio
4
  from audiocraft.models import MusicGen
5
  from audiocraft.data.audio import audio_write
6
 
7
- # Importação necessária para o funcionamento do modelo e manipulação de áudio
8
  model = MusicGen.get_pretrained('nateraw/musicgen-songstarter-v0.2')
9
- model.set_generation_params(duration=8) # Duração de 8 segundos para a geração
10
 
11
- @spaces.GPU(duration=120) # Decorador para habilitar o uso de GPU
12
- def generate_audio(mode, descriptions=None, melody_path=None):
13
- if mode == 'unconditional':
14
- wav = model.generate_unconditional(4)
15
- elif mode == 'descriptions':
16
- if descriptions is None:
17
- descriptions = ['acoustic, guitar, melody, trap, d minor, 90 bpm']
18
- descriptions = descriptions.split(",") # Converte a string em lista
19
- wav = model.generate(descriptions * 3) # Gera 3 amostras
20
- elif mode == 'melody':
21
- if melody_path is None:
22
- return "Melody path cannot be empty for melody mode."
23
- melody, sr = torchaudio.load(melody_path)
24
- if descriptions is None:
25
- descriptions = ['acoustic, guitar, melody, trap, d minor, 90 bpm']
26
- descriptions = descriptions.split(",") # Converte a string em lista
27
- wav = model.generate_with_chroma(descriptions, melody[None].expand(3, -1, -1), sr)
28
 
29
- # Salva os arquivos de áudio gerados
30
- for idx, one_wav in enumerate(wav):
31
- audio_write(f'output_{idx}.wav', one_wav.cpu(), model.sample_rate,
32
- strategy="loudness", loudness_compressor=True)
33
 
34
- # Retorna os caminhos dos arquivos de áudio gerados
35
- return [f"output_{idx}.wav" for idx in range(len(wav))]
36
 
37
- # Define a interface de usuário com Gradio
38
  iface = gr.Interface(
39
  fn=generate_audio,
40
  inputs=[
41
- gr.Dropdown(['unconditional', 'descriptions', 'melody'], label="Generation Mode"),
42
- gr.Textbox(label="Descriptions (comma-separated, optional)", optional=True),
43
- gr.File(label="Melody File Path (.mp3, optional)", optional=True, type="filepath")],
44
- outputs=gr.File(label="Generated Audio", type="file", multiple=True)
45
  )
46
 
47
  iface.launch()
 
4
  from audiocraft.models import MusicGen
5
  from audiocraft.data.audio import audio_write
6
 
7
+ # Carrega o modelo pré-treinado
8
  model = MusicGen.get_pretrained('nateraw/musicgen-songstarter-v0.2')
9
+ model.set_generation_params(duration=8) # Configura a duração da geração para 8 segundos
10
 
11
+ @spaces.GPU(duration=120) # Habilita o uso de GPU
12
+ def generate_audio(prompt, audio_input=None):
13
+ descriptions = [prompt] # Usa o prompt como descrição
14
+ if audio_input is None:
15
+ # Geração incondicional com descrições
16
+ wav = model.generate(descriptions)
17
+ else:
18
+ # Carrega o áudio de entrada e gera com base nele e nas descrições
19
+ melody, sr = torchaudio.load(audio_input)
20
+ wav = model.generate_with_chroma(descriptions, melody[None], sr)
 
 
 
 
 
 
 
21
 
22
+ # Salva o arquivo de áudio gerado
23
+ output_path = 'generated_audio.wav'
24
+ audio_write(output_path, wav[0].cpu(), model.sample_rate, strategy="loudness", loudness_compressor=True)
 
25
 
26
+ return output_path
 
27
 
28
+ # Cria a interface de usuário com Gradio
29
  iface = gr.Interface(
30
  fn=generate_audio,
31
  inputs=[
32
+ gr.Textbox(label="Prompt", placeholder="Enter a description..."),
33
+ gr.File(label="Audio Input (optional)", type="filepath", optional=True)],
34
+ outputs=gr.File(label="Generated Audio")
 
35
  )
36
 
37
  iface.launch()