¡Mientras tengas manos! Entrenamiento de modelo vocal Sovits AI

Introducción

Con la explosión de AI Stefanie Sun, la cantidad de presentaciones de voz de AI en las principales plataformas de video ha aumentado, y la página de inicio de la estación B con frecuencia me envía videos relacionados. Sucede que también estoy muy interesado en AIGC, y mi corazón no es tan bueno como la acción, así que entrené a un modelo con mi propia voz y descubrí que todo el proceso es extremadamente simple y el efecto final también es bueno. Realmente solo necesita manos, así que esta vez compartiré mi propia experiencia de entrenamiento y razonamiento con todos

soviéticos

En primer lugar, permítanme presentarles los Sovits de los que hablaré hoy. So-vits-svc (también conocido como Sovits) es un software de conversión de voz AI de código abierto y gratuito desarrollado por Rcell, un entusiasta de la síntesis de canciones populares chinas basado en VITS, soft-vc, VISinger2 y otros proyectos. Utiliza el codificador de contenido SoftVC para extraer las características de voz del audio de origen e ingresa VITS al mismo tiempo que F0 para reemplazar la entrada de texto original para lograr el efecto de conversión de voz cantada.

Por alguna razón, el autor original, Rcell, eliminó el almacén de código original y ahora svc-develop-team se hace cargo del mantenimiento de seguimiento. La dirección del almacén actual: https://github.com/svc-develop-team/so-vits-svc

requisitos de configuración

  • Una tarjeta gráfica NVIDIA que admita CUDA y tenga al menos 6 G de memoria de video
  • Se recomienda usar Windowsel sistema. El procesamiento de materiales, la capacitación y el razonamiento posteriores del tutorial se Windowscompletan en la plataforma. Al mismo tiempo, el uso de la GUI del paquete de integración también puede ayudar a los novatos a concentrarse en la capacitación/razonamiento en sí, evitando la configuración complicada del entorno y otros trabajos.

Configuración del entorno

Este entorno utiliza el paquete de integración proporcionado por bilibili@羽布団boss: https://www.yuque.com/umoubuton/ueupp5/sdahi7m5m6r0ur1r , donde puede encontrar la dirección de descarga y algunas instrucciones

Después de la descarga, obtendrá un paquete comprimido de Sovits y algún software de herramienta. Después de descomprimir el so-vits-svc, abra el archivo que contiene, preparará automáticamente el 启动webui.batentorno y luego aparecerá una página web.

directorio de sovits

iniciar webui

Cambie la página de la pestaña a la página de capacitación en la página web y podrá ver la información de nuestra tarjeta gráfica

Información de la tarjeta gráfica

Después de la confirmación, podemos comenzar a entrenar.

Preparar conjunto de datos

La calidad y el tamaño del conjunto de datos determinan los límites superior e inferior de la calidad del modelo de entrenamiento. No importa cuánto tiempo entrenes para un conjunto de datos de baja calidad o cuántas decenas de miles de pasos hayas entrenado, es imposible lograr un efecto ideal.

listo para secar

Para el entrenamiento de Sovits, necesitamos encontrar algunos materiales de sonido seco correspondientes a las líneas de voz que queremos entrenar. No mezcle varias líneas de voz. La duración es preferiblemente más de 2 horas, y el mínimo no es menos de 30 minutos. De lo contrario, no se puede garantizar la calidad del modelo entrenado. Puede ser la voz que habla, lee o canta (algunas personas dicen que agregar algunos sonidos de llanto, risa y otros tiene un efecto milagroso. No lo he probado. Puede probarlo). Si desea que su modelo cante, el material de canto debe cubrir múltiples frecuencias de tono bajo, medio y alto

No debe haber acompañamiento, reverberación ni armonía en el material de sonido seco (evite el sonido convertido con su propia BGM), y no debe haber sonido de respiración, vibrato, transición de sonido, etc., y el ruido de fondo debe eliminarse tanto como sea posible.

