BigVSAN [ICASSP 2024]
本仓库包含了"BigVSAN:使用切片对抗网络增强基于GAN的神经声码器"(arXiv 2309.02836)的官方PyTorch实现。 在使用此代码进行实验时,请引用[1]。
音频演示
安装
本仓库基于BigVGAN的代码库构建。
请预先在此处下载LibriTTS数据集。
克隆仓库并安装依赖项。
# 代码库已在Python 3.8和PyTorch 1.13.0上测试通过
git clone https://github.com/sony/bigvsan
pip install -r requirements.txt
创建指向数据集根目录的符号链接。代码库使用相对于数据集的文件列表路径。以下是LibriTTS数据集的示例命令。
cd LibriTTS && \
ln -s /path/to/your/LibriTTS/train-clean-100 train-clean-100 && \
ln -s /path/to/your/LibriTTS/train-clean-360 train-clean-360 && \
ln -s /path/to/your/LibriTTS/train-other-500 train-other-500 && \
ln -s /path/to/your/LibriTTS/dev-clean dev-clean && \
ln -s /path/to/your/LibriTTS/dev-other dev-other && \
ln -s /path/to/your/LibriTTS/test-clean test-clean && \
ln -s /path/to/your/LibriTTS/test-other test-other && \
cd ..
训练
训练BigVSAN模型。以下是使用LibriTTS数据集在24kHz采样率下,以完整100频带的梅尔频谱图为输入训练BigVSAN的示例命令。
python train.py \
--config configs/bigvsan_24khz_100band.json \
--input_wavs_dir LibriTTS \
--input_training_file LibriTTS/train-full.txt \
--input_validation_file LibriTTS/val-full.txt \
--list_input_unseen_wavs_dir LibriTTS LibriTTS \
--list_input_unseen_validation_file LibriTTS/dev-clean.txt LibriTTS/dev-other.txt \
--checkpoint_path exp/bigvsan
评估
我们按以下方式评估BigVSAN模型:
在完成模型训练后生成并保存音频样本。以下是生成并保存音频样本以进行评估的示例命令。
python train.py \
--config configs/bigvsan_24khz_100band.json \
--input_wavs_dir LibriTTS \
--input_training_file LibriTTS/train-full.txt \
--input_validation_file LibriTTS/val-full.txt \
--list_input_unseen_wavs_dir LibriTTS LibriTTS \
--list_input_unseen_validation_file LibriTTS/dev-clean.txt LibriTTS/dev-other.txt \
--checkpoint_path exp/bigvsan \
--evaluate True \
--eval_subsample 1 \
--skip_seen True \
--save_audio True
运行此处提供的评估工具。它计算五个客观指标得分:M-STFT、PESQ、MCD、周期性和V/UV F1。
python evaluate.py \
../bigvsan/exp/bigvsan/samples/gt_unseen_LibriTTS-dev-clean ../bigvsan/exp/bigvsan/samples/unseen_LibriTTS-dev-clean_01000001 \
../bigvsan/exp/bigvsan/samples/gt_unseen_LibriTTS-dev-other ../bigvsan/exp/bigvsan/samples/unseen_LibriTTS-dev-other_01000001
完成评估大约需要一个小时。请注意,当使用train.py
生成并保存音频样本时,它也会输出M-STFT和PESQ得分,但这些值会与evaluate.py
的输出不同。这是由于将样本保存为wav文件时进行了16位量化。
合成
使用BigVSAN模型进行合成。以下是从模型生成音频的示例命令。
它使用来自--input_wavs_dir
的wav文件计算梅尔频谱图,并将生成的音频保存到--output_dir
。
python inference.py \
--checkpoint_file exp/bigvsan/g_01000000 \
--input_wavs_dir /path/to/your/input_wav \
--output_dir /path/to/your/output_wav
预训练模型
我们在这里提供了在LibriTTS数据集上训练的预训练检查点。 您可以下载zip文件,每个文件包含生成器(如g_01000000)和判别器(如do_01000000)的检查点。
Zip文件名 | 训练步数 | M-STFT | PESQ | MCD | 周期性 | V/UV F1 |
---|---|---|---|---|---|---|
bigvsan_01mstep | 1,000,000 | 0.7881 | 4.116 | 0.3381 | 0.0935 | 0.9635 |
bigvsan_10mstep | 10,000,000 | 0.7210 | 4.316 | 0.3065 | 0.0726 | 0.9729 |
论文结果基于bigvsan_01mstep
。
引用
[1] Shibuya, T., Takida, Y., Mitsufuji, Y., "BigVSAN: Enhancing GAN-based Neural Vocoders with Slicing Adversarial Network," ICASSP 2024.
@inproceedings{shibuya2024bigvsan,
title={{BigVSAN}: Enhancing GAN-based Neural Vocoders with Slicing Adversarial Network},
author={Shibuya, Takashi and Takida, Yuhta and Mitsufuji, Yuki},
booktitle={ICASSP 2024 - 2024 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP)},
year={2024}
}