All Projects → Saurabh-29 → Waveglow_inference_in_cuda

Saurabh-29 / Waveglow_inference_in_cuda

Licence: mit
C++ Code to run waveglow inference in cuda

Labels

Projects that are alternatives of or similar to Waveglow inference in cuda

Chamferdistancepytorch
Chamfer Distance in Pytorch with f-score
Stars: ✭ 105 (-16%)
Mutual labels:  cuda
Tensorflow Object Detection Tutorial
The purpose of this tutorial is to learn how to install and prepare TensorFlow framework to train your own convolutional neural network object detection classifier for multiple objects, starting from scratch
Stars: ✭ 113 (-9.6%)
Mutual labels:  cuda
Knn cuda
Fast K-Nearest Neighbor search with GPU
Stars: ✭ 119 (-4.8%)
Mutual labels:  cuda
Hashcat
World's fastest and most advanced password recovery utility
Stars: ✭ 11,014 (+8711.2%)
Mutual labels:  cuda
Adacof Pytorch
Official source code for our paper "AdaCoF: Adaptive Collaboration of Flows for Video Frame Interpolation" (CVPR 2020)
Stars: ✭ 110 (-12%)
Mutual labels:  cuda
Cltune
CLTune: An automatic OpenCL & CUDA kernel tuner
Stars: ✭ 114 (-8.8%)
Mutual labels:  cuda
Pygraphistry
PyGraphistry is a Python library to quickly load, shape, embed, and explore big graphs with the GPU-accelerated Graphistry visual graph analyzer
Stars: ✭ 1,365 (+992%)
Mutual labels:  cuda
Warp Rnnt
CUDA-Warp RNN-Transducer
Stars: ✭ 122 (-2.4%)
Mutual labels:  cuda
Pytorch Unflow
a reimplementation of UnFlow in PyTorch that matches the official TensorFlow version
Stars: ✭ 113 (-9.6%)
Mutual labels:  cuda
Tensorflow Optimized Wheels
TensorFlow wheels built for latest CUDA/CuDNN and enabled performance flags: SSE, AVX, FMA; XLA
Stars: ✭ 118 (-5.6%)
Mutual labels:  cuda
Torch Mesh Isect
Stars: ✭ 107 (-14.4%)
Mutual labels:  cuda
Futhark
💥💻💥 A data-parallel functional programming language
Stars: ✭ 1,641 (+1212.8%)
Mutual labels:  cuda
Mtensor
A C++ Cuda Tensor Lazy Computing Library
Stars: ✭ 115 (-8%)
Mutual labels:  cuda
Dace
DaCe - Data Centric Parallel Programming
Stars: ✭ 106 (-15.2%)
Mutual labels:  cuda
Babelstream
STREAM, for lots of devices written in many programming models
Stars: ✭ 121 (-3.2%)
Mutual labels:  cuda
Cuda Winograd
Fast CUDA Kernels for ResNet Inference.
Stars: ✭ 104 (-16.8%)
Mutual labels:  cuda
Pytorch spn
Extension package for spatial propagation network in pytorch.
Stars: ✭ 114 (-8.8%)
Mutual labels:  cuda
Fcis
Fully Convolutional Instance-aware Semantic Segmentation
Stars: ✭ 1,563 (+1150.4%)
Mutual labels:  cuda
Onemkl
oneAPI Math Kernel Library (oneMKL) Interfaces
Stars: ✭ 122 (-2.4%)
Mutual labels:  cuda
Spoc
Stream Processing with OCaml
Stars: ✭ 115 (-8%)
Mutual labels:  cuda

Waveglow_Inference_in_CUDA

C++ Code to run optimized inference in CUDA of Waveglow, this implementation gives 25% speedup over Nvidia's Pytorch implementation in full precision and 2.5-3x speedup when using TensorCore

By default, this code will use GPU's TensorCore when running on NVIDIA's Volta GPU

Waveglow

Cuda C++ implementation of NVIDIA's Waveglow.

The model architecture based on flows is described in this paper. WaveGlow: a Flow-based Generative Network for Speech Synthesis.

Waveglow, a flow-based network is capable of generating high quality speech from mel-spectograms. It combines insights from Glow and Wavenet in order to provide fast, efficient and high-quality audio synthesis, without the need for auto-regression.

WaveGlow is implemented using only a single network, trained using only a single cost function: maximizing the likelihood of the training data, which makes the training procedure simple and stable.

Paper claims that in full-precision (32 bit float) waveglow produces speech at the 500kHz on V100 but typically it is about 300-325kHz with pytorch's implementation and 400-420kHz using our implementation in full precision and around 1000kHz using TensorCore in full precision.

Repository Structure

cpp
├── common			(All common files; logger, utils, numpy reader)
│   └── header
│   ├── src
│        
├── sys		        (ML units i.e conv, dense, activation)
│   └── header
│   ├── src      	
│   
├── Waveglow		(WN, upsample, main)
│   └── header
│   ├── src  
├── tools
	└── get_waveglow_weights.py
	└── npy_2_aud.py	

Getting Started

  1. Git clone the repository
  2. Download waveglow_weights
  3. Download mel_spectrograms
  4. Update waveglow_weights path in waveglow/header/hparams.hpp file
  5. Run this
    make
    ls -d path_2_mel_folder  >  filename.txt
    ./waveglow_tts filename.txt OutputDir
    python tools/npy_2_aud.py OutputDir 
  1. Audio will be stored in OutputDir in .wav format

Training

You can also train your model using this and then use copy tools/get_waveglow_weights.py file in waveglow folder and run

 python get_waveglow_weights.py <checkpoint path>

Inference and Results

Currently the code takes around 250ms to generate 10secs of speech

Resources and references

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].