HuggingFace镜像/bigvgan_v2_22khz_80band_256x
模型介绍文件和版本分析
下载使用量0

BigVGAN:大规模训练的通用神经声码器

Sang-gil Lee, Wei Ping, Boris Ginsburg, Bryan Catanzaro, Sungroh Yoon

[论文] - [代码] - [展示] - [项目页面] - [权重] - [演示]

PWC

新闻

  • 2024年7月(v2.3):

    • 全面重构和代码改进,以提高可读性。
    • 完全融合的抗混叠激活CUDA内核(上采样 + 激活 + 下采样),并附带推理速度基准测试。
  • 2024年7月(v2.2): 仓库现在包含使用Gradio构建的交互式本地演示。

  • 2024年7月(v2.1): BigVGAN现已与🤗 Hugging Face Hub集成,可使用预训练检查点轻松进行推理。我们还在Hugging Face Spaces上提供了交互式演示。

  • 2024年7月(v2): 我们发布了BigVGAN-v2以及预训练检查点。以下是亮点:

    • 用于推理的自定义CUDA内核:我们提供了一个融合的上采样 + 激活CUDA内核,以加速推理速度。我们的测试显示,在单个A100 GPU上速度提升1.5 - 3倍。
    • 改进的判别器和损失函数:BigVGAN-v2使用多尺度子带CQT判别器和多尺度梅尔频谱图损失进行训练。
    • 更大的训练数据:BigVGAN-v2使用包含多种音频类型的数据集进行训练,包括多种语言的语音、环境声音和乐器。
    • 我们提供了采用多种音频配置的BigVGAN-v2预训练检查点,支持高达44 kHz的采样率和512倍的上采样比。

安装

本仓库包含预训练的 BigVGAN 检查点,可轻松进行推理,并支持 huggingface_hub。

如果您对模型训练和其他功能感兴趣,请访问官方 GitHub 仓库获取更多信息:https://github.com/NVIDIA/BigVGAN

git lfs install
git clone https://huggingface.co/nvidia/bigvgan_v2_22khz_80band_256x

使用方法

以下示例介绍了如何使用 BigVGAN:从 Hugging Face Hub 加载预训练的 BigVGAN 生成器,从输入波形计算梅尔频谱图,并将该梅尔频谱图作为模型输入生成合成波形。

device = 'cuda'

import torch
import bigvgan
import librosa
from meldataset import get_mel_spectrogram

# instantiate the model. You can optionally set use_cuda_kernel=True for faster inference.
model = bigvgan.BigVGAN.from_pretrained('nvidia/bigvgan_v2_22khz_80band_256x', use_cuda_kernel=False)

# remove weight norm in the model and set to eval mode
model.remove_weight_norm()
model = model.eval().to(device)

# load wav file and compute mel spectrogram
wav_path = '/path/to/your/audio.wav'
wav, sr = librosa.load(wav_path, sr=model.h.sampling_rate, mono=True) # wav is np.ndarray with shape [T_time] and values in [-1, 1]
wav = torch.FloatTensor(wav).unsqueeze(0) # wav is FloatTensor with shape [B(1), T_time]

# compute mel spectrogram from the ground truth audio
mel = get_mel_spectrogram(wav, model.h).to(device) # mel is FloatTensor with shape [B(1), C_mel, T_frame]

# generate waveform from mel
with torch.inference_mode():
    wav_gen = model(mel) # wav_gen is FloatTensor with shape [B(1), 1, T_time] and values in [-1, 1]
wav_gen_float = wav_gen.squeeze(0).cpu() # wav_gen is FloatTensor with shape [1, T_time]

# you can convert the generated waveform to 16 bit linear PCM
wav_gen_int16 = (wav_gen_float * 32767.0).numpy().astype('int16') # wav_gen is now np.ndarray with shape [1, T_time] and int16 dtype

使用自定义 CUDA 内核进行合成

实例化 BigVGAN 时,您可以通过参数 use_cuda_kernel 应用快速 CUDA 推理内核:

import bigvgan
model = bigvgan.BigVGAN.from_pretrained('nvidia/bigvgan_v2_22khz_80band_256x', use_cuda_kernel=True)

首次使用时,它会通过 nvcc 和 ninja 构建内核。如果构建成功,内核将保存到 alias_free_activation/cuda/build 目录,模型会自动加载该内核。此代码库已使用 CUDA 12.1 版本测试通过。

请确保您的系统中已安装上述两者,并且系统中安装的 nvcc 版本与您的 PyTorch 构建所使用的版本相匹配。

有关详细信息,请参阅官方 GitHub 仓库:https://github.com/NVIDIA/BigVGAN?tab=readme-ov-file#using-custom-cuda-kernel-for-synthesis

预训练模型

我们在 Hugging Face Collections 上提供了预训练模型。 您可以在列出的模型仓库中下载生成器权重的检查点(命名为 bigvgan_generator.pt)及其判别器/优化器状态(命名为 bigvgan_discriminator_optimizer.pt)。

模型名称采样率梅尔频段最高频率上采样倍率参数量数据集步数是否微调
bigvgan_v2_44khz_128band_512x44 kHz12822050512122M大规模 compilation 数据集5M否
bigvgan_v2_44khz_128band_256x44 kHz12822050256112M大规模 compilation 数据集5M否
bigvgan_v2_24khz_100band_256x24 kHz10012000256112M大规模 compilation 数据集5M否
bigvgan_v2_22khz_80band_256x22 kHz8011025256112M大规模 compilation 数据集5M否
bigvgan_v2_22khz_80band_fmax8k_256x22 kHz808000256112M大规模 compilation 数据集5M否
bigvgan_24khz_100band24 kHz10012000256112MLibriTTS5M否
bigvgan_base_24khz_100band24 kHz1001200025614MLibriTTS5M否
bigvgan_22khz_80band22 kHz808000256112MLibriTTS + VCTK + LJSpeech5M否
bigvgan_base_22khz_80band22 kHz80800025614MLibriTTS + VCTK + LJSpeech5M否