Este repositorio contiene scripts de entrenamiento e inferencia para el códec de audio de descripción (.dac), un códec de audio neural general de alta fidelidad, introducido en el documento titulado Compresión de audio de alta fidelidad con RVQGAN mejorado .
Documento ARXIV: compresión de audio de alta fidelidad con RVQGAN mejorado
? Sitio de demostración
⚙ Peso del modelo
Con el código de audio Descript, puede comprimir el audio de 44.1 kHz en códigos discretos con una baja tasa de bits de 8 kbps .
? Eso es aproximadamente 90x compresión mientras mantiene la fidelidad excepcional y minimiza los artefactos.
? Nuestro modelo universal funciona en todos los dominios (habla, entorno, música, etc.), lo que lo hace ampliamente aplicable al modelado generativo de todo el audio.
? Se puede utilizar como reemplazo de ENCODEC para todas las aplicaciones de modelado de lenguaje de audio (como Audiolms, MusicLMs, MusicGen, etc.)
pip install descript-audio-codec
O
pip install git+https://github.com/descriptinc/descript-audio-codec
Los pesos se liberan como parte de este repositorio bajo la licencia MIT. Liberamos pesos para modelos que pueden admitir de forma nativa de las tasas de muestreo de 16 kHz, 24 kHz y 44.1kHz. Los pesos se descargan automáticamente cuando se ejecuta el comando encode
o decode
. Puede almacenarlos en caché usando uno de los siguientes comandos
python3 -m dac download # downloads the default 44kHz variant
python3 -m dac download --model_type 44khz # downloads the 44kHz variant
python3 -m dac download --model_type 24khz # downloads the 24kHz variant
python3 -m dac download --model_type 16khz # downloads the 16kHz variant
Proporcionamos un DockerFile que instala todas las dependencias requeridas para codificar y decodificar. El proceso de compilación almacena los pesos del modelo predeterminado dentro de la imagen. Esto permite que la imagen se use sin conexión a Internet. Consulte las instrucciones a continuación.
python3 -m dac encode /path/to/input --output /path/to/output/codes
Este comando creará archivos .dac
con el mismo nombre que los archivos de entrada. También preservará la estructura del directorio en relación con la raíz de entrada y la recreará en el directorio de salida. Utilice python -m dac encode --help
para más opciones.
python3 -m dac decode /path/to/output/codes --output /path/to/reconstructed_input
Este comando creará archivos .wav
con el mismo nombre que los archivos de entrada. También preservará la estructura del directorio en relación con la raíz de entrada y la recreará en el directorio de salida. Utilice python -m dac decode --help
para más opciones.
import dac
from audiotools import AudioSignal
# Download a model
model_path = dac . utils . download ( model_type = "44khz" )
model = dac . DAC . load ( model_path )
model . to ( 'cuda' )
# Load audio signal file
signal = AudioSignal ( 'input.wav' )
# Encode audio signal as one long file
# (may run out of GPU memory on long files)
signal . to ( model . device )
x = model . preprocess ( signal . audio_data , signal . sample_rate )
z , codes , latents , _ , _ = model . encode ( x )
# Decode audio signal
y = model . decode ( z )
# Alternatively, use the `compress` and `decompress` functions
# to compress long files.
signal = signal . cpu ()
x = model . compress ( signal )
# Save and load to and from disk
x . save ( "compressed.dac" )
x = dac . DACFile . load ( "compressed.dac" )
# Decompress it back to an AudioSignal
y = model . decompress ( x )
# Write to file
y . write ( 'output.wav' )
Proporcionamos un Dockerfile para construir una imagen Docker con todas las dependencias necesarias.
Construyendo la imagen.
docker build -t dac .
Usando la imagen.
Uso en la CPU:
docker run dac <command>
Uso en GPU:
docker run --gpus=all dac <command>
<command>
puede ser uno de los comandos de compresión y reconstrucción enumerados anteriormente. Por ejemplo, si desea ejecutar compresión,
docker run --gpus=all dac python3 -m dac encode ...
La configuración del modelo de referencia se puede capacitar utilizando los siguientes comandos.
Instale las dependencias correctas
pip install -e ".[dev]"
Hemos proporcionado una configuración de DockerFile y Docker Compose que facilita la ejecución de los experimentos.
Para construir la imagen de Docker: Do:
docker compose build
Luego, para lanzar un contenedor, haga:
docker compose run -p 8888:8888 -p 6006:6006 dev
Los argumentos del puerto ( -p
) son opcionales, pero útiles si desea iniciar instancias Jupyter y Tensorboard dentro del contenedor. La contraseña predeterminada para Jupyter es password
, y el directorio actual está montado en /u/home/src
, que también se convierte en el directorio de trabajo.
Luego, ejecute su comando de entrenamiento.
export CUDA_VISIBLE_DEVICES=0
python scripts/train.py --args.load conf/ablations/baseline.yml --save_path runs/baseline/
export CUDA_VISIBLE_DEVICES=0,1
torchrun --nproc_per_node gpu scripts/train.py --args.load conf/ablations/baseline.yml --save_path runs/baseline/
Proporcionamos dos scripts de prueba para probar la funcionalidad de entrenamiento CLI +. Asegúrese de que los requisitos previos de Trainig estén satisfechos antes de lanzar estas pruebas. Para iniciar estas pruebas, se ejecute
python -m pytest tests