Project Icon

AudioDec

流式高保真神经音频编解码开源项目

AudioDec项目开发了一种流式高保真神经音频编解码器,可以12.8 kbps的比特率处理48 kHz单声道语音。该编解码器在GPU上解码延迟约6毫秒,CPU上约10毫秒。项目采用两阶段训练方法,利用预训练模型可快速为新应用训练编码器。AudioDec在压缩率、延迟和重建质量方面均表现优异,适用于实时通信等场景。

知识共享许可协议 本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。

AudioDec:开源流式高保真神经音频编解码器

亮点

  • 适用于48 kHz单声道语音的流式高保真音频编解码器,比特率为12.8 kbps
  • 在**GPU(约6毫秒)CPU(约10毫秒,4线程)**上解码延迟极低。
  • 高效的两阶段训练(使用预训练模型,为新应用训练编码器仅需几小时)

摘要

适用于实时通信等应用的优秀音频编解码器具有三个关键特性:(1) 压缩,即传输信号所需的比特率应尽可能低;(2) 延迟,即编码和解码信号的速度必须足够快,以实现无延迟或仅有最小可察觉延迟的通信;(3) 信号的重建质量。在本研究中,我们提出了一种开源、可流式传输和实时的神经音频编解码器,在这三个方面都取得了出色的表现:它能以仅12 kbps的比特率重建高度自然的48 kHz语音信号,同时在GPU上运行延迟不到6毫秒,在CPU上运行延迟不到10毫秒。我们还展示了一种高效的训练范式,用于开发适用于实际场景的神经音频编解码器。[论文] [演示]

