|
import json |
|
import os |
|
import tempfile |
|
from pathlib import Path |
|
|
|
import gradio as gr |
|
from huggingface_hub import duplicate_space, upload_folder, login |
|
|
|
|
|
def configure_training(this_space_id, csv_data, character, do_extract_vocals=False): |
|
character = character.strip().replace('-', '').replace('_', '').replace(" ", "").lower() |
|
ds_cfg = { |
|
"character": character, |
|
"do_extract_vocals": do_extract_vocals, |
|
} |
|
with tempfile.TemporaryDirectory() as tempdir: |
|
temp_path = Path(tempdir) |
|
(temp_path / 'data.csv').write_text(csv_data) |
|
(temp_path / 'dataset_config.json').write_text(json.dumps(ds_cfg, indent=2, sort_keys=False)) |
|
upload_folder(repo_id=this_space_id, folder_path=tempdir, path_in_repo=".", repo_type="space") |
|
print("Would normally upload here!") |
|
print(list(temp_path.glob("*"))) |
|
return "OK! Rebooting here in a sec to start training" |
|
|
|
description = """ |
|
Configure training session for voice cloning. |
|
|
|
Please provide a CSV containing YouTube IDs, start times, and end times that we can use to gather the dataset for you. |
|
|
|
It should look like this: |
|
|
|
``` |
|
ytid,start,end |
|
YYiQxHM0L-w,300,660 |
|
Ga-CcToGiUM,3105,3300 |
|
``` |
|
""" |
|
|
|
if os.environ.get("HF_TOKEN", None) is not None: |
|
login(os.environ.get("HF_TOKEN")) |
|
interface = gr.Interface( |
|
configure_training, |
|
inputs=[ |
|
gr.Textbox(label="This Space's Repo ID", info="The repo ID of this space (ex. nateraw/voice-cloning-training-ui)."), |
|
gr.TextArea(value="ytid,start,end\n", label="CSV Data", max_lines=50), |
|
gr.Textbox(placeholder="Name of character that you're cloning."), |
|
gr.Checkbox( |
|
False, |
|
label="Isolate Vocals", |
|
info="If checked, we use demucs to isolate vocals from each audio file. You want to use this if the provided clips contain background music" |
|
) |
|
], |
|
outputs="text", |
|
title="Configure Training Session", |
|
description=description, |
|
) |
|
else: |
|
with gr.Blocks() as interface: |
|
gr.Markdown(""" |
|
## Please Set The HF_TOKEN Environment Variable |
|
|
|
Go to the settings tab of this space and add a new environment variable named `HF_TOKEN` with its value being **a token with write access** from [here](https://hf.co/settings/tokens). |
|
""") |
|
|
|
|
|
if __name__ == '__main__': |
|
interface.launch() |