Spaces:
Runtime error
Runtime error
File size: 1,613 Bytes
4a94250 |
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 |
import torch
import librosa
import numpy as np
import soundfile as sf
import argparse
import os
def load_rvc_model(model_path):
"""Load the RVC voice conversion model."""
if not os.path.exists(model_path):
raise FileNotFoundError(f"Model not found: {model_path}")
model = torch.load(model_path, map_location="cuda" if torch.cuda.is_available() else "cpu")
model.eval()
return model
def convert_voice(input_audio, output_audio, model_path, index_path, pitch_shift=0):
"""Convert input audio using RVC."""
model = load_rvc_model(model_path)
audio, sr = librosa.load(input_audio, sr=44100)
# Apply conversion
audio = torch.tensor(audio, dtype=torch.float32).unsqueeze(0)
with torch.no_grad():
converted_audio = model(audio) # Convert using RVC model
# Save output
sf.write(output_audio, converted_audio.numpy().squeeze(), sr)
print(f"Converted voice saved to {output_audio}")
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("--input", required=True, help="Input TTS audio file")
parser.add_argument("--output", required=True, help="Output converted audio file")
parser.add_argument("--model", required=True, help="Path to RVC model (e.g., zeldabotw.pth)")
parser.add_argument("--index", required=True, help="Path to RVC index file (e.g., zeldabotw.index)")
parser.add_argument("--pitch_shift", type=int, default=0, help="Pitch shift value")
args = parser.parse_args()
convert_voice(args.input, args.output, args.model, args.index, args.pitch_shift)
|