Spaces:
Running
on
Zero
Running
on
Zero
Commit
·
3c1e68c
1
Parent(s):
40a916f
gary on gary
Browse files
app.py
CHANGED
|
@@ -11,6 +11,7 @@ from audiocraft.data.audio import audio_write
|
|
| 11 |
from pydub import AudioSegment
|
| 12 |
import spaces
|
| 13 |
import tempfile
|
|
|
|
| 14 |
|
| 15 |
# Check if CUDA is available
|
| 16 |
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
|
@@ -198,7 +199,7 @@ def continue_music(input_audio_path, prompt_duration, musicgen_model, num_iterat
|
|
| 198 |
# Prepare the audio slice for generation
|
| 199 |
prompt_waveform = preprocess_audio(prompt_waveform)
|
| 200 |
|
| 201 |
-
# Load the model and set generation parameters
|
| 202 |
model_continue = MusicGen.get_pretrained(musicgen_model.split(" ")[0])
|
| 203 |
model_continue.set_generation_params(
|
| 204 |
use_sampling=True,
|
|
@@ -209,32 +210,39 @@ def continue_music(input_audio_path, prompt_duration, musicgen_model, num_iterat
|
|
| 209 |
cfg_coef=3
|
| 210 |
)
|
| 211 |
|
| 212 |
-
|
|
|
|
|
|
|
|
|
|
| 213 |
for i in range(num_iterations):
|
| 214 |
output = model_continue.generate_continuation(prompt_waveform, prompt_sample_rate=sr, progress=True)
|
| 215 |
-
output = output.cpu() #
|
| 216 |
if len(output.size()) > 2:
|
| 217 |
output = output.squeeze()
|
| 218 |
|
| 219 |
filename_without_extension = f'continue_{i}'
|
| 220 |
filename_with_extension = f'{filename_without_extension}.wav'
|
|
|
|
|
|
|
| 221 |
audio_write(filename_with_extension, output, model_continue.sample_rate, strategy="loudness", loudness_compressor=True)
|
| 222 |
-
|
|
|
|
|
|
|
| 223 |
|
| 224 |
-
# Combine all audio files
|
| 225 |
-
combined_audio =
|
| 226 |
-
for filename in all_audio_files:
|
| 227 |
-
combined_audio += AudioSegment.from_wav(filename)
|
| 228 |
|
| 229 |
combined_audio_filename = f"combined_audio_{random.randint(1, 10000)}.mp3"
|
| 230 |
combined_audio.export(combined_audio_filename, format="mp3")
|
| 231 |
|
| 232 |
-
# Clean up temporary files
|
| 233 |
-
for
|
| 234 |
-
os.remove(
|
| 235 |
|
| 236 |
return combined_audio_filename
|
| 237 |
|
|
|
|
|
|
|
| 238 |
# Define the expandable sections
|
| 239 |
musiclang_blurb = """
|
| 240 |
## musiclang
|
|
@@ -289,9 +297,9 @@ with gr.Blocks() as iface:
|
|
| 289 |
], value="thepatch/vanya_ai_dnb_0.1 (small)")
|
| 290 |
num_iterations = gr.Slider(label="Number of Iterations", minimum=1, maximum=3, step=1, value=3)
|
| 291 |
generate_music_button = gr.Button("Generate Music")
|
| 292 |
-
output_audio = gr.Audio(label="Generated Music")
|
| 293 |
continue_button = gr.Button("Continue Generating Music")
|
| 294 |
-
continue_output_audio = gr.Audio(label="Continued Music Output")
|
| 295 |
|
| 296 |
# Connecting the components
|
| 297 |
generate_midi_button.click(generate_midi, inputs=[seed, use_chords, chord_progression, bpm], outputs=[midi_audio])
|
|
|
|
| 11 |
from pydub import AudioSegment
|
| 12 |
import spaces
|
| 13 |
import tempfile
|
| 14 |
+
from pydub import AudioSegment
|
| 15 |
|
| 16 |
# Check if CUDA is available
|
| 17 |
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
|
|
|
|
| 199 |
# Prepare the audio slice for generation
|
| 200 |
prompt_waveform = preprocess_audio(prompt_waveform)
|
| 201 |
|
| 202 |
+
# Load the model and set generation parameters
|
| 203 |
model_continue = MusicGen.get_pretrained(musicgen_model.split(" ")[0])
|
| 204 |
model_continue.set_generation_params(
|
| 205 |
use_sampling=True,
|
|
|
|
| 210 |
cfg_coef=3
|
| 211 |
)
|
| 212 |
|
| 213 |
+
original_audio = AudioSegment.from_mp3(input_audio_path)
|
| 214 |
+
all_audio_files = [original_audio] # Start with the original audio
|
| 215 |
+
file_paths_for_cleanup = [] # List to track generated file paths for cleanup
|
| 216 |
+
|
| 217 |
for i in range(num_iterations):
|
| 218 |
output = model_continue.generate_continuation(prompt_waveform, prompt_sample_rate=sr, progress=True)
|
| 219 |
+
output = output.cpu() # Move the output tensor back to CPU
|
| 220 |
if len(output.size()) > 2:
|
| 221 |
output = output.squeeze()
|
| 222 |
|
| 223 |
filename_without_extension = f'continue_{i}'
|
| 224 |
filename_with_extension = f'{filename_without_extension}.wav'
|
| 225 |
+
correct_filename_extension = f'{filename_without_extension}.wav.wav' # Apply the workaround for audio_write
|
| 226 |
+
|
| 227 |
audio_write(filename_with_extension, output, model_continue.sample_rate, strategy="loudness", loudness_compressor=True)
|
| 228 |
+
new_audio_segment = AudioSegment.from_wav(correct_filename_extension)
|
| 229 |
+
all_audio_files.append(new_audio_segment)
|
| 230 |
+
file_paths_for_cleanup.append(correct_filename_extension) # Add to cleanup list
|
| 231 |
|
| 232 |
+
# Combine all audio files into one continuous segment
|
| 233 |
+
combined_audio = sum(all_audio_files)
|
|
|
|
|
|
|
| 234 |
|
| 235 |
combined_audio_filename = f"combined_audio_{random.randint(1, 10000)}.mp3"
|
| 236 |
combined_audio.export(combined_audio_filename, format="mp3")
|
| 237 |
|
| 238 |
+
# Clean up temporary files using the list of file paths
|
| 239 |
+
for file_path in file_paths_for_cleanup:
|
| 240 |
+
os.remove(file_path)
|
| 241 |
|
| 242 |
return combined_audio_filename
|
| 243 |
|
| 244 |
+
|
| 245 |
+
|
| 246 |
# Define the expandable sections
|
| 247 |
musiclang_blurb = """
|
| 248 |
## musiclang
|
|
|
|
| 297 |
], value="thepatch/vanya_ai_dnb_0.1 (small)")
|
| 298 |
num_iterations = gr.Slider(label="Number of Iterations", minimum=1, maximum=3, step=1, value=3)
|
| 299 |
generate_music_button = gr.Button("Generate Music")
|
| 300 |
+
output_audio = gr.Audio(label="Generated Music", type="filepath")
|
| 301 |
continue_button = gr.Button("Continue Generating Music")
|
| 302 |
+
continue_output_audio = gr.Audio(label="Continued Music Output", type="filepath")
|
| 303 |
|
| 304 |
# Connecting the components
|
| 305 |
generate_midi_button.click(generate_midi, inputs=[seed, use_chords, chord_progression, bpm], outputs=[midi_audio])
|