SNAC项目介绍
SNAC(Multi-Scale Neural Audio Codec)是一个创新的音频压缩项目,旨在以低比特率将音频压缩为离散代码。该项目主要针对语音数据进行训练,推荐用于语音合成领域。
项目概述
SNAC采用了类似于SoundStream、EnCodec和DAC的分层令牌编码方式来处理音频。然而,SNAC引入了一个简单而巧妙的改变:粗糙的令牌以较低的频率采样,从而覆盖更广泛的时间跨度。这种方法使得SNAC能够在保持音频质量的同时实现更高效的压缩。
技术特点
- 压缩能力:该模型能够将24 kHz的音频压缩为0.98 kbps比特率的离散代码。
- 编码结构:使用3个RVQ(Residual Vector Quantization)层级,令牌速率分别为12 Hz、23 Hz和47 Hz。
- 模型参数:包含19.8 M参数,为语音处理提供了强大的性能。
预训练模型
SNAC项目提供了多个预训练模型,以适应不同的应用场景:
- snac_24khz:本文介绍的主要模型,适用于语音处理。
- snac_32khz:比特率为1.9 kbps,适用于音乐和音效处理。
- snac_44khz:比特率为2.6 kbps,同样适用于音乐和音效处理。
所有模型目前仅支持单声道音频处理。
使用方法
SNAC的使用非常简单,用户可以通过pip安装该库:
pip install snac
然后,可以使用Python代码轻松地进行音频编码和解码:
import torch
from snac import SNAC
model = SNAC.from_pretrained("hubertsiuzdak/snac_24khz").eval().cuda()
audio = torch.randn(1, 1, 24000).cuda() # B, 1, T
with torch.inference_mode():
codes = model.encode(audio)
audio_hat = model.decode(codes)
项目特色
- 低比特率压缩:SNAC能够在极低的比特率下实现高质量的音频压缩,这对于需要节省带宽或存储空间的应用来说非常有价值。
- 多尺度处理:通过采用不同频率的令牌采样,SNAC能够更好地捕捉音频的时间结构,从而提高压缩效果。
- 灵活应用:虽然主要针对语音数据训练,但SNAC还提供了适用于音乐和音效处理的模型,显示了其广泛的应用潜力。
- 开源可用:SNAC项目在GitHub上开源,并提供了详细的文档和使用示例,方便研究人员和开发者进行进一步的探索和应用。
通过这些特性,SNAC项目为音频压缩和处理领域带来了新的可能性,有望在语音合成、音频传输等多个领域发挥重要作用。