Spaces:
Running
Running
File size: 3,163 Bytes
645c216 015a5f1 645c216 015a5f1 645c216 8fe2bf8 645c216 8fe2bf8 645c216 8fe2bf8 645c216 5459d70 645c216 5459d70 645c216 5459d70 645c216 |
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 |
import gradio as gr
import zipfile
import os
import tempfile
import shutil
from infer.modules.train.preprocess import PreProcess, preprocess_trainset
from infer.modules.train.extract.extract_f0_rmvpe import FeatureInput
from zero import zero
def extract_audio_files(zip_file: str, target_dir: str) -> list[str]:
with zipfile.ZipFile(zip_file, "r") as zip_ref:
zip_ref.extractall(target_dir)
audio_files = [
os.path.join(target_dir, f)
for f in os.listdir(target_dir)
if f.endswith((".wav", ".mp3", ".ogg"))
]
if not audio_files:
raise gr.Error("No audio files found at the top level of the zip file")
return audio_files
def train_rvc_model(audio_files: list[str]) -> str:
return "model_path"
def preprocess(zip_file: str) -> str:
temp_dir = tempfile.mkdtemp()
print(f"Using exp dir: {temp_dir}")
data_dir = os.path.join(temp_dir, "_data")
os.makedirs(data_dir)
audio_files = extract_audio_files(zip_file, data_dir)
pp = PreProcess(48000, temp_dir, 3.0, False)
pp.pipeline_mp_inp_dir(data_dir, 4)
pp.logfile.seek(0)
log = pp.logfile.read()
return temp_dir, f"Preprocessed {len(audio_files)} audio files.\n{log}"
def download_expdir(exp_dir: str) -> str:
shutil.make_archive(exp_dir, "zip", exp_dir)
return f"{exp_dir}.zip"
@zero(duration=120)
def extract_features(exp_dir: str) -> str:
err = None
fi = FeatureInput(exp_dir)
try:
fi.run()
except Exception as e:
err = e
fi.logfile.seek(0)
log = fi.logfile.read()
if err:
log = f"Error: {err}\n{log}"
return log
with gr.Blocks() as app:
with gr.Row():
with gr.Column():
zip_file = gr.File(
label="Upload a zip file containing audio files for training",
file_types=["zip"],
)
exp_dir = gr.Textbox(label="Experiment directory", visible=True)
preprocess_btn = gr.Button(value="Preprocess", variant="primary")
with gr.Column():
preprocess_output = gr.Textbox(label="Preprocessing output", lines=5)
with gr.Row():
with gr.Column():
extract_features_btn = gr.Button(
value="Extract features", variant="primary"
)
with gr.Column():
extract_features_output = gr.Textbox(
label="Feature extraction output", lines=5
)
with gr.Row():
with gr.Column():
download_expdir_btn = gr.Button(
value="Download experiment directory", variant="primary"
)
with gr.Column():
download_expdir_output = gr.File(label="Download experiment directory")
preprocess_btn.click(
fn=preprocess,
inputs=[zip_file],
outputs=[exp_dir, preprocess_output],
)
extract_features_btn.click(
fn=extract_features,
inputs=[exp_dir],
outputs=[extract_features_output],
)
download_expdir_btn.click(
fn=download_expdir,
inputs=[exp_dir],
outputs=[download_expdir_output],
)
app.launch()
|