import gradio as gr from utils.hparams import hparams from preprocessing.data_gen_utils import get_pitch_parselmouth,get_pitch_crepe import numpy as np import matplotlib.pyplot as plt import IPython.display as ipd import utils import librosa import torchcrepe from infer import * import logging from infer_tools.infer_tool import * import io import tempfile ##Render function def render_audio(audio_file): print(audio_file) print(ckpt) print(yaml) ############ logging.getLogger('numba').setLevel(logging.WARNING) # 工程文件夹名,训练时用的那个 project_name = "Unnamed" model_path = ckpt config_path= yaml hubert_gpu=True svc_model = Svc(project_name,config_path,hubert_gpu, model_path) print('model loaded') wav_fn = audio_file demoaudio, sr = librosa.load(wav_fn) key = -8 # 音高调整,支持正负(半音) # 加速倍数 pndm_speedup = 20 wav_gen='queeeeee.wav'#直接改后缀可以保存不同格式音频,如flac可无损压缩 f0_tst, f0_pred, audio = run_clip(svc_model,file_path=wav_fn, key=key, acc=pndm_speedup, use_crepe=True, use_pe=True, thre=0.05, use_gt_mel=False, add_noise_step=500,project_name=project_name,out_path=wav_gen) ############################################ #Transform ckpt binary into .ckpt def transform_binary(ckpt_file): # Create a temporary file and write the binary contents to it temp_file = tempfile.NamedTemporaryFile(suffix='.ckpt', delete=False) temp_file.write(ckpt_file) print("CKPT Path is:", temp_file.name) global ckpt ckpt = temp_file.name print(ckpt) print(ckpt) print(ckpt) return temp_file.name #Transform yaml binary into .yaml def transform_binary2(yaml_file): # Create a temporary file and write the binary contents to it temp_file = tempfile.NamedTemporaryFile(suffix='.yaml', delete=False) temp_file.write(yaml_file) print("YAML Path is:", temp_file.name) global yaml yaml = temp_file.name print(yaml) print(yaml) return temp_file.name #Play audio def play(audio_file): print(audio_file) upload_input = gr.inputs.File() output_label = gr.outputs.Label() demo = gr.Blocks() with demo: gr.Markdown("# **
DIFF-SVC Inference
**") gr.Markdown( """Render whatever model you want with this space!
""" ) ckpt_file = gr.File(label= 'Load your CKPT', type="binary") yaml_file = gr.File(label= 'Load your YAML', type="binary") audio_file = gr.Audio(label = 'Load your WAV', type="filepath") #Button 1 b1 = gr.Button("Decompile CKPT") b1.click(transform_binary, inputs=ckpt_file) #Button 2 b2 = gr.Button("Decompile YAML") b2.click(transform_binary2, inputs=yaml_file) #Button 4 b4 = gr.Button("Render") b4.click(fn=render_audio, inputs=[audio_file]) def spam(): print(yaml) print(ckpt) #b5 = gr.Button("SPAM ME") #b5.click(fn=spam) demo.launch(share=True)