reducción de ruido

Si su material original es un archivo de sonido seco sin reverberación de acompañamiento, pero hay algunos ruidos de fondo ruidosos, puede usar Adobe Audition(en lo sucesivo, AU) para el procesamiento de reducción de ruido.

Tutorial: https://helpx.adobe.com/en/audition/using/noise-reduction-restoration-effects.html

para acompañar la reverberación

Si su material es una canción previamente grabada, entonces necesita ser acompañada y desreverberada. Se recomienda usar Ultimate Vocal Remover v5 (UVR5 para abreviar)

Advanced VR OptionsDespués de descargar UVR5, se recomienda activar la opción antes de procesar el audio Post-Process, para que el efecto de reverberación sea mejor (metafísica)

Configuración UVR5

Opciones avanzadas de realidad virtual UVR5

Luego de comenzar con el acompañamiento, se recomienda la siguiente configuración:

  1. Método de proceso: Demucs
  2. Tallos: Voz
  3. Modelo Demucs: v3 | UVR_Model_1 Nota: Si no puede encontrar el modelo correspondiente, puede seleccionar Descargar en el cuadro desplegable para descargar el modelo correspondiente en el software
  4. Marque la conversión de GPU

Acompañamiento UVR5 Go

A continuación, realice un proceso de eliminación de la reverberación en el archivo de voz procesado. Se recomienda la siguiente configuración:

  1. Método de proceso: Arquitectura VR
  2. Tamaño de ventana: 320
  3. Configuración de agresión: 10
  4. Modelo de realidad virtual: 5_HP-Karaoke_UVR
  5. Marque la conversión de GPU
  6. Revisar Vocabulario Solamente

UVR5 de-reverberación

Con unos pocos pasos tan simples, hemos extraído el sonido seco del archivo de la canción. Si cree que el efecto extraído no es satisfactorio, también puede usar RipX DeepAudio para refinarlo.

Importar el archivo a RipX generará una curva como la que se muestra a continuación

Haga clic en una de las curvas amarillas para reproducir este audio, podemos escucharlo segmento por segmento y eliminar manualmente la parte de ruido.

RipX

Coincidir con el volumen

Si las fuentes de sus materiales de sonido seco son diferentes, puede haber casos en los que el volumen de los materiales sea diferente. En este caso, debe usar AU para igualar el volumen de todo el audio, de modo que los valores de decibelios de todos los materiales estén en un rango uniforme.

Tutorial: https://helpx.adobe.com/en/audition/using/match-loudness.html

límite de presión

El volumen del sonido seco no debe exceder los -6 db. Se recomienda que Adobe Auditionel compresor en uso limite el decibelio del sonido dentro de -6 db.

Tutorial: https://helpx.adobe.com/en/audition/using/amplitude-compression-effects.html

rebanada

Después de procesar los materiales de sonido seco, el siguiente paso es cortar estos materiales en pequeños fragmentos de 2 a 15 s (los fragmentos son demasiado largos para romper la memoria de video, es mejor no exceder los 20 s), aquí se recomienda usar Audio Slicer, que puede cortar automáticamente el audio de acuerdo con el umbral de volumen y el tiempo de intervalo

Cortador de audio

Después de arrastrar el archivo de sonido seco, puede usar los parámetros predeterminados para dividirlo primero, luego ir al directorio de salida, organizar los archivos en orden descendente de tamaño de archivo y verificar si hay fragmentos de audio de más de 15 s. Si es así, arrastre estos archivos de audio nuevamente al software y vuelva a dividirlos de acuerdo con los siguientes parámetros:

  1. Umbral (db): -20
  2. Intervalo mínimo: 100
  3. Duración máxima del silencio (ms): 500

En general, no habrá audio de más de 15 s. Si hay alguno, enumeraré el significado de estos parámetros a continuación. Puede intentar ajustar los parámetros usted mismo. También puede usar otras herramientas de procesamiento de audio (como: AU) para cortar manualmente

  • Límite

