How to Use DiffWave for Neural Vocoding and Waveform Synthesis

Sep 20, 2020 | Data Science

Welcome to the world of DiffWave, a fast and high-quality neural vocoder and waveform synthesizer. In this article, we will walk you through the process of installing, training, and inferring audio using DiffWave. So, roll up your sleeves, and let’s dive into this exciting technology!

What is DiffWave?

DiffWave operates like a sculptor using a block of marble. Starting with raw Gaussian noise, it chisels away to reveal coherent speech through iterative refinement. By the end, you’ll have a smooth, aesthetic output controlled by a conditioning signal such as a log-scaled Mel spectrogram. Think of it as turning a chaotic bundle of notes into a symphony.

Getting Started: Installation

Before you can start creating amazing audio, you need to install DiffWave.

  1. Using pip:
  2. pip install diffwave
  3. Or clone the GitHub repository:
  4. git clone https://github.com/lmnt-com/diffwave.git
    cd diffwave
    pip install .

Preparing Your Dataset for Training

Much like preparing ingredients for a gourmet dish, you’ll need to set up your training dataset. Follow these guidelines:

  • Use 16-bit mono .wav files.
  • Recommended datasets include LJSpeech and VCTK.
  • The default sample rate is 22.05 kHz; you can change it in params.py.

Starting the Training Process

Once your dataset is ready, you can initiate the training process:

python -m diffwave.preprocess path/to/dir/containing/wavs
python -m diffwave path/to/model/dir path/to/dir/containing/wavs
# In another shell, monitor training progress:
tensorboard --logdir path/to/model/dir --bind_all

Expect to hear intelligible speech after approximately 8k steps (around 1.5 hours on a 2080 Ti).

Multi-GPU Training

For enhanced performance, you can utilize multiple GPUs. By default, the implementation uses all available GPUs. However, if you need a specific set of GPUs, set the environment variable:

export CUDA_VISIBLE_DEVICES=0,1

Inference API and Command-Line Usage

Time to put your trained model to work! You can either use a Python inference API or the command-line interface. Below is the basic usage for the API:

python
from diffwave.inference import predict as diffwave_predict
model_dir = 'path/to/model/dir'
spectrogram = # obtain your spectrogram in [N,C,W] format
audio, sample_rate = diffwave_predict(spectrogram, model_dir, fast_sampling=True)
# audio is a GPU tensor in [N,T] format.

Or, using the command line:

python -m diffwave.inference --fast path/to/model path/to/spectrogram -o output.wav

Troubleshooting Common Issues

Here are some troubleshooting tips to help you navigate through potential roadblocks:

  • If you encounter memory issues, consider reducing the batch size or using a lower sample rate.
  • Ensure your GPU drivers and CUDA toolkit are up to date.
  • For Tensorboard errors, double-check the log directory path.

For more insights, updates, or to collaborate on AI development projects, stay connected with fxis.ai.

Conclusion

At fxis.ai, we believe that such advancements are crucial for the future of AI, as they enable more comprehensive and effective solutions. Our team is continually exploring new methodologies to push the envelope in artificial intelligence, ensuring that our clients benefit from the latest technological innovations.

Stay Informed with the Newest F(x) Insights and Blogs

Tech News and Blog Highlights, Straight to Your Inbox