Tutorial: Clonando voces con IA | so-vits-svc

  • Autor Autor gabrielher
  • Fecha de inicio Fecha de inicio
gabrielher

gabrielher

No recomendado
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
Verificado por Binance
Creo que nadie ha publicado una guía sobre como hacerlo, se que hay vídeos, etc, pero aquí voy a hacer una pequeña guía de como entrenar esta IA para generar la voz de quien tu quieras y ponerlo a cantar, como tan de moda se ha puesto estas últimas semanas.

Con esta guía se pueden obtener resultados como los tan famosos de xokas, o uno de muestra que he entrenado yo:



Disclaimer: Guía en proceso de construcción y mejora. De momento sin capturas.

Qué vamos a utilizar?
so-vits-svc-fork

Es una versión más simple de utilizar de so-vits-svc, que incluye una interfaz gráfica (que no es necesaria) y unos scripts más sencillos de utilizar a la hora de preparar los datos.


Requisitos:

  • Esta guía se enfoca en Windows, en Linux será muy parecido, pero la instalación será algo diferente.
  • Gráfica NVIDIA. Si no, vas a tardar 3 semanas en ver algun resultado decente.
  • Programa para separar las voces del resto de sonidos (Por ejemplo, Ultimate Vocal Remover 5)

Entrenamiento:
  • Gráfica con al menos 6GB de VRAM, puede funcionar con 4GB, pero las velocidades que se van a conseguir son realmente bajas. Pero si tienes >=10GB, mucho mejor.
  • Entre 100 y 200 audios de entre 5 y 10 segundos, de la voz que queremos entrenar. Que hable solo esa voz y cuanto más limpio sean los audios, mejor. Es decir, que no corte palabras al final, que no se oigan ruidos de fondo, etc.

Inferencia:
- Aquí es un poco más bajo y con 4GB de VRAM ya puedes ejecutar el modelo sin mucho problema.



Instalación:

La instalación es bastante sencilla, descargamos este archivo:


Preparación de los datos:

Aquí cada uno tendrá que hacer su trabajo de campo, buscando un audio en el que se oiga la voz correctamente, limpiarlo, trocearlo.

Para ello, un posible flujo es: Descargar un video de youtube donde hable, pasarlo por el Ultimate Vocal Remover para eliminar musicas y sonidos que no sean la voz y una vez tenemos el audio, recortarlo en trozos, con Adobe Audition o Audacity, por ejemplo.

El objetivo es acabar teniendo entre 100 y 150 audios de entre 5 y 10 segundos. Muy importante respetar estas duraciones.


Entrenando la IA:

NOTA: Cuando algo esta entre {}, como {voz}, significa que se reemplace por un texto, como por ejemplo el nombre de la persona. Asi proyecto-{voz}, podria ser proyecto-ilitri.

Una vez tenemos todo instalado y los audios preparados podemos empezar a entrenar nuestro modelo.

Para ello, creamos una carpeta, podemos llamarla proyecto-{voz}.

Dentro de esta carpeta, crearemos otra llamada dataset_raw. Y dentro de dataset_raw, otra con el nombre de la voz.

Así deberiamos tener proyecto-{voz}/dataset_raw/{voz}

Ahora abrimos una terminal en la carpeta proyecto-{voz}, y empezaremos a hacer los pasos previos al entreno.

Ejecutaremos los comandos, uno por uno, cuando acabe el anterior:

Cita:
svc pre-resample

svc pre-config

svc pre-hubert -fm crepe

Ahora, en la carpeta proyecto-{voz}, veremos que además de dataset_raw que habiamos creado, se han generado otras muchas carpetas.

Nos interesa configs. Entramos dentro, hasta encontrar un archivo llamado config.json.

Este es el archivo que controla cómo se entrena el modelo. Lo principal son los campos "epochs" y "batch_size".

Abrimos el archivo config.json.

Por el momento vamos a cambiar el batch size a "auto", guardamos.

Ahora en la terminal que teniamos abierta de antes, comenzamos a entrenar:

Cita:

svc train -t

Ahora tenemos que ver entre todo el texto que sale que batch_size va utilizando. Si sale algun error y se rompe, deberemos ir cambiando el batch_size manualmente. Comenzando por ejemplo en 16, y bajando. Este valor dependerá de la memoria. Con una gráfica de 6GB y alrededor de 150 audios de 7 segundos, el batch que funciona son 6. Con más memoria, podria aumentarse. Cuestión de ir probando.

