| import torch, pdb, os,sys,librosa,warnings,traceback | |
| warnings.filterwarnings("ignore") | |
| torch.manual_seed(114514) | |
| sys.path.append(os.getcwd()) | |
| from config import inp_root,opt_root,f0_up_key,person,is_half,device | |
| os.makedirs(opt_root,exist_ok=True) | |
| import soundfile as sf | |
| from infer_pack.models import SynthesizerTrnMs256NSF as SynthesizerTrn256 | |
| from scipy.io import wavfile | |
| from fairseq import checkpoint_utils | |
| import scipy.signal as signal | |
| from vc_infer_pipeline import VC | |
| models, saved_cfg, task = checkpoint_utils.load_model_ensemble_and_task(["hubert_base.pt"],suffix="",) | |
| model = models[0] | |
| model = model.to(device) | |
| if(is_half):model = model.half() | |
| else:model = model.float() | |
| model.eval() | |
| cpt=torch.load(person,map_location="cpu") | |
| dv=cpt["dv"] | |
| tgt_sr=cpt["config"][-1] | |
| net_g = SynthesizerTrn256(*cpt["config"],is_half=is_half) | |
| net_g.load_state_dict(cpt["weight"],strict=True) | |
| net_g.eval().to(device) | |
| if(is_half):net_g = net_g.half() | |
| else:net_g = net_g.float() | |
| vc=VC(tgt_sr,device,is_half) | |
| for name in os.listdir(inp_root): | |
| try: | |
| wav_path="%s\%s"%(inp_root,name) | |
| print("processing %s"%wav_path) | |
| audio, sampling_rate = sf.read(wav_path) | |
| if len(audio.shape) > 1: | |
| audio = librosa.to_mono(audio.transpose(1, 0)) | |
| if sampling_rate != vc.sr: | |
| audio = librosa.resample(audio, orig_sr=sampling_rate, target_sr=vc.sr) | |
| times = [0, 0, 0] | |
| audio_opt=vc.pipeline(model,net_g,dv,audio,times,f0_up_key,f0_file=None) | |
| wavfile.write("%s/%s"%(opt_root,name), tgt_sr, audio_opt) | |
| except: | |
| traceback.print_exc() | |
| print(times) | |