Dieses Repository enthält Schulungs- und Inferenzskripte für den Descript Audio Codec (.DAC), ein allgemeiner Neural-Audio-Codec, der in der Arbeit mit dem Titel "High Fidelity Audio Compression mit einem verbesserten RVQgan" eingeführt wurde.
ARXIV-Papier: Audiokomprimierung mit hoher Fidelität mit verbessertem RVQgan
? Demo -Site
⚙ Modellgewichte
Mit Descript Audio Codec können Sie 44,1 kHz -Audio in diskrete Codes bei einem niedrigen Bitrate von 8 Kbit / s komprimieren.
? Das ist ungefähr 90x Kompression , während die außergewöhnliche Treue beibehält und Artefakte minimiert werden.
? Unser universelles Modell wirkt auf allen Domänen (Sprache, Umgebung, Musik usw.) und sorgt für die generative Modellierung des gesamten Audios weitgehend an.
? Es kann als Drop-In-Ersatz für CCODEC für alle Audiosprachenmodellierungsanwendungen (wie Audiolms, MusicLMs, MusicGen usw.) verwendet werden.

pip install descript-audio-codec
ODER
pip install git+https://github.com/descriptinc/descript-audio-codec
Gewichte werden im Rahmen dieses Repo unter MIT -Lizenz veröffentlicht. Wir geben Gewichte für Modelle frei, die nativ 16 kHz, 24 kHz und 44,1 kHz Stichprobenraten unterstützen können. Gewichte werden automatisch heruntergeladen, wenn Sie den Befehl encode oder decode . Sie können sie mit einem der folgenden Befehle zwischenspeichern
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 variantWir bieten eine Dockerfile, die alle erforderlichen Abhängigkeiten für die Codierung und Dekodierung installiert. Der Build -Prozess zwischen den Standardmodellgewichten im Bild. Auf diese Weise kann das Bild ohne Internetverbindung verwendet werden. Bitte beachten Sie die folgenden Anweisungen.
python3 -m dac encode /path/to/input --output /path/to/output/codes
Dieser Befehl erstellt .dac -Dateien mit demselben Namen wie die Eingabedateien. Es wird auch die Verzeichnisstruktur relativ zur Eingabewurzel erhalten und im Ausgabeverzeichnis neu erstellt. Bitte verwenden Sie python -m dac encode --help für weitere Optionen.
python3 -m dac decode /path/to/output/codes --output /path/to/reconstructed_input
Dieser Befehl erstellt .wav -Dateien mit demselben Namen wie die Eingabedateien. Es wird auch die Verzeichnisstruktur relativ zur Eingabewurzel erhalten und im Ausgangsverzeichnis neu erstellt. Bitte verwenden Sie python -m dac decode --help für weitere Optionen.
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' )Wir stellen eine Dockerfile zur Verfügung, um ein Docker -Bild mit allen notwendigen Abhängigkeiten zu erstellen.
Aufbau des Bildes.
docker build -t dac .
Verwenden des Bildes.
Verwendung auf der CPU:
docker run dac <command>
Verwendung bei GPU:
docker run --gpus=all dac <command>
<command> kann eine der oben aufgeführten Komprimierungs- und Rekonstruktionsbefehle sein. Zum Beispiel, wenn Sie Komprimierung ausführen möchten,
docker run --gpus=all dac python3 -m dac encode ...
Die Basismodellkonfiguration kann mit den folgenden Befehlen trainiert werden.
Bitte installieren Sie die richtigen Abhängigkeiten
pip install -e ".[dev]"
Wir haben ein Dockerfile und Docker Compose -Setup zur Verfügung gestellt, das das Ausführen von Experimenten erleichtert.
Um das Docker -Bild zu erstellen, tun Sie:
docker compose build
Um einen Container zu starten, tun Sie dann:
docker compose run -p 8888:8888 -p 6006:6006 dev
Die Port -Argumente ( -p ) sind optional, aber nützlich, wenn Sie eine Jupyter- und Tensorboard -Instanzen im Container starten möchten. Das Standardkennwort für Jupyter ist password , und das aktuelle Verzeichnis ist an /u/home/src montiert, das auch zum Arbeitsverzeichnis wird.
Führen Sie dann Ihren Trainingsbefehl aus.
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/
Wir stellen zwei Testskripte zur Verfügung, um die CLI + -Trainingsfunktionalität zu testen. Bitte stellen Sie sicher, dass die Trainer-Voraussetzungen vor dem Start dieser Tests zufrieden sind. Um diese Tests zu starten, laufen Sie bitte aus
python -m pytest tests