Una vez encontrado el batch_size, podemos cambiar los epochs a entrenar. Los epochs son la cantidad de "entrenos" a realizar.

Por lo general, empezaremos a ver resultados decentes a partir del step 25000. Para traducir esto al epoch, aplicamos la siguiente formula: epochs = 25000 / (num_audios / batch_size)

Ya aquí solo queda esperar.

Si quieres pausar el entrenamiento, pulsando control + c se para, y luego volviendo a ejecutar svc train -t se reanuda por el último checkpoint que haya guardado.


Inferencia (Generando audios):

La inferencia, por suerte, es bastante más sencilla que el entrenamiento.

Necesitamos el audio en el que queramos sustituir la voz por la de nuestra IA y ejecutarla. En unos segundos tendremos el resultado.

Para ello, elegimos el audio que queramos sustituir, lo pasamos por el Ultimate Vocal Remove (u otra herramienta que haga lo mismo), y colocamos el archivo que genere ese programa en la carpeta proyecto-{voz}.

Ahora ejecutamos en la terminal:

svc infer {voz} -fm crepe-tiny {archivo_de_voz}.wav

Finalmente, al terminar, encontraremos en la misma carpeta un nuevo archivo llamado {archivo_de_voz}.out.wav

Espero que a alguien le sirva. La guia esta todavía en proceso de construccion. Fallos, mejoras, etc, se iran corrigiendo.

Preguntas por mensaje 🙂
 
muchas gracias por el gran aporte la verdad es de gran utilidad saber manejar ese tipo de IA aun que tengo una duda cuanto tardaría en tener un resultado decente con las opciones de pc que menciona
 
No puedes mostrar alguna muestra de lo que has logrado con este tutorial hermano? Sería interesante escuchar. Gracias por el tutorial, sigo tema para ver resultados posteriores. Saludos.
 
muchas gracias por el gran aporte la verdad es de gran utilidad saber manejar ese tipo de IA aun que tengo una duda cuanto tardaría en tener un resultado decente con las opciones de pc que menciona
Aprox 1 dia

No puedes mostrar alguna muestra de lo que has logrado con este tutorial hermano? Sería interesante escuchar. Gracias por el tutorial, sigo tema para ver resultados posteriores. Saludos.

Deje un video de tiktok como ejemplo.. Poco a poco ire actualzando
 
No puedes mostrar alguna muestra de lo que has logrado con este tutorial hermano? Sería interesante escuchar. Gracias por el tutorial, sigo tema para ver resultados posteriores. Saludos.

Si no tienes GPU, pueden usar Google Colab
 
Si no tienes GPU, pueden usar Google Colab
Gracias amigo, voy a probarlo, no tengo mucho GPU la verdad jajaja y sé que instalarme algo asi me será muy dificil, menos mal que siempre existen estas alternativas. Gracias
 
Gracias por el aporte amigo. Voy a seguir el tema para ver si lo aplicó en un futuro cercano.
 
Consulta: Si alguien "reutiliza" mi voz con una IA, podré reclamar los derechos?
 
Gracias por el tutorial, me interesa, uno de estos días lo pondré a prueba. 😉
 
Gracias por el aporte, mas adelante lo pondre a prueba
 
Gracias, ya me habían comentado de esto, El finde semana me pongo con esto,

Sabes si para correr esto en modo local se necesita algo en especifico? con sable difusión uso una 3090 para usarlo en local.
 
Se te agradese por el muy buen aporte.
Gracias
 
Muchas gracias por el aporte, yo andaba buscando algo así.

La verdad no encontré buena información, pero acá tengo todo completo
 
Guardo en favoritos, interesante, gracias
 
Gracias, voy a hacer una prueba a ver que sale.
 
Interesantísimo bro, gracias por la guía espero aplicarlo pronto para aprovechar mi GPU. Estaré atento de tus actualizaciones.
 
Buen aporte, se agradece mucho. Justo estaba investigando acerca de la clonación de voces y, aunque no me gusta mucho por el tema de estafas y eso, puede ayudar a buenas causas si se usa bien.
 
Estoy probando y va más rápido en Google Colab que en mi PC Windows con una 3070
 
Estoy probando y va más rápido en Google Colab que en mi PC Windows con una 3070
de cuentas muestras es tu dataset? cuales son tus numeros de batch_size y epochs??

en la Pc donde estoy ahora tengo una 3060ti y cada epoch se demora 2 minutos y según lo que leo necesitare como 5k ósea 200 horas de enteramiento 🙁
 
Atrás
Arriba