中文 | English
如果您觉得这个项目有用,请给我们一个 GitHub 星标 🌟。
🎉 用于语音语言大模型的离散编解码器,24KHz 采样率下每秒只需 24个 token!
不同颜色的线分别表示推理中使用的数据流和仅用于训练的数据流。在推理过程中,输入音频通过编码器和 VQ1 处理生成离散量化结果,然后由 MLP 进行细化。再通过解码器和特殊微调后的 BigVGAN 重建梅尔频谱图和音频。
其中
要安装 HHCodec,请按照以下步骤操作:
conda create -n hhcodec python=3.10 # 必须大于3.10,因为使用了bigvgan
conda activate hhcodec
git clone https://github.com/opendilab/HH-Codec.git
cd HH-Codec
pip install -e .
# 安装UTMOS评估的依赖
pip install fairseq
# 如果遇到冲突,请尝试:
pip install pip==24.0确保您的数据集已按照 dataset 中的说明进行预处理。
运行脚本后,将在 REP_PATH 生成文件:
dataset/Hubert/libritts_train_clean_100.txt
每行将原始音频文件路径映射到其对应的 HuBERT 嵌入位置。
以下数据集需要按此方式处理才能达到论文中声明的指标:
有关更详细的数据集准备说明,请参阅 dataset/README。
在开始训练之前,更新配置设置
# 打开并修改以下文件 "config/train_with_8gpu.yaml"
# 调整参数,例如:
# - 日志设置
# - 训练路径 "dataset/Hubert/libritts_train_clean_100.txt"
# - 保存目录
# - 设备(例如,CPU/GPU)一旦数据集准备就绪且配置设置完成,启动训练过程的命令如下:
cd HH-Codec
python train.py fit --config configs/train.yaml您可以简单地使用步骤1中的训练集、步骤2中的配置和步骤3中的训练脚本,来运行复现论文中描述的模型结果。由于我们仍在完善算法,在论文最终版本被期刊接受后,将开源一系列最新的最优模型权重,希望我们设计的语音 tokenizer 能够助力更多的衍生工作。
wav, sr = torchaudio.load(audio_path).to(device))
wav = convert_audio(wav, sr, 24000, 1).unsqueeze(0).unsqueeze(0)
# 生成离散编码结果
_, _, _, _, quant, _, index = model.encode(audio)
# 从索引获取对应量化后的值
quant = model.quantize.indices_to_codes(index)
# 从量化后的结果重建音频
reconstructed_mel, reconstructed_audios = model.decode(quant)@article{xue2025hh,
title={HH-Codec: High Compression High-fidelity Discrete Neural Codec for Spoken Language Modeling},
author={Xue, Rongkun and Niu, Yazhe and Hu, Shuai and Yin, Zixin and Yao, Yongqiang and Yang, Jing},
journal={arXiv preprint arXiv:2507.18897},
year={2025}
}本项目部分基于 GitHub 上的以下开源工作扩展开发。 我们对这些基础资源表示深切感谢:
本仓库中的所有代码均采用 Apache License 2.0 许可证。

