[TTS] Implement new vocoder dataset
State: closed | Pull request: yes
Labels: name: core

name: TTS

name: ASR

# What does this PR do ?

Implement new VocoderDataset to support multi-manifest training, which follows the same design pattern as the new TextToSpeechDataset (https://github.com/NVIDIA/NeMo/pull/6575).

**Collection**: [TTS]

# Changelog
- Add VocoderDataset implementation
- Add example config for using data loader
- Add logic in HiFi-GAN recipe for switching to new data loader (matching changes to support UnivNet recipe will be in a future PR).
- Add vocoder logging callback
- Use modified configure_optimizers() implementation from UnivNet recipe (https://github.com/NVIDIA/NeMo/blob/main/nemo/collections/tts/models/univnet.py#L106) to support schedulers other than CosineAnnealing. New config uses scheduler from original HiFi-GAN paper. 

# Usage

Example of training on 2 datasets, LJSpeech with 10% training examples and VCTK with 90%:

```
/home/rlangman/miniconda3/envs/nemo_dev/bin/python /home/rlangman/Code/NeMo/examples/tts/hifigan.py
--config-path=/home/rlangman/Code/NeMo/examples/tts/conf/hifigan
--config-dir=/home/rlangman/Code/NeMo/examples/tts/conf
--config-name=hifigan_22050_data.yaml
sample=22050
max_epochs=1000
weighted_sample_steps=1000
batch_size=16
trainer.devices=1
log_dir=/home/rlangman/exps/ljspeech_vctk/HifiGan/test/samples
exp_manager.exp_dir=/home/rlangman/exps/ljspeech_vctk
+exp_manager.version=test
+train_ds_meta.ljspeech.manifest_path=/home/rlangman/fs_mount/data/ljspeech/train_manifest.json
+train_ds_meta.ljspeech.audio_dir=/home/rlangman/fs_mount/data/ljspeech/audio
+train_ds_meta.ljspeech.sample_weight=0.1
+val_ds_meta.ljspeech.manifest_path=/home/rlangman/fs_mount/data/ljspeech/val_manifest.json
+val_ds_meta.ljspeech.audio_dir=/home/rlangman/fs_mount/data/ljspeech/audio
+log_ds_meta.ljspeech._target_=nemo.collections.tts.data.vocoder_dataset.DatasetMeta
+log_ds_meta.ljspeech.manifest_path=/home/rlangman/fs_mount/data/ljspeech/log_manifest.json
+log_ds_meta.ljspeech.audio_dir=/home/rlangman/fs_mount/data/ljspeech/audio
+train_ds_meta.vctk.manifest_path=/home/rlangman/fs_mount/data/vctk/train_manifest.json
+train_ds_meta.vctk.audio_dir=/home/rlangman/fs_mount/data/vctk/audio
+train_ds_meta.vctk.sample_weight=0.9
+val_ds_meta.vctk.manifest_path=/home/rlangman/fs_mount/data/vctk/val_manifest.json
+val_ds_meta.vctk.audio_dir=/home/rlangman/fs_mount/data/vctk/audio
+log_ds_meta.vctk._target_=nemo.collections.tts.data.vocoder_dataset.DatasetMeta
+log_ds_meta.vctk.manifest_path=/home/rlangman/fs_mount/data/vctk/log_manifest.json
+log_ds_meta.vctk.audio_dir=/home/rlangman/fs_mount/data/vctk/audio
exp_manager.create_wandb_logger=true
+exp_manager.wandb_logger_kwargs.project=hifigan_ljspeech_vctk
+exp_manager.wandb_logger_kwargs.name=test
```


# Before your PR is "Ready for review"
**Pre checks**:
- [x] Make sure you read and followed [Contributor guidelines](https://github.com/NVIDIA/NeMo/blob/main/CONTRIBUTING.md)
- [ ] Did you write any new necessary tests?
- [ ] Did you add or update any necessary documentation?
- [ ] Does the PR affect components that are optional to install? (Ex: Numba, Pynini, Apex etc)
  - [ ] Reviewer: Does the PR have correct import guards for all optional libraries?
  
**PR Type**:
- [x] New Feature
- [ ] Bugfix
- [ ] Documentation