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