AudioDec
AudioDec 是一款开源的流式高保真神经音频编解码器,专为实时语音通信场景设计。它致力于解决传统音频技术在压缩率、延迟和音质之间难以兼顾的痛点:既能将 48kHz 的单声道语音压缩至仅需 12.8 kbps 的极低码率,又能保证重建后的声音高度自然清晰。
该工具的核心优势在于其卓越的实时性能。在 GPU 环境下,其解码延迟低至约 6 毫秒,即使在普通 CPU 上也仅需约 10 毫秒,几乎实现了无感知的即时通信体验。此外,AudioDec 采用了高效的两阶段训练范式,开发者利用预训练模型,仅需数小时即可针对新应用场景完成编码器训练,大幅降低了研发门槛。项目提供了完整的训练、统计提取及实时流式传输的代码模板,并支持自编码器与声码器结合等多种模式。
AudioDec 非常适合从事语音通信、在线会议系统开发的工程师,以及研究神经音频压缩算法的科研人员。对于希望在实际产品中部署高质量、低带宽语音功能的团队来说,这是一个成熟且易于集成的技术选择。
使用场景
某远程医疗平台正在构建一套支持高清听诊音实时传输的在线问诊系统,要求医生能清晰分辨患者心肺杂音细节。
没有 AudioDec 时
- 音质严重受损:传统编码为节省带宽将采样率降至 8kHz 或 16kHz,导致高频病理杂音丢失,医生难以准确诊断。
- 网络带宽压力大:传输未压缩或低效压缩的 48kHz 原始音频需占用极高带宽,在弱网环境下极易卡顿或中断。
- 沟通延迟明显:现有编解码方案在普通服务器上处理延迟往往超过 50ms,造成医患对话出现可感知的“抢话”现象。
- 部署成本高昂:若要兼顾音质与低延迟,通常需依赖昂贵的专用硬件加速卡,增加了中小医院的接入门槛。
使用 AudioDec 后
- 高保真还原病灶音:AudioDec 能在 12.8 kbps 极低码率下完整保留 48kHz 采样率的音频细节,让细微的心肺杂音清晰可辨。
- 弱网环境流畅传输:凭借极高的压缩效率,仅需极小带宽即可传输高清音频,显著提升了移动网络下的通话稳定性。
- 实现近乎零延迟互动:利用其 GPU 约 6ms、CPU 约 10ms 的超低解码延迟,确保了医患交流如面对面般自然顺畅。
- 通用硬件轻松落地:无需专用硬件,仅在常规云服务器甚至四核 CPU 上即可运行,大幅降低了系统的部署与运维成本。
AudioDec 通过突破性的神经编解码技术,成功在极低带宽下实现了医疗级高清音频的实时无损传输,让远程听诊真正具备临床价值。
运行环境要求
- Linux
非必需(支持 CPU 运行),如需 GPU 加速需 NVIDIA 显卡(测试环境为 V100),CUDA 11.0+
未说明