AudioDec的两种模式

  1. 自动编码器(对称AudioDec,symAD
    1-1. 在前200k次迭代中,仅使用度量损失从头开始训练基于自动编码器的编解码器模型。
    1-2. 固定编码器、投影器、量化器和码本,在接下来的500k次迭代中训练解码器和判别器。
  2. 自动编码器 + 声码器(AD v0,1,2)(推荐!)
    2-1. 提取经过训练的编码器提取的代码的统计数据(全局均值和方差)。
    2-2. 使用经过训练的编码器和统计数据训练声码器,持续500k次迭代。

新闻

  • 2024/01/03:更新预训练模型(问题9问题11
  • 2023/05/17:在演示页面上传示例音频
  • 2023/05/13:发布第一个版本

要求

本仓库在Ubuntu 20.04上使用V100进行测试,并使用以下设置。

  • Python 3.8+
  • Cuda 11.0+
  • PyTorch 1.10+

文件夹结构

  • bin: 训练、统计提取、测试和流式处理模板的文件夹。
  • config: 配置文件(.yaml)的文件夹。
  • dataloader: 数据加载的源代码。
  • exp: 保存模型的文件夹。
  • layers: 基本神经网络层的源代码。
  • losses: 损失函数的源代码。
  • models: 模型的源代码。
  • slurmlogs: 保存slurm日志的文件夹。
  • stats: 保存统计数据的文件夹。
  • trainer: 训练器的源代码。
  • utils: 演示用的工具源代码。

运行实时流式编码/解码演示

  1. 请下载完整的exp文件夹,并将其放置在AudioDec项目目录中。
  2. 获取所有I/O设备列表
$ python -m sounddevice
  1. 运行演示
# 推荐使用LibriTTS模型,因为它对任意麦克风的通道不匹配具有鲁棒性。
# 根据I/O设备列表设置输入输出设备

# 使用GPU
$ python demoStream.py --tx_cuda 0 --rx_cuda 0 --input_device 1 --output_device 4 --model libritts_v1

# 使用CPU
$ python demoStream.py --tx_cuda -1 --rx_cuda -1 --input_device 1 --output_device 4 --model libritts_sym

# 输入和输出音频将被保存为input.wav和output.wav

运行文件编解码演示

  1. 请下载完整的exp文件夹,并将其放置在AudioDec项目目录中。
  2. 运行演示
## VCTK 48000Hz模型
$ python demoFile.py --model vctk_v1 -i xxx.wav -o ooo.wav

## LibriTTS 24000Hz模型
$ python demoFile.py --model libritts_v1 -i xxx.wav -o ooo.wav

训练和测试完整的AudioDec流程

  1. 准备训练/验证/测试语音,并将它们放在三个不同的文件夹中
    例如:corpus/traincorpus/devcorpus/test
  2. 修改以下文件中的路径(例如:/mnt/home/xxx/datasets)
    submit_codec_vctk.sh
    config/autoencoder/symAD_vctk_48000_hop300.yaml
    config/statistic/symAD_vctk_48000_hop300_clean.yaml
    config/vocoder/AudioDec_v1_symAD_vctk_48000_hop300_clean.yaml
  3. 在以下文件中分配相应的analyzerstats
    config/statistic/symAD_vctk_48000_hop300_clean.yaml
    config/vocoder/AudioDec_v1_symAD_vctk_48000_hop300_clean.yaml
  4. 按照submit_codec_vctk.sh中的使用说明运行训练和测试
# 阶段0:从头开始训练自动编码器
# 阶段1:提取统计数据
# 阶段2:从头开始训练声码器
# 阶段3:测试(symAE)
# 阶段4:测试(AE + 声码器)

# 运行阶段0-4
$ bash submit_codec.sh --start 0 --stop 4 \
--autoencoder "autoencoder/symAD_vctk_48000_hop300" \
--statistic "stati/symAD_vctk_48000_hop300_clean" \
--vocoder "vocoder/AudioDec_v1_symAD_vctk_48000_hop300_clean"  

仅训练和测试自动编码器

  1. 准备训练/验证/测试语音并修改路径
  2. 按照submit_autoencoder.sh中的使用说明运行训练和测试
# 从头开始训练自动编码器
$ bash submit_autoencoder.sh --stage 0 \
--tag_name "autoencoder/symAD_vctk_48000_hop300"

# 从之前的迭代恢复自动编码器训练
$ bash submit_autoencoder.sh --stage 1 \
--tag_name "autoencoder/symAD_vctk_48000_hop300" \
--resumepoint 200000

# 测试自动编码器
$ bash submit_autoencoder.sh --stage 2 \
--tag_name "autoencoder/symAD_vctk_48000_hop300"
--subset "clean_test"

预训练模型

所有预训练模型可通过exp获取(仅提供生成器)。

自动编码器语料库采样率比特率路径
symADVCTK48 kHz24 kbpsexp/autoencoder/symAD_c16_vctk_48000_hop320
symAADVCTK48 kHz12.8 kbpsexp/autoencoder/symAAD_vctk_48000_hop300
symADVCTK48 kHz12.8 kbpsexp/autoencoder/symAD_vctk_48000_hop300
symAD_univVCTK48 kHz12.8 kbpsexp/autoencoder/symADuniv_vctk_48000_hop300
symADLibriTTS24 kHz6.4 kbpsexp/autoencoder/symAD_libritts_24000_hop300
声码器语料库采样率路径
------------
AD v0VCTK48 kHzexp/vocoder/AudioDec_v0_symAD_vctk_48000_hop300_clean
AD v1VCTK48 kHzexp/vocoder/AudioDec_v1_symAD_vctk_48000_hop300_clean
AD v2VCTK48 kHzexp/vocoder/AudioDec_v2_symAD_vctk_48000_hop300_clean
AD_univVCTK48 kHzexp/vocoder/AudioDec_v3_symADuniv_vctk_48000_hop300_clean
AD v1LibriTTS24 kHzexp/vocoder/AudioDec_v1_symAD_libritts_24000_hop300_clean

额外功能:去噪

  1. 只需使用噪声-干净音频对更新编码器(保持解码器/声码器不变),就可以轻松实现去噪。
  2. 准备噪声-干净音频语料库,并按照submit_denoise.sh中的使用说明运行训练和测试
# 更新编码器以进行去噪
$ bash submit_autoencoder.sh --stage 0 \
--tag_name "denoise/symAD_vctk_48000_hop300"

# 去噪
$ bash submit_autoencoder.sh --stage 2 \
--encoder "denoise/symAD_vctk_48000_hop300"
--decoder "vocoder/AudioDec_v1_symAD_vctk_48000_hop300_clean"
--encoder_checkpoint 200000
--decoder_checkpoint 500000
--subset "noisy_test"

# 使用GPU进行流式演示
$ python demoStream.py --tx_cuda 0 --rx_cuda 0 --input_device 1 --output_device 4 --model vctk_denoise

# 使用文件进行编解码演示
$ python demoFile.py -i xxx.wav -o ooo.wav --model vctk_denoise

引用

如果您发现代码有帮助,请引用以下文章。

@INPROCEEDINGS{10096509,
  author={Wu, Yi-Chiao and Gebru, Israel D. and Marković, Dejan and Richard, Alexander},
  booktitle={ICASSP 2023 - 2023 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)}, 
  title={{A}udio{D}ec: An Open-Source Streaming High-Fidelity Neural Audio Codec}, 
  year={2023},
  doi={10.1109/ICASSP49357.2023.10096509}}

参考文献

AudioDec 仓库基于以下仓库开发。

许可证

"AudioDec: An Open-source Streaming High-fidelity Neural Audio Codec"的大部分内容均采用CC-BY-NC许可,但项目的某些部分使用单独的许可条款:https://github.com/kan-bayashi/ParallelWaveGAN、https://github.com/lucidrains/vector-quantize-pytorch、https://github.com/jik876/hifi-gan、https://github.com/r9y9/wavenet_vocoderhttps://github.com/chomeyama/SiFiGAN 均采用MIT许可证。

常见问题解答

  1. 你们是否比较过AudioDec和Encodec?
    请参阅讨论
  2. 你们是否比较过AudioDec和其他非神经网络编解码器,如Opus?
    由于本文主要关注提供一个具有高效训练范式和模块化架构的完善的可流式神经编解码器实现,我们只将AudioDec与SoundStream进行了比较。
  3. 你们能否也发布预训练的判别器?
    对于许多应用(如去噪),仅更新编码器就能达到与更新整个模型几乎相同的性能。对于涉及解码器更新的应用(如双耳渲染),为该应用设计特定的判别器可能会更好。因此,我们只发布生成器。
  4. AudioDec能否编码/解码多通道信号?
    可以,您可以通过更改配置中的input_channels和output_channels来训练MIMO模型。我在训练MIMO模型时学到的一个经验是,虽然生成器是MIMO的,但将生成器输出信号重塑为单声道后再传递给判别器会显著提高MIMO音频质量。
项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

白日梦AI

白日梦AI提供专注于AI视频生成的多样化功能,包括文生视频、动态画面和形象生成等,帮助用户快速上手,创造专业级内容。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

讯飞绘镜

讯飞绘镜是一个支持从创意到完整视频创作的智能平台,用户可以快速生成视频素材并创作独特的音乐视频和故事。平台提供多样化的主题和精选作品,帮助用户探索创意灵感。

Project Cover

讯飞文书

讯飞文书依托讯飞星火大模型,为文书写作者提供从素材筹备到稿件撰写及审稿的全程支持。通过录音智记和以稿写稿等功能,满足事务性工作的高频需求,帮助撰稿人节省精力,提高效率,优化工作与生活。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

AIWritePaper论文写作

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号