File size: 1,561 Bytes
2595db2
7b26bef
720b94c
7b26bef
 
2595db2
4c3d27d
7b26bef
4c3d27d
7b26bef
 
4c3d27d
 
 
7b26bef
 
 
4c3d27d
7b26bef
 
4c3d27d
720b94c
4c3d27d
7b26bef
720b94c
 
4c3d27d
720b94c
 
 
 
4c3d27d
720b94c
4c3d27d
 
 
 
ce3b6b4
4c3d27d
ce3b6b4
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
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"))

    return paths

iface = gr.Interface(
    fn=separate_audio,
    inputs=[gr.Audio(type="filepath"), gr.Radio([2, 4, 5])],
    outputs="text",
)

iface.launch()