Umbral RMS en dB. Las áreas con todos los valores RMS por debajo de este umbral se consideran silenciosas. Aumente este valor si el audio es ruidoso. El valor predeterminado es -40.

  • Longitud mínima

La longitud mínima requerida para cada clip de audio cortado, en milisegundos. El valor predeterminado es 5000.

  • Intervalo mínimo

La longitud mínima de silencio para cortar, en milisegundos. Establezca este valor más bajo si el audio contiene solo breves interrupciones. Cuanto menor sea este valor, más clips de audio divididos puede generar esta aplicación. Tenga en cuenta que este valor debe ser menor que la longitud mínima y mayor que el tamaño del salto. El valor predeterminado es 300.

  • Tamaño del lúpulo

La longitud de cada cuadro RMS en milisegundos. Aumentar este valor aumentará la precisión de las teselas, pero ralentizará el procesamiento. El valor predeterminado es 10.

  • Duración máxima del silencio

La duración máxima del silencio para mantener el audio cortado, en milisegundos. Ajuste este valor según sea necesario. Tenga en cuenta que establecer este valor no implica que el silencio en el audio cortado tenga una duración determinada exacta. Como se mencionó anteriormente, el algoritmo busca el mejor lugar para cortar. El valor predeterminado es 1000.

Por último, recuerda eliminar los fragmentos de audio que sean demasiado cortos.

conversión de formato

El formato del conjunto de datos debe estar en wavel formato de forma de onda original. Verifíquelo. Si hay un wavarchivo sin formato, debe realizar una conversión de formato. Se recomienda usarlo Foobar2000o usarlo directamente FFmepgpara la conversión .

doble denominación

Los caracteres que no están en inglés, como el chino, no pueden aparecer en el conjunto de datos. Se recomienda usar solo guiones bajos para los caracteres especiales. WindowsSeleccione directamente todos los archivos y cámbieles el nombre. El nombre del archivo tendrá el siguiente formato:

  • xxx (1).wav
  • xxx (2).wav

Probé personalmente este naming, aunque reportará un Warning, pero no afecta el entrenamiento, es factible

Pre-entrenamiento

Luego empezamos a entrenar

Poner el conjunto de datos

Primero coloque todos los sonidos secos procesados ​​en una carpeta y luego coloque esta carpeta en una carpeta so-vits-svcdebajo del directoriodataset_raw

Poner el conjunto de datos

Preprocesamiento de datos

Abra la interfaz webui, cambie a la pestaña de capacitación, haga clic primero 识别数据集, el cuadro de texto de arriba mostrará el nombre del conjunto de datos que preparamos, y luego seleccione la capacitación utilizada 编码器y f0预测器, aquí seleccione las dos opciones marcadas en mi imagen, que actualmente son mejores opciones, luego haga clic en Preprocesamiento de datos, el progreso se imprimirá en la columna de información de salida de preprocesamiento, espere pacientemente a que termine

Preprocesamiento de datos

configuración de entrenamiento

Después de esperar a que se complete el preprocesamiento de datos, debemos escribir la configuración y los parámetros de entrenamiento en el archivo de configuración.

configuración de entrenamiento

