Implementación oficial de RAVE: un codificador automático variacional para una síntesis de audio neuronal rápida y de alta calidad (enlace del artículo) por Antoine Caillon y Philippe Esling.
Si utiliza RAVE como parte de una interpretación o instalación musical, ¡asegúrese de citar este repositorio o el artículo!
Si quieres compartir/discutir/preguntar cosas sobre RAVE, ¡puedes hacerlo en nuestro servidor de Discord!
¡Consulte las preguntas frecuentes antes de publicar un problema!
RAVE VST RAVE VST para Windows, Mac y Linux está disponible como versión beta en la página web correspondiente del Foro IRCAM. Si tiene problemas, escriba un problema aquí o en la página de discusión del Foro IRCAM.
Tutoriales : hay nuevos tutoriales disponibles en la página web del Foro IRCAM y pronto habrá versiones en vídeo.
La implementación original del modelo RAVE se puede restaurar usando
git checkout v1
Instale RAVE usando
pip install acids-rave
Advertencia Se recomienda encarecidamente instalar torch
y torchaudio
antes de acids-rave
, para que pueda elegir la versión adecuada de torch en el sitio web de la biblioteca. Para compatibilidad futura con nuevos dispositivos (y entornos Python modernos), rave-acids
ya no aplica torch==1.13.
Necesitará ffmpeg en su computadora. Puede instalarlo localmente dentro de su entorno virtual usando
conda install ffmpeg
¡Ya está disponible una colaboración para entrenar RAVEv2 gracias a hexorcismos!
El entrenamiento de un modelo RAVE generalmente implica 3 pasos separados, a saber, preparación , entrenamiento y exportación del conjunto de datos.
Puede saber preparar un conjunto de datos utilizando dos métodos: regular y diferido. El preprocesamiento diferido permite entrenar a RAVE directamente en los archivos sin formato (es decir, mp3, ogg), sin convertirlos primero. Advertencia : la carga diferida del conjunto de datos aumentará la carga de la CPU en un gran margen durante el entrenamiento, especialmente en Windows. Sin embargo, esto puede resultar útil cuando se entrena con un corpus de audio de gran tamaño que no cabría en un disco duro si no se comprime. En cualquier caso, prepare su conjunto de datos utilizando
rave preprocess --input_path /audio/folder --output_path /dataset/path --channels X (--lazy)
RAVEv2 tiene muchas configuraciones diferentes. La versión mejorada de v1 se llama v2
y, por lo tanto, se puede entrenar con
rave train --config v2 --db_path /dataset/path --out_path /model/out --name give_a_name --channels X
También proporcionamos una configuración discreta, similar a SoundStream o EnCodec.
rave train --config discrete ...
De forma predeterminada, RAVE se construye con convoluciones no causales. Si desea que el modelo sea causal (reduciendo así la latencia general del modelo), puede utilizar el modo causal
rave train --config discrete --config causal ...
Como novedad en 2.3, también están disponibles aumentos de datos para mejorar la generalización del modelo en regímenes de datos bajos. Puede agregar aumento de datos agregando archivos de configuración de aumento con la palabra clave --augment
rave train --config v2 --augment mute --augment compress
Muchos otros archivos de configuración están disponibles en rave/configs
y se pueden combinar. Aquí hay una lista de todas las configuraciones y aumentos disponibles:
Tipo | Nombre | Descripción |
---|---|---|
Arquitectura | v1 | Modelo continuo original (memoria GPU mínima: 8Go) |
v2 | Modelo continuo mejorado (más rápido, mayor calidad) (memoria GPU mínima: 16 Go) | |
v2_pequeño | v2 con un campo receptivo más pequeño, entrenamiento adversario adaptado y generador de ruido, adaptado para la transferencia de timbre para señales estacionarias (memoria GPU mínima: 8Go) | |
v2_nopqmf | (experimental) v2 sin pqmf en el generador (más eficiente para propósitos de flexión) (memoria GPU mínima: 16Go) | |
v3 | v2 con activación Snake, discriminador de descripciones y normalización de instancia adaptativa para transferencia de estilo real (memoria GPU mínima: 32 Go) | |
discreto | Modelo discreto (similar a SoundStream o EnCodec) (memoria GPU mínima: 18Go) | |
onnx | Configuración silenciosa v1 para uso onnx (memoria mínima de GPU: 6Go) | |
frambuesa | Configuración liviana compatible con inferencia RaspberryPi 4 en tiempo real (memoria GPU mínima: 5Go) | |
Regularización (solo v2) | por defecto | Objetivo del codificador automático variacional (ELBO) |
wasserstein | Objetivo del codificador automático Wasserstein (MMD) | |
esférico | Objetivo del codificador automático esférico | |
Discriminado | discriminador_espectral | Utilice el discriminador MultiScale de EnCodec. |
Otros | causal | Utilice convoluciones causales |
ruido | Habilita el sintetizador de ruido V2. | |
híbrido | Habilitar la entrada de espectrograma de mel | |
Aumentos | silenciar | Silencia aleatoriamente lotes de datos (problema predeterminado: 0.1). Hace cumplir el modelo para aprender el silencio. |
comprimir | Comprime aleatoriamente la forma de onda (equivalente a una amplificación ligera no lineal de lotes) | |
ganar | Aplica una ganancia aleatoria a la forma de onda (rango predeterminado: [-6, 3]) |
Una vez entrenado, exporte su modelo a un archivo torchscript usando
rave export --run /path/to/your/run (--streaming)
Establecer el indicador --streaming
habilitará las convoluciones en caché, lo que hará que el modelo sea compatible con el procesamiento en tiempo real. Si olvida usar el modo de transmisión e intenta cargar el modelo en Max, escuchará clics en los artefactos.
Para modelos discretos, redirigimos al usuario a la biblioteca msprior
aquí. Sin embargo, como esta biblioteca aún es experimental, la versión anterior 1.x se ha reintegrado en la v2.3.
Para entrenar un prior para un modelo RAVE previamente entrenado:
rave train_prior --model /path/to/your/run --db_path /path/to/your_preprocessed_data --out_path /path/to/output
esto entrenará previamente sobre el estado latente del modelo previamente entrenado path/to/your/run
y guardará los registros del modelo y del tensorboard en la carpeta /path/to/output
.
Para crear un script de un anterior junto con un modelo RAVE, exporte su modelo proporcionando la palabra clave --prior
a su anterior previamente entrenado:
rave export --run /path/to/your/run --prior /path/to/your/prior (--streaming)
Varios modelos de transmisión previamente entrenados están disponibles aquí. Mantendremos la lista actualizada con nuevos modelos.
Esta sección presenta cómo se puede cargar RAVE dentro de nn~
para poder usarlo en vivo con Max/MSP o PureData.
Un modelo RAVE previamente entrenado llamado darbouka.gin
disponible en su computadora se puede cargar dentro de nn~
usando la siguiente sintaxis, donde el método predeterminado está configurado para reenviar (es decir, codificar y luego decodificar)
Esto hace lo mismo que el siguiente parche, pero un poco más rápido.
Tener un acceso explícito a la representación latente generada por RAVE nos permite interactuar con la representación usando herramientas de procesamiento de señales Max/MSP o PureData:
De forma predeterminada, RAVE se puede utilizar como herramienta de transferencia de estilo, según la gran relación de compresión del modelo. Recientemente agregamos una técnica inspirada en StyleGAN para incluir la normalización de instancias adaptativa al proceso de reconstrucción, permitiendo efectivamente definir estilos de origen y destino directamente dentro de Max/MSP o PureData, utilizando el sistema de atributos de nn~
.
Otros atributos, como enable
o gpu
, pueden habilitar/deshabilitar el cálculo o usar la gpu para acelerar las cosas (aún experimental).
Se lanzó un script de generación por lotes en la versión 2.3 para permitir la transformación de una gran cantidad de archivos.
rave generate model_path path_1 path_2 --out out_path
donde model_path
es la ruta a su modelo entrenado (original o programado), path_X
una lista de directorios o archivos de audio y out_path
el directorio de salida de las generaciones.
Si tienes preguntas, quieres compartir tu experiencia con RAVE o compartir piezas musicales hechas con el modelo, ¡puedes usar la pestaña Discusión!
¡Demostración de lo que puedes hacer con RAVE y nn~ external para maxmsp!
Usando nn~ para puredata, ¡RAVE se puede usar en tiempo real en plataformas integradas!
Pregunta : mi preprocesamiento está bloqueado y muestra 0it[00:00, ?it/s]
Respuesta : Esto significa que los archivos de audio en su conjunto de datos son demasiado cortos para proporcionar un alcance temporal suficiente para RAVE. Intente disminuir la ventana de señal con --num_signal XXX(samples)
con preprocess
, sin olvidar luego agregar --n_signal XXX(samples)
con train
Pregunta : Durante el entrenamiento obtuve una excepción parecida ValueError: n_components=128 must be between 0 and min(n_samples, n_features)=64 with svd_solver='full'
Respuesta : Esto significa que su conjunto de datos no tiene suficientes lotes de datos para calcular el PCA latente interno, lo que requiere al menos 128 ejemplos (luego lotes).
Este trabajo está liderado en el IRCAM y ha sido financiado por los siguientes proyectos