File size: 3,569 Bytes
5d03fef
 
 
 
4ba75fd
5d03fef
77663a6
5d03fef
 
 
a152a0a
5d03fef
 
 
 
a152a0a
 
5d03fef
 
4ba75fd
 
 
a0f1b34
 
 
 
 
 
5d03fef
 
a0f1b34
5d03fef
 
a152a0a
 
5d03fef
 
a152a0a
 
5d03fef
 
 
 
 
 
 
 
64d0573
 
 
 
 
 
 
 
a0f1b34
5d03fef
4ba75fd
 
 
 
 
 
 
 
 
 
 
 
 
a0f1b34
 
 
 
 
 
 
 
 
 
 
 
 
5d03fef
64d0573
 
 
 
 
 
 
 
 
5d03fef
a152a0a
 
5d03fef
64d0573
 
5d03fef
4ba75fd
5d03fef
4228e0b
5d03fef
 
 
4228e0b
 
 
64d0573
 
 
 
 
 
 
4228e0b
64d0573
4228e0b
64d0573
5d03fef
 
64d0573
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
import gradio as gr
import subprocess
import os

def run_ultrasinger(opt_i, opt_o, mode, whisper_model, language, crepe_model, extra, device):
    # Construct the command based on inputs
    cmd = ["python", "src/UltraSinger.py"]

    # Add options
    if opt_i:
        cmd.extend(["-i", opt_i.name])
    if opt_o:
        cmd.extend(["-o", opt_o])

    # Add mode
    if mode:
        cmd.extend(mode.split())

    # Add transcription options
    if whisper_model:
        cmd.extend(["--whisper", whisper_model])
    if language:
        language_codes = {
            "English": "en", "French": "fr", "German": "de", "Spanish": "es",
            "Italian": "it", "Japanese": "ja", "Chinese": "zh", "Dutch": "nl",
            "Ukrainian": "uk", "Portuguese": "pt"
        }
        cmd.extend(["--language", language_codes[language]])

    # Add pitcher options
    cmd.extend(["--crepe", crepe_model])

    # Add extra options
    if extra:
        cmd.extend(extra.split())

    # Add device options
    if device:
        cmd.extend(device.split())

    # Execute the command
    try:
        result = subprocess.run(cmd, capture_output=True, text=True)
        return result.stdout, result.stderr
    except Exception as e:
        return str(e), "Error occurred during execution"

def load_text_file(file_path):
    try:
        with open(file_path, 'r') as file:
            return file.read()
    except Exception as e:
        return str(e)

# Define Gradio inputs and outputs for UltraSinger
opt_i = gr.File(label="Ultrastar.txt or audio file (.mp3, .wav, YouTube link)")
opt_o = gr.Textbox(label="Output folder")
mode = gr.Dropdown(
    label="Mode options", 
    choices=["default", "-u", "-m", "-s", "-r", "-p"], 
    value="default"
)
whisper_model = gr.Dropdown(
    label="Whisper Model", 
    choices=[
        "tiny", "base", "small", "medium", "large-v1", "large-v2", 
        "tiny.en", "base.en", "small.en", "medium.en"
    ], 
    value="large-v2"
)
language = gr.Dropdown(
    label="Language", 
    choices=[
        "English", "French", "German", "Spanish", "Italian", 
        "Japanese", "Chinese", "Dutch", "Ukrainian", "Portuguese"
    ], 
    value="English"
)
crepe_model = gr.Radio(
    label="Crepe Model", 
    choices=["full", "tiny"], 
    value="full"
)
extra = gr.Textbox(label="Extra options (e.g., --hyphenation True)")
device = gr.Dropdown(
    label="Device options",
    choices=[
        "", "--force_cpu True", "--force_cpu False", 
        "--force_whisper_cpu True", "--force_whisper_cpu False", 
        "--force_crepe_cpu True", "--force_crepe_cpu False"
    ],
    value=""
)

output_text = gr.Textbox(label="Standard Output")
error_text = gr.Textbox(label="Error Output")

# Define Gradio interface for UltraSinger
ultrasinger_tab = gr.Interface(
    fn=run_ultrasinger,
    inputs=[opt_i, opt_o, mode, whisper_model, language, crepe_model, extra, device],
    outputs=[output_text, error_text],
    title="UltraSinger UI",
    description="Upload an Ultrastar.txt or an audio file, set the options, and run UltraSinger."
)

# Load content for Tab 1 and Tab 2
tab1_content = load_text_file("info.txt")
tab2_content = load_text_file("usdb.txt")

# Create Gradio tabs
with gr.Blocks(theme="soft") as demo:
    with gr.Tabs():
        with gr.TabItem("UltraSinger"):
            ultrasinger_tab.render()
        with gr.TabItem("Info"):
            gr.Markdown(tab1_content)
        with gr.TabItem("FOR USDB USERS"):
            gr.Markdown(tab2_content)

# Launch the app
if __name__ == "__main__":
    demo.launch()