Spaces:
Runtime error
Runtime error
import os | |
import subprocess | |
import sys | |
from functools import lru_cache | |
from rvc.lib.tools.prerequisites_download import prequisites_download_pipeline | |
from tts_service.utils import cache_path | |
from tts_service.voices import voice_manager | |
python = sys.executable | |
def import_voice_converter(): | |
from rvc.infer.infer import VoiceConverter | |
return VoiceConverter() | |
# TTS | |
def run_tts_script( | |
tts_text: str, | |
voice_name: str, | |
tts_rate: int, | |
) -> tuple[str, str]: | |
tts_script_path = os.path.join("rvc", "lib", "tools", "tts.py") | |
voice = voice_manager.voices[voice_name] | |
format = "wav" | |
output_tts_path = cache_path(voice.tts, "", tts_rate, tts_text, extension=format) | |
if not os.path.exists(output_tts_path): | |
command_tts = [ | |
*map( | |
str, | |
[ | |
python, | |
tts_script_path, | |
"", # tts_file | |
tts_text, | |
voice.tts, | |
tts_rate, | |
output_tts_path, | |
], | |
), | |
] | |
subprocess.run(command_tts) | |
output_rvc_path = cache_path(voice.tts, voice.name, tts_rate, tts_text, extension=format) | |
if not os.path.exists(output_rvc_path): | |
infer_pipeline = import_voice_converter() | |
infer_pipeline.convert_audio( | |
pitch=voice.pitch, | |
filter_radius=voice.filter_radius, | |
index_rate=voice.index_rate, | |
volume_envelope=voice.rms_mix_rate, | |
protect=voice.protect, | |
hop_length=voice.hop_length, | |
f0_method=voice.f0_method, | |
audio_input_path=str(output_tts_path), | |
audio_output_path=str(output_rvc_path), | |
model_path=voice.model, | |
index_path=voice.index, | |
split_audio=False, | |
f0_autotune=voice.autotune is not None, | |
f0_autotune_strength=voice.autotune, | |
clean_audio=voice.clean is not None, | |
clean_strength=voice.clean, | |
export_format=format.upper(), | |
upscale_audio=voice.upscale, | |
f0_file=None, | |
embedder_model=voice.embedder_model, | |
embedder_model_custom=None, | |
sid=0, | |
formant_shifting=None, | |
formant_qfrency=None, | |
formant_timbre=None, | |
post_process=None, | |
reverb=None, | |
pitch_shift=None, | |
limiter=None, | |
gain=None, | |
distortion=None, | |
chorus=None, | |
bitcrush=None, | |
clipping=None, | |
compressor=None, | |
delay=None, | |
sliders=None, | |
) | |
return "Text synthesized successfully.", str(output_rvc_path) | |
# Prerequisites | |
def run_prerequisites_script( | |
pretraineds_v1_f0: bool, | |
pretraineds_v1_nof0: bool, | |
pretraineds_v2_f0: bool, | |
pretraineds_v2_nof0: bool, | |
models: bool, | |
voices: bool, | |
): | |
prequisites_download_pipeline( | |
pretraineds_v1_f0, | |
pretraineds_v1_nof0, | |
pretraineds_v2_f0, | |
pretraineds_v2_nof0, | |
models, | |
voices, | |
) | |
return "Prerequisites installed successfully." | |