Introduzca el significado y la configuración recomendada de los parámetros aquí:

  1. Genere un registro de evaluación cada número de pasos (pasos): genere la tasa de aprendizaje, el valor de pérdida y otra información bajo el número actual de pasos cada cierto número de pasos, y complételo de acuerdo con sus preferencias personales
  2. Verifique y guarde el modelo cada número de pasos (pasos): Literalmente, puede completarlo de acuerdo con sus preferencias personales
  3. Conserve solo los últimos modelos X: cuando entreno a 110,000 pasos, un modelo está cerca de los 600 MB, puede completarlo de acuerdo con el tamaño de su disco duro y sus preferencias personales
  4. Tamaño de lote: Un tamaño de lote grande puede reducir el tiempo de entrenamiento y mejorar la estabilidad, pero también conducirá a una disminución en la capacidad de generalización del modelo. Por lo tanto, incluso si su memoria de video es grande, no se recomienda establecer este parámetro demasiado grande. Se recomienda usar 4
  5. Tasa de aprendizaje: si la tasa de aprendizaje inicial es demasiado grande, el modelo no puede converger. Si es demasiado pequeña, el modelo convergerá muy lentamente o no podrá aprender. Se recomienda utilizar el valor predeterminado de 0,0001.
  6. Use el entrenamiento de precisión mixta fp16: el entrenamiento de precisión mixta utiliza números de punto flotante de precisión media para acelerar el entrenamiento y reduce la pérdida de precisión tanto como sea posible. Utiliza FP16, es decir, números de punto flotante de precisión media para almacenar pesos y gradientes, lo que acelera el entrenamiento y reduce el uso de memoria. En teoría, el uso de precisión mixta difícilmente causará pérdida de precisión, pero aún no se ha verificado que el impacto en la calidad del modelo no se haya verificado. Se recomienda no verificar si el rendimiento de la tarjeta gráfica es suficiente .
  7. Cargue el conjunto de datos en la memoria: se recomienda verificarlo cuando la memoria sea suficiente, lo que puede acelerar el entrenamiento

Después de configurar todos los parámetros de capacitación, haga clic en el botón Escribir archivo de configuración a continuación, que se mostrará en la información de salida a continuación 配置文件写入完成, y luego puede comenzar la capacitación formal

escribir archivo de configuración

entrenamiento formal

Haga clic a continuación 从头开始训练y aparecerá una nueva ventana de terminal En esta ventana de terminal, el registro de entrenamiento actual se mostrará continuamente.

empezar a entrenar

ventana de terminal de entrenamiento

Mis parámetros de entrenamiento están configurados para generar un registro de evaluación cada 200 pasos y guardar el modelo cada 1000 pasos. El valor de salida en el registro representa la brecha entre la salida del modelo y el valor real. En teoría, cuanto menor sea el valor, mejor. Cuanto menor sea el valor, más similar será el sonido emitido por el modelo a la voz de la persona real. Pero, por experiencia, puede que no sea el caso. Un valor de pérdida demasiado bajo también puede representar un sobreajuste del modelo. Solo podemos usar este parámetro como referencia. modelo para pruebas de reference_lossinferencia

El entrenamiento no terminará automáticamente. Cuando sentimos que el entrenamiento está casi terminado y queremos probar el efecto real del modelo, podemos escribir en el teclado para detener el entrenamiento en la ventana del terminal de entrenamiento. Si no estamos satisfechos con el modelo entrenado esta vez y queremos continuar con el entrenamiento, podemos hacer clic en él y el programa continuará entrenando desde el progreso del último modelo guardado automáticamente Ctrl + C.继续上一次的训练进度

razonamiento

modelo de carga

Después de entrenar el modelo, podemos cambiar la pestaña 推理para probar el efecto real del modelo.

Hacemos clic primero 刷新选项y el modelo que entrenamos antes aparece en el menú desplegable de 模型选择y 配置文件En referencia al reference_lossvalor anterior, seleccionamos un modelo (comenzando con G) y seleccionamos el archivo de configuración utilizado para el entrenamiento, hacemos clic en cargar modelo y esperamos a que Output Messageaparezcan las palabras en el cuadro de texto a continuación 模型加载成功, entonces podemos comenzar oficialmente nuestro razonamiento

modelo de carga

empezar a razonar

Sovits es una herramienta de conversión de sonido. Primero necesitamos encontrar una pieza de audio de sonido original que queremos convertir. Es lo mismo que en el capítulo sobre la preparación del conjunto de datos. Necesitamos un sonido seco sin acompañamiento, reverberación y armonía. Si queremos que el modelo cante, podemos usar el método usado para preparar el conjunto de datos antes, eliminar directamente la canción original de la reverberación del acompañamiento y arrastrarla al área de carga de audio después del procesamiento.

