首页
/ Vocos 技术文档

Vocos 技术文档

2026-01-25 05:08:50作者:韦蓉瑛

项目简介

Vocos 是一个快速神经声码器,旨在从声学特征合成音频波形。通过使用生成对抗网络(GAN)目标进行训练,Vocos 可以在单次前向传递中生成波形。与其他典型的基于 GAN 的声码器不同,Vocos 不直接在时域中建模音频样本,而是生成频谱系数,通过逆傅里叶变换实现快速音频重建。

安装指南

1. 仅用于推理模式

如果您仅需要使用 Vocos 进行音频合成,可以通过以下命令安装:

pip install vocos

2. 用于训练模式

如果您需要训练 Vocos 模型,请安装包含额外依赖项的版本:

pip install vocos[train]

项目使用说明

1. 从梅尔频谱图重建音频

以下代码展示了如何从梅尔频谱图重建音频:

import torch
from vocos import Vocos

vocos = Vocos.from_pretrained("charactr/vocos-mel-24khz")

mel = torch.randn(1, 100, 256)  # B, C, T
audio = vocos.decode(mel)

2. 从音频文件进行复制合成

以下代码展示了如何从音频文件进行复制合成:

import torchaudio

y, sr = torchaudio.load(YOUR_AUDIO_FILE)
if y.size(0) > 1:  # 混合为单声道
    y = y.mean(dim=0, keepdim=True)
y = torchaudio.functional.resample(y, orig_freq=sr, new_freq=24000)
y_hat = vocos(y)

3. 从 EnCodec 令牌重建音频

此外,您需要提供一个 bandwidth_id,它对应于带宽的嵌入列表:[1.5, 3.0, 6.0, 12.0]

vocos = Vocos.from_pretrained("charactr/vocos-encodec-24khz")

audio_tokens = torch.randint(low=0, high=1024, size=(8, 200))  # 8 个码本,200 帧
features = vocos.codes_to_features(audio_tokens)
bandwidth_id = torch.tensor([2])  # 6 kbps

audio = vocos.decode(features, bandwidth_id=bandwidth_id)

4. 与 Bark 文本到音频模型集成

请参阅 示例笔记本

项目 API 使用文档

1. Vocos.from_pretrained(model_name)

加载预训练的 Vocos 模型。

  • model_name: 预训练模型的名称,例如 "charactr/vocos-mel-24khz"

2. vocos.decode(mel, bandwidth_id=None)

从梅尔频谱图或特征重建音频。

  • mel: 梅尔频谱图或特征。
  • bandwidth_id: 带宽 ID,可选。

3. vocos.codes_to_features(audio_tokens)

将 EnCodec 令牌转换为特征。

  • audio_tokens: EnCodec 令牌。

项目安装方式

Vocos 可以通过 pip 安装,支持推理和训练两种模式。具体安装方式请参考安装指南

参考文献

如果您在研究中使用了 Vocos,请引用以下文献:

@article{siuzdak2023vocos,
  title={Vocos: Closing the gap between time-domain and Fourier-based neural vocoders for high-quality audio synthesis},
  author={Siuzdak, Hubert},
  journal={arXiv preprint arXiv:2306.00814},
  year={2023}
}

许可证

本项目代码基于 MIT 许可证发布,详见 LICENSE 文件。

登录后查看全文
热门项目推荐
相关项目推荐