🚀 BigVGAN:大規模訓練的通用神經聲碼器
BigVGAN是一種通過大規模訓練實現的通用神經聲碼器,能夠有效應用於音頻生成領域,為語音合成等任務提供高質量的音頻輸出。
🚀 快速開始
本倉庫包含預訓練的BigVGAN檢查點,方便進行推理,並提供了額外的huggingface_hub
支持。
如果你對模型訓練和其他功能感興趣,請訪問官方GitHub倉庫獲取更多信息:https://github.com/NVIDIA/BigVGAN
git lfs install
git clone https://huggingface.co/nvidia/bigvgan_22khz_80band
✨ 主要特性
- 代碼優化:2024年7月(v2.3)進行了全面重構和代碼改進,提高了代碼的可讀性。
- CUDA內核融合:2024年7月(v2.3)實現了抗鋸齒激活(上採樣 + 激活 + 下采樣)的全融合CUDA內核,並進行了推理速度基準測試。
- 本地交互演示:2024年7月(v2.2),倉庫中增加了使用gradio的交互式本地演示。
- Hugging Face集成:2024年7月(v2.1),BigVGAN集成到了Hugging Face Hub,可通過預訓練檢查點輕鬆進行推理,同時在Hugging Face Spaces上提供了交互式演示。
- BigVGAN-v2發佈:2024年7月(v2)發佈了BigVGAN-v2及預訓練檢查點,具有自定義CUDA推理內核、改進的判別器和損失函數、更大的訓練數據集等特點,並提供了支持高達44 kHz採樣率和512x上採樣率的預訓練檢查點。
📦 安裝指南
git lfs install
git clone https://huggingface.co/nvidia/bigvgan_22khz_80band
💻 使用示例
基礎用法
以下示例展示瞭如何使用BigVGAN:從Hugging Face Hub加載預訓練的BigVGAN生成器,從輸入波形計算梅爾頻譜圖,並使用梅爾頻譜圖作為模型輸入生成合成波形。
device = 'cuda'
import torch
import bigvgan
import librosa
from meldataset import get_mel_spectrogram
model = bigvgan.BigVGAN.from_pretrained('nvidia/bigvgan_22khz_80band', 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')
高級用法
你可以在實例化BigVGAN時使用參數use_cuda_kernel
來應用快速CUDA推理內核:
import bigvgan
model = bigvgan.BigVGAN.from_pretrained('nvidia/bigvgan_22khz_80band', 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
)的檢查點。
論文與代碼鏈接
新聞動態
- 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倍。
- 改進的判別器和損失函數:使用多尺度子帶CQT判別器和多尺度梅爾頻譜圖損失進行訓練。
- 更大的訓練數據集:使用包含多種音頻類型的數據集進行訓練,包括多種語言的語音、環境聲音和樂器聲音。
- 提供了使用多種音頻配置的BigVGAN - v2預訓練檢查點,支持高達44 kHz的採樣率和512x的上採樣率。
📄 許可證
本項目採用MIT許可證,詳情請見:LICENSE