项目介绍:bigvgan_v2_24khz_100band_256x
项目背景
bigvgan_v2_24khz_100band_256x 是由一系列研究人员开发的项目,包括Sang-gil Lee、Wei Ping、Boris Ginsburg、Bryan Catanzaro和Sungroh Yoon。该项目是一种广泛训练的神经声码器,能够通过大型数据集进行音频生成。其主要用途是将输入的音频信号转换为合成音频信号。
项目开源许可为MIT,核心技术基于PyTorch框架,可供在Hugging Face平台上使用。
项目特点
丰富的功能更新
- v2.3 版本(2024年7月):优化了代码的可读性,并在CUDA上实现了全融合反别名激活内核(上采样 + 激活 + 下采样)的推理速度基准测试。
- v2.2 版本(2024年7月):在代码库中添加了使用Gradio的本地交互式演示。
- v2.1 版本(2024年7月):与Hugging Face Hub集成,提供了使用预训练检查点进行推理的简便方式,同时在Hugging Face Spaces上提供了交互演示。
- v2 版本(2024年7月):发布了BigVGAN-v2以及预训练的检查点,特点包括:
- 定制CUDA内核推理,提供了在CUDA中编写的融合上采样 + 激活内核,加速推理速度,上A100单个GPU测试显示约1.5至3倍速度提升。
- 改进的判别器和损失函数,采用多尺度子频段CQT判别器和多尺度梅尔谱损失进行训练。
- 使用大规模和多样化的音频数据集进行训练,包括多种语言的语音、环境声音和乐器音。
- 支持高达44kHz采样率和512倍上采样比率的多种音频配置的预训练检测点。
使用指南
要使用bigvgan进行音频处理,用户可通过Hugging Face Hub直接加载预训练的BigVGAN生成器,计算输入波形的梅尔谱,并以此作为模型的输入生成合成波形。
使用示例如下:
import torch
import bigvgan
import librosa
from meldataset import get_mel_spectrogram
# 设置设备为cuda
device = 'cuda'
# 从预训练模型中实例化BigVGAN
model = bigvgan.BigVGAN.from_pretrained('nvidia/bigvgan_v2_24khz_100band_256x', use_cuda_kernel=False)
model.remove_weight_norm()
model = model.eval().to(device)
# 加载和计算梅尔谱
wav_path = '/path/to/your/audio.wav'
wav, sr = librosa.load(wav_path, sr=model.h.sampling_rate, mono=True)
wav = torch.FloatTensor(wav).unsqueeze(0)
mel = get_mel_spectrogram(wav, model.h).to(device)
# 从梅尔谱生成波形
with torch.inference_mode():
wav_gen = model(mel)
wav_gen_float = wav_gen.squeeze(0).cpu()
wav_gen_int16 = (wav_gen_float * 32767.0).numpy().astype('int16')
自定义CUDA核心合成
可以通过use_cuda_kernel
参数来应用快速CUDA推理内核:
import bigvgan
model = bigvgan.BigVGAN.from_pretrained('nvidia/bigvgan_v2_24khz_100band_256x', use_cuda_kernel=True)
首次应用时,将使用nvcc
和ninja
构建内核。成功后,内核会保存在alias_free_activation/cuda/build
中,模型会自动加载内核。该代码库已使用CUDA 12.1
进行测试。
预训练模型
用户可以从Hugging Face平台下载预训练的模型生成器权重和判别器/优化器状态,从而在大规模编译的数据集上进行合成音频处理。具体的预训练模型信息如下:
模型名称 | 采样率 | Mel频带 | fmax | 上采样比率 | 参数 | 数据集 | 步骤 | 是否微调 |
---|---|---|---|---|---|---|---|---|
bigvgan_v2_24khz_100band_256x | 24 kHz | 100 | 12000 | 256 | 112M | 大规模编译 | 5M | 否 |