FunCodec
阿里达摩院开源的神经语音编解码工具包,支持音频压缩、零样本TTS和音乐生成
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
阿里达摩院开源的神经语音编解码工具包,支持音频压缩、零样本TTS和音乐生成
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
想象一下:你要把一段30分钟的播客音频压缩到能装进一条短信的空间里,同时保留播主的音色、语气、甚至背景音乐的层次感——这不是天方夜谭,正是 FunCodec 正在做的事。2023年9月,阿里巴巴达摩院语音实验室发布了 FunCodec,一款专注于神经语音编解码(Neural Speech Codec)的开源工具包。它的出现,让研究者和工程师不再依赖商业音频编解码器,也能训练自己的高质量音频压缩模型。
传统的语音编解码器(如 Opus、AMR-WB)诞生于信号处理时代,依赖手工设计的滤波器和人耳听觉模型。它们在低码率下表现尚可,但在极低码率(如 250-500 bps)或高保真场景下,音质劣化和音色失真是普遍问题。
随着深度学习的突破,神经语音编解码器(如 SoundStream、Encodec、HiFi-GAN)展现出压倒性优势:同等码率下重建质量更高,还能学习说话人的音色特征。但这些模型分散在不同的代码库中,训练流程各异,预训练模型获取困难,普通研究者难以复现。
FunCodec 正是为了解决这个痛点而生。它由阿里巴巴达摩院 Speech Lab 开发,论文于 2023 年 9 月发表在 arXiv(arXiv:2309.07405),作者包括 Zhihao Du、Shiliang Zhang、Kai Hu 和 Siqi Zheng。项目的核心目标用三个词概括:可复现(Reproducible)、可集成(Integrable)、可扩展(Fundamental)。
FunCodec 实现了当前主流的神经语音编解码模型架构,包括:
预训练模型支持 250~16000 bps 的码率范围,参数规模从 0.52M 到 57.83M 不等。模型托管在 ModelScope 和 HuggingFace 双平台,可通过脚本一键下载。
FunCodec 包含了下游应用示例,其中最亮眼的是 LauraTTS——一个基于神经语言模型的零样本语音合成系统。
LauraTTS 由两个核心组件构成:
解码器-only 自回归 Transformer LM:将文本提示、音频提示和目标音频都量化为 Codec Tokens,然后在 token 序列上做语言建模。它和 VALL-E / GPT-SoVITS 的思路一脉相承,但 FunCodec 使用 FunCodec 自己的通用 Codec 模型进行音频量化。
编码器-only 非自回归 Transformer Vocoder:接收 LM 输出的 Codec Tokens,以文本为条件预测密集编码(dense encodings),最后用 Codec 解码器还原为波形。
这种双阶段设计让 LauraTTS 在 2023 年底的评测中,在语义一致性和说话人相似度上超越了 VALL-E。
在 egs/jamendo/text2music_laura 目录下,FunCodec 提供了将 LauraTTS 框架迁移到音乐生成任务的示例,能够从文本描述生成音乐片段。这是 Codec 驱动生成模型的又一应用方向。
FunCodec 的代码架构深受 Kaldi 和 ESPnet 的影响,这是它区别于其他 Codec 项目的重要特点:
数据准备:采用 Kaldi 风格的 wav.scp 文件格式管理音频,支持普通 WAV 文件和 Kaldi ARK 格式的混合输入。这种设计在大规模数据集场景下非常高效。
训练流程:参考 ESPnet 的分阶段训练 pipeline,每个 recipe(实验配置)包含 run.sh 主脚本,按 stage 分步执行(数据下载→数据准备→训练→推理),适合逐步调试。
核心模块:在 funcodec/ 包下,模块化组织为:
funcodec/bin/:命令行入口(训练/推理)funcodec/modec/:模型定义(Encodec、SoundStream、FreqCodec 等)funcodec/lm/:语言模型funcodec/datasets/:数据加载和预处理funcodec/layers/:基础网络层(STFT、LogMel、Complex Utils 等)| 类别 | 技术/库 |
|---|---|
| 深度学习框架 | PyTorch >= 1.12 |
| 音频处理 | librosa, soundfile, scipy |
| 数据处理 | kaldiio, h5py |
| 语言模型 | transformers |
| 实验管理 | wandb, tensorboard |
| 自定义层 | local-attention, einops, alias-free-torch, phaseaug |
FunCodec 的安装脚本和 recipe 大量依赖 Bash shell 脚本和 POSIX 工具,在 Windows/macOS 上运行需要 WSL2 或 Docker。目前没有提供预构建的 Docker 镜像,也没有 conda 环境文件,部署门槛对非 Linux 用户不够友好。
虽然推理可以在单张 8GB 显存的 GPU 上运行,但训练高质量模型推荐多卡并行(README 中示例使用 2-4 张 GPU)。对于个人研究者而言,训练成本仍然较高。
作为研究导向的工具包,FunCodec 的单元测试覆盖率较低,API 文档主要靠 README 和论文描述,缺乏完整的技术文档网站。对于想要深度定制的开发者,需要较多探索成本。
FunCodec 的价值不仅在于提供了一套可用的 Codec 模型,更在于它构建了一个从音频压缩到语音合成/音乐生成的完整研究框架。
2023-2024 年,Codec-based TTS 领域涌现了 VALL-E、GST-InstantVoice、GPT-SoVITS 等明星项目,FunCodec 为这些研究方向提供了统一的训练基础和基准模型。它的出现降低了神经语音编解码研究的门槛,让更多学者能够站在同一起跑线上探索。
从阿里巴巴达摩院的视角看,FunCodec 是其开源语音工具矩阵的重要一环——与 FunASR(语音识别)、CosyVoice(语音合成)共同构建了覆盖 ASR-TTS 全链路的开源生态。对国内开发者而言,ModelScope 平台提供了更稳定的高速下载通道,是 HuggingFace 的优质替代。
git clone https://github.com/alibaba-damo-academy/FunCodec.git
cd FunCodec
pip install --editable ./
cd egs/LibriTTS/codec
model_name=audio_codec-encodec-zh_en-general-16k-nq32ds640-pytorch
# 从 ModelScope 下载
bash encoding_decoding.sh --stage 0 --model_name ${model_name} --model_hub modelscope
# 或从 HuggingFace 下载
bash encoding_decoding.sh --stage 0 --model_name ${model_name} --model_hub huggingface
# 编码
bash encoding_decoding.sh --stage 1 --batch_size 16 --gpu_devices 0 --model_dir exp/${model_name}
# 解码
bash encoding_decoding.sh --stage 2 --batch_size 16 --gpu_devices 0 --model_dir exp/${model_name}
cd egs/LibriTTS/text2speech_laura
model_name="speech_synthesizer-laura-en-libritts-16k-codec_nq2-pytorch"
# 自由生成
bash demo.sh --stage 1 --model_name ${model_name} --text "Hello world"
# 零样本(给定音色参考音频)
bash demo.sh --stage 2 --model_name ${model_name} \
--text "Hello world" \
--prompt_audio demo/8230_279154_000013_000003.wav