Descript Audio Codec (.dac) - 基于改进RVQGAN的高保真音频压缩方案

本文翻译整理自:https://github.com/descriptinc/descript-audio-codec



一、关于 Descript Audio Codec

该代码库包含Descript音频编解码器(.dac)的训练和推理脚本,这是一种高保真通用神经音频编解码器,相关技术发表于论文《基于改进RVQGAN的高保真音频压缩》。

👉 通过Descript音频编解码器,您可以将44.1 KHz音频压缩为8 kbps低比特率的离散编码
🤌 实现约90倍压缩比的同时保持卓越保真度并最小化伪影
💪 通用模型适用于所有音频领域(语音、环境音、音乐等),可广泛用于各类音频生成建模
👌 可作为EnCodec的直接替代方案,适用于所有音频语言建模应用(如AudioLMs、MusicLMs、MusicGen等)


在这里插入图片描述


对比不同压缩方法。我们的模型实现了比所有基线方法更高的压缩比。与EnCodec的32倍和SoundStream的64倍压缩比相比,我们达到约90倍压缩比。注意:我们工作在8 kbps目标比特率下(EnCodec为24 kbps,SoundStream为6 kbps),采样率为44.1 kHz(EnCodec为48 kHz,SoundStream为24 kHz)



二、安装


安装方式

pip install descript-audio-codec

pip install git+https://github.com/descriptinc/descript-audio-codec

模型权重

权重文件通过MIT许可证随本代码库发布,支持16 kHz、24kHz和44.1kHz采样率的原生模型。首次运行encodedecode命令时会自动下载权重,也可通过以下命令预下载:

python3 -m dac download # 下载默认44kHz版本
python3 -m dac download --model_type 44khz # 下载44kHz版本
python3 -m dac download --model_type 24khz # 下载24kHz版本
python3 -m dac download --model_type 16khz # 下载16kHz版本


我们提供了包含编解码所需全部依赖的Dockerfile,构建过程中会将默认模型权重缓存至镜像内,使镜像可在无网络环境下使用。


三、使用指南


音频压缩

python3 -m dac encode /path/to/input --output /path/to/output/codes

该命令会生成与输入文件同名的.dac文件,并保持输入目录的相对结构。更多选项请使用python -m dac encode --help查看。


从压缩编码重建音频

python3 -m dac decode /path/to/output/codes --output /path/to/reconstructed_input

该命令会生成与输入文件同名的.wav文件,并保持输入目录的相对结构。更多选项请使用python -m dac decode --help查看。


编程式调用

import dac
from audiotools import AudioSignal

# 下载模型
model_path = dac.utils.download(model_type="44khz")
model = dac.DAC.load(model_path)

model.to('cuda')

# 加载音频文件
signal = AudioSignal('input.wav')

# 将音频信号编码为单个长文件
# (长文件可能导致GPU内存不足)
signal.to(model.device)

x = model.preprocess(signal.audio_data, signal.sample_rate)
z, codes, latents, _, _ = model.encode(x)

# 解码音频信号
y = model.decode(z)

# 也可使用`compress`和`decompress`函数处理长文件
signal = signal.cpu()
x = model.compress(signal)

# 保存到磁盘及加载
x.save("compressed.dac")
x = dac.DACFile.load("compressed.dac")

# 解压回AudioSignal对象
y = model.decompress(x)

# 写入文件
y.write('output.wav')

Docker镜像

我们提供包含全部依赖的Dockerfile:
1、构建镜像

docker build -t dac .

2、使用镜像
CPU模式:

docker run dac <command>

GPU模式:

docker run --gpus=all dac <command>

<command>可为前文列出的压缩/重建命令,例如执行压缩:

docker run --gpus=all dac python3 -m dac encode ...

四、模型训练


准备工作

安装必要依赖:

pip install -e ".[dev]"

环境配置

我们提供了Dockerfile和docker compose配置简化实验环境:
1、构建镜像:

docker compose build

2、启动容器:

docker compose run -p 8888:8888 -p 6006:6006 dev

端口参数(-p)可选,用于在容器内启动Jupyter和Tensorboard。Jupyter默认密码为password,当前目录会挂载至/u/home/src并设为工作目录。


单GPU训练

export CUDA_VISIBLE_DEVICES=0
python scripts/train.py --args.load conf/ablations/baseline.yml --save_path runs/baseline/

多GPU训练

export CUDA_VISIBLE_DEVICES=0,1
torchrun --nproc_per_node gpu scripts/train.py --args.load conf/ablations/baseline.yml --save_path runs/baseline/

五、测试验证

我们提供两个测试脚本验证CLI和训练功能,请确保满足训练前提条件后运行:

python -m pytest tests

六、性能表现

在这里插入图片描述


伊织 xAI 2025-04-29(二)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

编程乐园

请我喝杯伯爵奶茶~!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值