快速开始
本作品采用知识共享署名-非商业性使用4.0国际许可协议授权。
AudioDec:一款开源的流式高保真神经音频编解码器
亮点
- 针对48 kHz单声道语音的可流式高保真音频编解码器,比特率为12.8 kbps。
- 在**GPU(约6 ms)和CPU(约10 ms)**上,使用4个线程时解码延迟极低。
- 高效的两阶段训练流程(借助预训练模型,为新应用训练编码器仅需数小时)。
摘要
适用于电信等实时应用的良好音频编解码器应具备三个关键特性:(1) 压缩率,即传输信号所需的比特率应尽可能低;(2) 延迟,即编码和解码速度需足够快,以实现无延迟或仅有极小延迟的通信;(3) 信号重建质量。在本工作中,我们提出了一种开源、可流式且支持实时处理的神经音频编解码器,该编解码器在这三个方面均表现出色:它能够在仅12 kbps的比特率下重建高度自然的48 kHz语音信号,并且具有低于6 ms(GPU)/10 ms(CPU)的延迟。此外,我们还展示了一种高效的训练范式,可用于开发面向实际场景的此类神经音频编解码器。[论文] [演示]
AudioDec 的两种模式
- 自编码器(对称AudioDec,symAD) 1-1. 使用纯度量损失,在前20万次迭代中从头开始训练自编码器模型。 1-2. 固定编码器、投影器、量化器和码本,在接下来的50万次迭代中使用判别器训练解码器。
- 自编码器 + 声码器(AD v0,1,2,推荐!) 2-1. 提取由已训练编码器提取的码的统计信息(全局均值和方差)。 2-2. 使用已训练的编码器和这些统计信息,训练声码器50万次迭代。
最新消息
- 2025年3月3日:后续工作FlowDec已发布。
- 2024年1月3日:更新了预训练模型(issue9 和 issue11)。
- 2023年5月17日:将演示音频上传至演示页面。
- 2023年5月13日:发布了1.0版本。
系统要求
本仓库已在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: 演示相关工具的源代码。
运行实时流式编解码演示
- 请下载整个exp文件夹,并将其放置在AudioDec项目目录中。
- 获取所有I/O设备列表
$ python -m sounddevice
- 运行演示
# 推荐使用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
使用文件运行编解码演示
- 请下载整个exp文件夹,并将其放置在AudioDec项目目录中。
- 运行演示
## 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流水线
- 准备训练/验证/测试语料,并将其分别放入三个不同的文件夹中, 例如:corpus/train、corpus/dev和corpus/test。
- 修改路径(如:/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
- 在以下配置文件中指定相应的
analyzer和stats: config/statistic/symAD_vctk_48000_hop300_clean.yaml config/vocoder/AudioDec_v1_symAD_vctk_48000_hop300_clean.yaml - 按照submit_codec_vctk.sh中的使用说明,执行训练和测试。
# 阶段0:从零开始训练自编码器
# 阶段1:提取统计信息
# 阶段2:从零开始训练声码器
# 阶段3:测试(对称自编码器)
# 阶段4:测试(自编码器+声码器)
# 执行阶段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"
仅训练和测试自编码器
- 准备训练/验证/测试语料,并修改路径。
- 按照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 获取(仅提供生成器)。
| 自编码器 | 语料库 | 采样率 | 码率 | 路径 |
|---|---|---|---|---|
| symAD | VCTK | 48 kHz | 24 kbps | exp/autoencoder/symAD_c16_vctk_48000_hop320 |
| symAAD | VCTK | 48 kHz | 12.8 kbps | exp/autoencoder/symAAD_vctk_48000_hop300 |
| symAD | VCTK | 48 kHz | 12.8 kbps | exp/autoencoder/symAD_vctk_48000_hop300 |
| symAD_univ | VCTK | 48 kHz | 12.8 kbps | exp/autoencoder/symADuniv_vctk_48000_hop300 |
| symAD | LibriTTS | 24 kHz | 6.4 kbps | exp/autoencoder/symAD_libritts_24000_hop300 |
| 声码器 | 语料库 | 采样率 | 路径 |
|---|---|---|---|
| AD v0 | VCTK | 48 kHz | exp/vocoder/AudioDec_v0_symAD_vctk_48000_hop300_clean |
| AD v1 | VCTK | 48 kHz | exp/vocoder/AudioDec_v1_symAD_vctk_48000_hop300_clean |
| AD v2 | VCTK | 48 kHz | exp/vocoder/AudioDec_v2_symAD_vctk_48000_hop300_clean |
| AD_univ | VCTK | 48 kHz | exp/vocoder/AudioDec_v3_symADuniv_vctk_48000_hop300_clean |
| AD v1 | LibriTTS | 24 kHz | exp/vocoder/AudioDec_v1_symAD_libritts_24000_hop300_clean |
附录:降噪
- 只需使用带噪-干净语音对更新编码器(保持解码器/声码器不变),即可轻松实现降噪。
- 准备带噪-干净语音语料,并按照 submit_denoise.sh 中的使用说明运行训练和测试。
# 更新用于降噪的编码器
$ bash submit_denoise.sh --stage 0 \
--tag_name "denoise/symAD_vctk_48000_hop300"
# 降噪
$ bash submit_denoise.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 仓库基于以下项目开发:
- kan-bayashi/ParallelWaveGAN
- r9y9/wavenet_vocoder
- jik876/hifi-gan
- lucidrains/vector-quantize-pytorch
- chomeyama/SiFiGAN
许可证
“AudioDec: 一个开源的高保真流式神经音频编解码器”的大部分内容采用 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_vocoder 以及 https://github.com/chomeyama/SiFiGAN 均采用 MIT 许可证。
常见问题解答
- 您是否将 AudioDec 与 Encodec 进行过比较?
请参阅 讨论。 - 您是否将 AudioDec 与 Opus 等非神经网络编解码器进行过比较?
由于本文重点在于提供一种具有高效训练范式和模块化架构的成熟流式神经编解码器实现,我们仅将 AudioDec 与 SoundStream 进行了比较。 - 是否也会发布预训练的判别器?
对于许多应用(如降噪),仅更新编码器即可达到与更新整个模型几乎相同的效果。而对于涉及解码器更新的应用(如双耳渲染),可能更适合为该特定应用设计专用判别器。因此,我们仅发布生成器。 - AudioDec 是否可以编解码多声道信号?
是的,您可以通过修改配置中的 input_channels 和 output_channels 来训练 MIMO 模型。我在训练 MIMO 模型时学到的一点经验是:尽管生成器本身是 MIMO 的,但在后续判别器处理前将生成器输出信号重塑为单声道,能够显著提升 MIMO 音质。
版本历史
pretrain_models_v022024/01/03常见问题
相似工具推荐
ML-For-Beginners
ML-For-Beginners 是由微软推出的一套系统化机器学习入门课程,旨在帮助零基础用户轻松掌握经典机器学习知识。这套课程将学习路径规划为 12 周,包含 26 节精炼课程和 52 道配套测验,内容涵盖从基础概念到实际应用的完整流程,有效解决了初学者面对庞大知识体系时无从下手、缺乏结构化指导的痛点。 无论是希望转型的开发者、需要补充算法背景的研究人员,还是对人工智能充满好奇的普通爱好者,都能从中受益。课程不仅提供了清晰的理论讲解,还强调动手实践,让用户在循序渐进中建立扎实的技能基础。其独特的亮点在于强大的多语言支持,通过自动化机制提供了包括简体中文在内的 50 多种语言版本,极大地降低了全球不同背景用户的学习门槛。此外,项目采用开源协作模式,社区活跃且内容持续更新,确保学习者能获取前沿且准确的技术资讯。如果你正寻找一条清晰、友好且专业的机器学习入门之路,ML-For-Beginners 将是理想的起点。
GPT-SoVITS
GPT-SoVITS 是一款强大的开源语音合成与声音克隆工具,旨在让用户仅需极少量的音频数据即可训练出高质量的个性化语音模型。它核心解决了传统语音合成技术依赖海量录音数据、门槛高且成本大的痛点,实现了“零样本”和“少样本”的快速建模:用户只需提供 5 秒参考音频即可即时生成语音,或使用 1 分钟数据进行微调,从而获得高度逼真且相似度极佳的声音效果。 该工具特别适合内容创作者、独立开发者、研究人员以及希望为角色配音的普通用户使用。其内置的友好 WebUI 界面集成了人声伴奏分离、自动数据集切片、中文语音识别及文本标注等辅助功能,极大地降低了数据准备和模型训练的技术门槛,让非专业人士也能轻松上手。 在技术亮点方面,GPT-SoVITS 不仅支持中、英、日、韩、粤语等多语言跨语种合成,还具备卓越的推理速度,在主流显卡上可实现实时甚至超实时的生成效率。无论是需要快速制作视频配音,还是进行多语言语音交互研究,GPT-SoVITS 都能以极低的数据成本提供专业级的语音合成体验。
TTS
🐸TTS 是一款功能强大的深度学习文本转语音(Text-to-Speech)开源库,旨在将文字自然流畅地转化为逼真的人声。它解决了传统语音合成技术中声音机械生硬、多语言支持不足以及定制门槛高等痛点,让高质量的语音生成变得触手可及。 无论是希望快速集成语音功能的开发者,还是致力于探索前沿算法的研究人员,亦或是需要定制专属声音的数据科学家,🐸TTS 都能提供得力支持。它不仅预置了覆盖全球 1100 多种语言的训练模型,让用户能够即刻上手,还提供了完善的工具链,支持用户利用自有数据训练新模型或对现有模型进行微调,轻松实现特定风格的声音克隆。 在技术亮点方面,🐸TTS 表现卓越。其最新的 ⓍTTSv2 模型支持 16 种语言,并在整体性能上大幅提升,实现了低于 200 毫秒的超低延迟流式输出,极大提升了实时交互体验。此外,它还无缝集成了 🐶Bark、🐢Tortoise 等社区热门模型,并支持调用上千个 Fairseq 模型,展现了极强的兼容性与扩展性。配合丰富的数据集分析与整理工具,🐸TTS 已成为科研与生产环境中备受信赖的语音合成解决方案。
LocalAI
LocalAI 是一款开源的本地人工智能引擎,旨在让用户在任意硬件上轻松运行各类 AI 模型,包括大语言模型、图像生成、语音识别及视频处理等。它的核心优势在于彻底打破了高性能计算的门槛,无需昂贵的专用 GPU,仅凭普通 CPU 或常见的消费级显卡(如 NVIDIA、AMD、Intel 及 Apple Silicon)即可部署和运行复杂的 AI 任务。 对于担心数据隐私的用户而言,LocalAI 提供了“隐私优先”的解决方案,确保所有数据处理均在本地基础设施内完成,无需上传至云端。同时,它完美兼容 OpenAI、Anthropic 等主流 API 接口,这意味着开发者可以无缝迁移现有应用,直接利用本地资源替代云服务,既降低了成本又提升了可控性。 LocalAI 内置了超过 35 种后端支持(如 llama.cpp、vLLM、Whisper 等),并集成了自主 AI 代理、工具调用及检索增强生成(RAG)等高级功能,且具备多用户管理与权限控制能力。无论是希望保护敏感数据的企业开发者、进行算法实验的研究人员,还是想要在个人电脑上体验最新 AI 技术的极客玩家,都能通过 LocalAI 获
bark
Bark 是由 Suno 推出的开源生成式音频模型,能够根据文本提示创造出高度逼真的多语言语音、音乐、背景噪音及简单音效。与传统仅能朗读文字的语音合成工具不同,Bark 基于 Transformer 架构,不仅能模拟说话,还能生成笑声、叹息、哭泣等非语言声音,甚至能处理带有情感色彩和语气停顿的复杂文本,极大地丰富了音频表达的可能性。 它主要解决了传统语音合成声音机械、缺乏情感以及无法生成非语音类音效的痛点,让创作者能通过简单的文字描述获得生动自然的音频素材。无论是需要为视频配音的内容创作者、探索多模态生成的研究人员,还是希望快速原型设计的开发者,都能从中受益。普通用户也可通过集成的演示页面轻松体验其神奇效果。 技术亮点方面,Bark 支持商业使用(MIT 许可),并在近期更新中实现了显著的推理速度提升,同时提供了适配低显存 GPU 的版本,降低了使用门槛。此外,社区还建立了丰富的提示词库,帮助用户更好地驾驭模型生成特定风格的声音。只需几行 Python 代码,即可将创意文本转化为高质量音频,是连接文字与声音世界的强大桥梁。
airi
airi 是一款开源的本地化 AI 伴侣项目,旨在将虚拟角色(如“二次元老婆”或赛博生命)带入用户的现实世界。它的核心目标是复刻并超越知名 AI 主播 Neuro-sama 的能力,让用户能够拥有完全自主掌控、可私有化部署的智能伙伴。 airi 主要解决了用户对高度定制化、具备情感交互能力且数据隐私安全的 AI 角色的需求。不同于依赖云端服务的通用助手,airi 允许用户在本地运行,不仅保护了对话隐私,还赋予了用户定义角色性格与灵魂的自由。它支持实时语音聊天,甚至能直接参与《我的世界》(Minecraft)和《异星工厂》(Factorio)等游戏,实现了从单纯对话到共同娱乐的跨越。 这款工具非常适合喜爱虚拟角色的普通用户、希望搭建个性化 AI 陪伴的技术爱好者,以及研究多模态交互的开发者。其独特的技术亮点在于跨平台支持(涵盖 Web、macOS 和 Windows)以及强大的游戏交互能力,让 AI 不仅能“说”,还能“玩”。通过容器化的灵魂设计,airi 为每个人创造专属数字生命提供了可能,让虚拟陪伴变得更加真实且触手可及。