AcademiCodec:用于学术研究的开源音频编解码模型
本仓库的组织结构如下:
AcademiCodec
├── academicodec
│ ├── utils.py # 各种模型的通用部分
│ ├── modules # 各种模型的通用部分
│ ├── ...
│ ├── quantization # 各种模型的通用部分
│ └── models # 各模型不共享的部分
│ ├── hificodec
│ ├── encodec
│ ├── soundstream
│ └── ...
├── evaluation_metric
├── egs
│ ├── SoundStream*
│ ├── EnCodec*
│ └── HiFi-Codec*
│ ├── start.sh
│ ├── ...
│ └── test.sh
└── README.md
进行中
本项目正在进行中。你可以在 https://arxiv.org/pdf/2305.02765.pdf 找到相关论文。
此外,本项目由大学发起,我们希望更多研究人员能成为贡献者。
摘要 <进行中>
音频编解码模型在音频通信中广泛应用,是将音频压缩为离散表示的关键技术。如今,音频编解码模型越来越多地被用作中间表示应用于生成领域。例如,AudioLM 是一个音频生成模型,它使用 SoundStream 的离散表示作为训练目标,而 VALL-E 则使用 Encodec 模型作为中间特征来辅助 TTS 任务。尽管这些模型很有用,但仍存在两个挑战:(1) 由于缺乏公开可用的训练过程以及需要大规模数据和 GPU,训练这些音频编解码模型可能很困难;(2) 实现良好的重建性能需要许多码本,这增加了生成模型的负担。在本研究中,我们提出了一种群组残差向量量化(GRVQ)技术,并用它开发了一种新型的高保真音频编解码模型 HiFi-Codec,该模型仅需要 4 个码本。我们使用公开可用的 TTS 数据(如 LibriTTS、VCTK、AISHELL 等)训练所有模型,总时长超过 1000 小时,使用 8 个 GPU。我们的实验结果表明,尽管 HiFi-Codec 只需要 4 个码本,但在重建性能方面优于 Encodec。为了促进音频编解码和生成领域的研究,我们推出了 AcademiCodec,这是第一个开源音频编解码工具包,提供 Encodec、SoundStream 和 HiFi-Codec 的训练代码和预训练模型。
🔥 新闻
AcademiCodec
- 2023.4.16:我们首次发布 Encodec 和 SoundStream 的训练代码以及预训练模型,包括 24khz 和 16khz 版本。
- 2023.5.5:我们发布 HiFi-Codec 的代码。
- 2023.6.2:添加
HiFi-Codec-24k-320d/infer.ipynb
,可用于推理声学标记,以供后续 VALL-E、SoundStorm 等模型的训练使用。 - 2023.06.13:重构代码结构。
依赖项
- PyTorch 版本 >= 1.13.0
- Python 版本 >= 3.8
训练自己的模型
请参考具体版本。
数据准备
只需将音频数据准备在一个文件夹中。确保采样率正确。
训练或推理
参考特定文件夹,例如 Encodec_24k_240d 代表 Encodec 模型,采样率为 24khz,下采样率为 240。如果你想使用我们的预训练模型,请参考 https://huggingface.co/Dongchao/AcademiCodec/tree/main
版本说明
- Encodec_16k_320:我们使用 16khz 音频训练,下采样设置为 320,可用于训练 SpearTTS
- Encodec_24k_240d:我们使用 24khz 音频训练,下采样设置为 240,可用于 InstructTTS
- Encodec_24k_32d:我们使用 24khz 音频训练,下采样仅设置为 32,只能使用一个码本,如 AudioGen
- SoundStream_24k_240d:与 Encodec_24k_240d 配置相同
SoundStream、Encodec 和 HiFi-Codec 之间的区别是什么?
我们认为,SoundStream 和 Encodec 之间的主要区别在于不同的判别器选择。Encodec 只使用 STFT 判别器,迫使 STFT 谱图更真实。SoundStream 使用两种类型的判别器,一种迫使波形级更真实,另一种迫使谱图级更真实。在我们的代码中,我们采用了 HIFI-GAN 的波形级判别器和 Encodec 的谱图级判别器。理论上,我们认为 SoundStream 性能更好。实际上,谷歌官方的 SoundStream 证明了这一点,谷歌只需使用 3 个码本就能重建高质量音频。虽然我们的实现也可以使用 3 个码本实现良好性能,但我们承认目前我们的版本无法与谷歌相比。
对于 HiFi-Codec,这是我们提出的新方法,旨在帮助一些生成任务。如 VALL-E、AudioLM、MusicLM、SpearTTS、IntructTTS 等。HiFi-Codec 只需要 4 个码本,显著减少了标记数量。一些研究人员使用我们的 HiFi-Codec 实现 VALL-E,证明可以获得更好的音频质量。
致谢
此实现使用了以下 Github 仓库的部分代码:
https://github.com/facebookresearch/encodec
https://github.com/yangdongchao/Text-to-sound-Synthesis
https://github.com/b04901014/MQTTS
引用
如果您在研究中发现此代码有用,请引用我们的工作:
@article{yang2023instructtts,
title={InstructTTS: Modelling Expressive TTS in Discrete Latent Space with Natural Language Style Prompt},
author={Yang, Dongchao and Liu, Songxiang and Huang, Rongjie and Lei, Guangzhi and Weng, Chao and Meng, Helen and Yu, Dong},
journal={arXiv preprint arXiv:2301.13662},
year={2023}
}
@article{yang2023hifi,
title={HiFi-Codec: Group-residual Vector quantization for High Fidelity Audio Codec},
author={Yang, Dongchao and Liu, Songxiang and Huang, Rongjie and Tian, Jinchuan and Weng, Chao and Zou, Yuexian},
journal={arXiv preprint arXiv:2305.02765},
year={2023}
}
免责声明
MIT 许可证