Files
2024-06-03 17:07:19 +02:00
..
2024-06-03 17:07:19 +02:00

Retrieval-based-Voice-Conversion

Un framework de conversión de voz basado en VITS y fácil de usar.

madewithlove


Licence

Discord


Note

Actualmente en desarrollo... Proporcionado como biblioteca y API en rvc

Instalación y uso

Instalación estándar

Primero, cree un directorio en su proyecto. La carpeta assets contendrá los modelos necesarios para la inferencia y el entrenamiento, y la carpeta results contendrá los resultados del entrenamiento.

rvc init

Esto creará la carpeta assets y .env en su directorio de trabajo.

Warning

El directorio debe de estar vacío o sin una carpeta de assets.

Instalación personalizada

Si ya has descargado modelos o deseas cambiar estas configuraciones, edita el archivo .env. Si aún no tienes el archivo .env,

rvc env create

puedes crearlo.

Además, para descargar un modelo, puedes utilizar

rvc dlmodel

o

rvc dlmodel {download_dir}

Finalmente, especifique la ubicación del modelo en el archivo env y estará listo.

Uso de la librería

Inferir un audio

from pathlib import Path

from dotenv import load_dotenv
from scipy.io import wavfile

from rvc.modules.vc.modules import VC


def main():
      vc = VC()
      vc.get_vc("{model.pth}")
      tgt_sr, audio_opt, times, _ = vc.vc_inference(
            1, Path("{InputAudio}")
      )
      wavfile.write("{OutputAudio}", tgt_sr, audio_opt)


if __name__ == "__main__":
      load_dotenv("{envPath}")
      main()

Uso en CLI

Inferir un audio

rvc infer -m {model.pth} -i {input.wav} -o {output.wav}
opción flag  tipo valor por defecto descipción
modelPath -m Path *requerido Ruta del modelo o nombre de archivo (se lee en el directorio establecido en env)
inputPath -i Path *requerido Ruta o carpeta del audio de entrada
outputPath -o Path *requerido Ruta o carpeta del audio de salida
sid -s int 0 ID del Orador/ Cantante
f0_up_key -fu int 0 Transponer (número entero, número de semitonos, subir una octava: 12, bajar una octava: -12)
f0_method -fm str rmvpe Algoritmo de extracción de tono (pm, harvest, crepe, rmvpe)
f0_file -ff Path | None None Archivo de curva F0 (opcional). Un tono por línea. Reemplaza el F0 predeterminado y la modulación de tono.
index_file -if Path | None None Ruta al archivo index de características
index_rate -if float 0.75 Proporción de funciones de búsqueda (controla la fuerza del acento, demasiado alta tiene artifacting)
filter_radius -fr int 3 Si >=3: aplique el filtrado de mediana a los resultados del tono. El valor representa el radio del filtro y puede reducir la respiración
resample_sr -rsr int 0 Vuelva a muestrear el audio de salida en el posprocesamiento hasta la frecuencia de muestreo final. Establecer en 0 para no remuestreo
rms_mix_rate -rmr float 0.25 Ajuste la escala de la envolvente del volumen. Cuanto más cerca de 0, más imita el volumen de las voces originales. Puede ayudar a enmascarar el ruido y hacer que el volumen suene más natural cuando se establece en un nivel relativamente bajo. Más cerca de 1 habrá un volumen más alto y constante
protect -p float 0.33 Proteja las consonantes sordas y los sonidos respiratorios para evitar artefactos como el desgarro en la música electrónica. Establezca en 0.5 para desactivarlo. Disminuya el valor para aumentar la protección, pero puede reducir la precisión de la indexación

Uso de la API

Primero, inicia el servidor.

rvc-api

o

poetry run poe rvc-api

Inferir audio

Obtener como blob
curl -X 'POST' \
      'http://127.0.0.1:8000/inference?res_type=blob' \
      -H 'accept: application/json' \
      -H 'Content-Type: multipart/form-data' \
      -F 'modelpath={model.pth}' \
      -F 'input={input audio path}'
Obtener como json (incluir tiempo)
curl -X 'POST' \
      'http://127.0.0.1:8000/inference?res_type=json' \
      -H 'accept: application/json' \
      -H 'Content-Type: multipart/form-data' \
      -F 'modelpath={model.pth}' \
      -F 'input={input audio path}'

Uso con Docker

Compilar y ejecutar usando el script:

./docker-run.sh

O usar manuálmente:

  1. Compilar:

    docker build -t "rvc" .
    
  2. Ejecutar:

    docker run -it \
      -p 8000:8000 \
      -v "${PWD}/assets/weights:/weights:ro" \
      -v "${PWD}/assets/indices:/indices:ro" \
      -v "${PWD}/assets/audios:/audios:ro" \
      "rvc"
    

Recuerda que los pesos (weights), índices y audios de entrada se almacenan en directorio-actual/assets