File size: 1,766 Bytes
2595db2
7b26bef
720b94c
7b26bef
 
2595db2
4c3d27d
7b26bef
4c3d27d
7b26bef
 
4c3d27d
 
 
7b26bef
 
 
4c3d27d
7b26bef
 
4c3d27d
720b94c
4c3d27d
7b26bef
720b94c
 
4c3d27d
720b94c
 
 
 
4c3d27d
720b94c
4c3d27d
91ec1ca
 
 
 
4c3d27d
 
ce3b6b4
91ec1ca
 
4c3d27d
2595db2
4c3d27d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
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(('Accompaniment', f"{gradio_temp_path}/separated_audio/{randomnumber}/accompaniment.wav"))
        paths.append(('Vocals', f"{gradio_temp_path}/separated_audio/{randomnumber}/vocals.wav"))
    elif stem_count == 4 or stem_count == 5:
        paths.append(('Vocals', f"{gradio_temp_path}/separated_audio/{randomnumber}/vocals.wav"))
        paths.append(('Drums', f"{gradio_temp_path}/separated_audio/{randomnumber}/drums.wav"))
        paths.append(('Bass', f"{gradio_temp_path}/separated_audio/{randomnumber}/bass.wav"))
        paths.append(('Other', f"{gradio_temp_path}/separated_audio/{randomnumber}/other.wav"))
        if stem_count == 5:
            paths.append(('Piano', f"{gradio_temp_path}/separated_audio/{randomnumber}/piano.wav"))

    audio_outputs = []
    for label, filepath in paths:
        audio_outputs.append(gr.outputs.Audio(filepath, label=label))
    return audio_outputs

iface = gr.Interface(
    fn=separate_audio,
    inputs=[gr.Audio(type="filepath"), gr.Radio([2, 4, 5], label="Number of Stems")],
    outputs="text",  # Changed to "text" temporarily for testing
)

iface.launch()