import os import torch import sys import librosa sys.path.append('../OpenVoice') from openvoice import se_extractor from openvoice.api import ToneColorConverter ckpt_converter = '../OpenVoice/checkpoints_v2/converter' device = "cuda:0" if torch.cuda.is_available() else "cpu" tone_color_converter = ToneColorConverter(f'{ckpt_converter}/config.json', device=device) tone_color_converter.load_ckpt(f'{ckpt_converter}/checkpoint.pth') def convert(source_path, reference_path, output_path): target_se, audio_name = se_extractor.get_se(reference_path, tone_color_converter, vad=False) source_se, audio_name = se_extractor.get_se(source_path, tone_color_converter, vad=False) tone_color_converter.convert( audio_src_path=source_path, src_se=source_se, tgt_se=target_se, output_path=output_path, message="@Myshell",) ref_wav_16k, _ = librosa.load(reference_path, sr=16000) output_wav_16k, _ = librosa.load(output_path, sr=16000) ref_wav_16k = torch.tensor(ref_wav_16k).unsqueeze(0) output_wav_16k = torch.tensor(output_wav_16k).unsqueeze(0) return ref_wav_16k, output_wav_16k