pmLa calidad de sonido inferida por el predictor f0 predeterminado es la mejor, por lo que se recomienda usar primero los parámetros predeterminados para la inferencia y luego ajustar los parámetros de manera específica si hay un problema.

Hagamos clic en el botón de abajo 音频转换, espere un momento y Output Audioallí se generará un audio de inferencia.

razonamiento

Después de escucharlo, establecemos los parámetros de conversión de acuerdo con el problema específico:

  • Silenciar

El silenciamiento se debe a que la parte de la armonía en el audio original no es limpia, lo que genera un error en la predicción del tono por parte del predictor f 0. La predicción se convierte en un tono muy alto y el modelo no puede cantarlo.

Hay dos formas de resolver este problema. Una es resolver el problema desde la fuente, encontrar una manera de eliminar la reverberación armónica del audio original y obtener un sonido seco más puro para volver a razonar. Otro método es reemplazar el predictor f0 con un ajuste moderado (generalmente use el valor predeterminado, y no hay diferencia entre cambiar el tamaño y el tamaño), y luego volver a razonar básicamente puede resolver este problema, pero la calidad del sonido no es tan buena como la del predictor crepef0 .F0过滤阈值pm

  • La brecha de rango es demasiado grande

Si el modelo entrenado es una voz masculina, pero la voz original utilizada para la inferencia es una voz femenina, o viceversa, si se encuentra con una situación en la que la brecha de rango es demasiado grande, el audio inferido será desagradable.

Podemos activar la opción de predicción automática f0 para solucionar este problema, pero como se describe en las opciones, esta opción solo está disponible al convertir voces, y activar esta opción al convertir voces cantadas provocará una catastrófica desafinación.

Si se trata de una voz cantada y realmente desea cantar esta canción, se recomienda encontrar una versión de audio que sea más adecuada para su propio rango y utilizar este procesamiento de audio como el sonido original para el razonamiento.

  • No puedo cantar arriba (abajo) algunos tonos

El conjunto de datos alimentado durante el entrenamiento no cubría parte del rango vocal

¿La opción de transposición aquí parece razonar primero y luego transponer? Por lo tanto, no funciona en este caso. Se recomienda usar AU para ajustar la frecuencia de audio original al rango apropiado primero y luego hacer inferencias.

  • ráfaga de memoria de vídeo

En el proceso de inferencia, puede haber una situación de ruptura de la memoria de video, porque el razonamiento es cortar el audio original en pequeños segmentos de acuerdo con el umbral de volumen para la inferencia y finalmente sintetizarlos. Si uno de los segmentos suele ser demasiado largo, puede causar una ruptura de la memoria de video.

Podemos aumentar el umbral de corte para que el audio original se pueda cortar en partes más finas, e incluso puede ajustar directamente el valor del corte automático del audio para habilitar el corte forzado. Por ejemplo, si ingresa 10, el audio se cortará en secciones cada 10 segundos para garantizar que el audio no salte a la memoria de vez en cuando.

síntesis

Si la conversión es cantar, finalmente puede combinar la voz seca convertida y el acompañamiento en un archivo de audio. Puede usar software como AU, y también puede realizar algunos ajustes de ecualización y reverberación en la voz seca antes de la síntesis. No diré mucho sobre el conocimiento musical aquí.

fin

Finalmente, publique la voz de canto inferida por el modelo que entrené yo mismo. Usé 30 minutos de material de sonido seco de buena calidad y 30 minutos de material de mala calidad (más ruido y reverberación). Después de entrenar durante 110,000 pasos, usé el predictor f0 para inferir crepe.

Enlace: https://www.bilibili.com/audio/au3907000

Esta es la primera vez que trato de entrenar el modelo Sovits, si hay alguna omisión o error, indíquelo

Supongo que te gusta

Origin blog.csdn.net/qq_34231329/article/details/131203034
Recomendado
Clasificación