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) print(result) randomnumber = str(random.randint(111111111, 999999999)) paths = [] if stem_count == 2: paths.append(gradio_temp_path + f"/separated_audio/{randomnumber}/accompaniment.wav") paths.append(gradio_temp_path + f"/separated_audio/{randomnumber}/vocals.wav") elif stem_count == 4 or stem_count == 5: paths.append(gradio_temp_path + f"/separated_audio/{randomnumber}/vocals.wav") paths.append(gradio_temp_path + f"/separated_audio/{randomnumber}/drums.wav") paths.append(gradio_temp_path + f"/separated_audio/{randomnumber}/bass.wav") paths.append(gradio_temp_path + f"/separated_audio/{randomnumber}/other.wav") if stem_count == 5: paths.append(gradio_temp_path + f"/separated_audio/{randomnumber}/piano.wav") # Return the audio file paths as a list of Audio components return [gr.Audio(file_path=path) for path in paths] # Define the Gradio interface 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')] ) # Launch the interface iface.launch()