Spaces:
Sleeping
Sleeping
File size: 4,207 Bytes
5d03fef a5e574f 5d03fef ccd7ab6 5d03fef a5e574f 5d03fef a5e574f 5d03fef a5e574f 5d03fef a5e574f 5d03fef 4ba75fd a0f1b34 5d03fef a0f1b34 5d03fef a152a0a 5d03fef a152a0a 5d03fef a5e574f 5d03fef 64d0573 a5e574f 5d03fef a5e574f 4ba75fd a5e574f 4ba75fd a0f1b34 5d03fef 64d0573 5d03fef a152a0a 5d03fef 64d0573 5d03fef a5e574f 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 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 |
import gradio as gr
import subprocess
def run_ultrasinger(opt_i, youtube_link, opt_o, mode, whisper_model, language, crepe_model, extra, device):
# Construct the command based on inputs
cmd = ["python", "src/UltraSinger.py"]
# Add input option
if opt_i:
cmd.extend(["-i", f'"{opt_i.name}"'])
elif youtube_link:
cmd.extend(["-i", f'"{youtube_link}"'])
else:
return "Error: No input file or YouTube link provided", ""
# Add output folder option
if opt_o:
cmd.extend(["-o", f'"{opt_o}"'])
# Add mode
if mode != "default":
mode_flags = {
"Create Ultrastar txt file": "-u",
"Create MIDI file": "-m",
"Create sheet file": "-s"
}
cmd.append(mode_flags[mode])
# 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())
# Debug: Print the command to check if it's constructed correctly
print("Running command:", ' '.join(cmd))
# 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 = gr.Textbox(label="YouTube Link", placeholder="Enter YouTube URL here")
opt_o = gr.Textbox(label="Output folder")
mode = gr.Radio(
label="Mode options",
choices=[
"default", "Create Ultrastar txt file", "Create MIDI file",
"Create sheet file"
],
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, youtube_link, 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() |