Spaces:
Runtime error
Runtime error
import gradio as gr | |
import os | |
import random | |
import subprocess | |
def separate_audio(audio_path, stem_count): | |
print(f"{audio_path=}") | |
head, tail = os.path.split(audio_path) | |
gradio_temp_path = head | |
audio_filename = tail.split('.')[0] | |
print(f"{gradio_temp_path=}") | |
print(f"{audio_filename=}") | |
print(f"{stem_count=}") | |
command = f"spleeter separate -p spleeter:{stem_count}stems {audio_path}" | |
command = command.split() | |
print(f"{command=}") | |
result = subprocess.run(command, capture_output=True) | |
print(result) | |
if result.returncode != 0: | |
print(f"Error: {result.stderr}") | |
return [] | |
randomnumber = str(random.randint(111111111, 999999999)) | |
output_folder = f"{gradio_temp_path}/separated_audio/{randomnumber}" | |
os.makedirs(output_folder, exist_ok=True) # Ensure the output directory exists | |
paths = [] | |
stems = ['vocals', 'drums', 'bass', 'other', 'piano'] | |
for i, stem in enumerate(stems[:stem_count]): | |
stem_path = os.path.join(output_folder, f"{stem}.wav") | |
if os.path.exists(stem_path): | |
paths.append((stem.capitalize(), stem_path)) | |
# Return audio components for Gradio interface | |
audio_outputs = [] | |
for label, path in paths: | |
audio_outputs.append(gr.Audio(file=path, label=label)) | |
return audio_outputs | |
iface = gr.Interface( | |
fn=separate_audio, | |
inputs=[gr.Audio(type="filepath"), gr.Radio([2, 4, 5])], | |
outputs=[gr.Audio(label="Accompaniment"), gr.Audio(label="Vocals"), gr.Audio(label="Drums"), gr.Audio(label="Bass"), gr.Audio(label="Other"), gr.Audio(label="Piano")] | |
) | |
iface.launch() | |