Spaces:
Sleeping
Sleeping
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", "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() |