<reponame>Shyam-Thombre/MarathiTTS<filename>inference.py
import matplotlib
# %matplotlib inline
import matplotlib.pylab as plt

import sys
sys.path.append('waveglow/')
import numpy as np
import torch

from hparams import create_hparams
from model import Tacotron2
from layers import TacotronSTFT, STFT
from audio_processing import griffin_lim
from train import load_model
from text import text_to_sequence
# from denoiser import Denoiser

import soundfile as sf

def plot_data(data, figsize=(16, 4)):
    fig, axes = plt.subplots(1, len(data), figsize=figsize)
    for i in range(len(data)):
        axes[i].imshow(data[i], aspect='auto', origin='lower', 
                       interpolation='none')
    plt.savefig('output_mel_plots.png')
    plt.show()

hparams = create_hparams()
hparams.sampling_rate = 22050

# checkpoint_path = "./saved_models/marathi_tts_best_checkpoint" # path to marathi best checkpoint file
checkpoint_path = "./checkpoints/trial_run/checkpoint_1000" # path to marathi best checkpoint file
model = load_model(hparams)
model.load_state_dict(torch.load(checkpoint_path)['state_dict'])
_ = model.cuda().eval().half()

waveglow_path = "./saved_models/waveglow_256channels_universal_v5.pt" # path tp waveglow checkpoint
waveglow = torch.load(waveglow_path)['model']
waveglow.cuda().eval().half()
for k in waveglow.convinv:
    k.float()

# text = "नमस्कार, माझे नाव श्याम ठोंबरे आहे, आज जब मैं सुपरमार्केट गया तो देखा कि सब्जी बेचने वाले लोगों ने मास्क नहीं पहना हुआ था."
# text = "ते पक्षी निरीक्षणासाठी सर्वात लोकप्रिय ठिकाण आहे व प्रसिद्ध पर्यावरणस्नेही पर्यटन स्थळ आहे व ते पक्षी निरीक्षणासाठी सर्वात लोकप्रिय ठिकाण आहे."
text = "नमस्कार, माझे नाव श्याम ठोंबरे आहे, आयआयटी बॉम्बेचा विद्यार्थी आहे, आणि डेटा सायन्स क्षेत्रात एक महान आणि यशस्वी वैज्ञानिक बनण्याची माझी इच्छा आहे."
# text = "जयोस्तु ते जयोस्तु ते! जयोस्तु ते! श्री महन्मंगले शिवास्पदे शुभदे स्वतंत्रते भगवती त्वामहम् यशोयुतां वंदे! राष्ट्राचें चैतन्य मूर्त तूं नीती संपदांची स्वतन्त्रते भगवती श्रीमती राज्ञी तूं त्यांची परवशतेच्या नभांत तूंचि आकाशीं होशी स्वतन्त्रते भगवती चांदणी चमचम-लखलखशी."
# sequence = np.array(text_to_sequence(text, ['transliteration_cleaners']))[None, :]
sequence = np.array(text_to_sequence(text, ['indic_cleaners']))[None, :]
sequence = torch.autograd.Variable(
    torch.from_numpy(sequence)).cuda().long()

mel_outputs, mel_outputs_postnet, _, alignments = model.inference(sequence)

plot_data((mel_outputs.float().data.cpu().numpy()[0],
           mel_outputs_postnet.float().data.cpu().numpy()[0],
           alignments.float().data.cpu().numpy()[0].T))

with torch.no_grad():
    audio1 = waveglow.infer(mel_outputs_postnet, sigma=0.666)

sf.write("./outputs/output.wav", audio1[0].data.float().cpu().numpy(), hparams.sampling_rate)

import matplotlib
# %matplotlib inline
import matplotlib.pylab as plt

import sys
sys.path.append('waveglow/')
import numpy as np
import torch

from hparams import create_hparams
from model import Tacotron2
from layers import TacotronSTFT, STFT
from audio_processing import griffin_lim
from train import load_model
from text import text_to_sequence
# from denoiser import Denoiser

import soundfile as sf

def plot_data(data, figsize=(16, 4)):
    fig, axes = plt.subplots(1, len(data), figsize=figsize)
    for i in range(len(data)):
        axes[i].imshow(data[i], aspect='auto', origin='lower', 
                       interpolation='none')
    plt.savefig('output_mel_plots.png')
    plt.show()

hparams = create_hparams()
hparams.sampling_rate = 22050

# checkpoint_path = "./saved_models/marathi_tts_best_checkpoint" # path to marathi best checkpoint file
checkpoint_path = "./checkpoints/trial_run/checkpoint_1000" # path to marathi best checkpoint file
model = load_model(hparams)
model.load_state_dict(torch.load(checkpoint_path)['state_dict'])
_ = model.cuda().eval().half()

waveglow_path = "./saved_models/waveglow_256channels_universal_v5.pt" # path tp waveglow checkpoint
waveglow = torch.load(waveglow_path)['model']
waveglow.cuda().eval().half()
for k in waveglow.convinv:
    k.float()

# text = "नमस्कार, माझे नाव श्याम ठोंबरे आहे, आज जब मैं सुपरमार्केट गया तो देखा कि सब्जी बेचने वाले लोगों ने मास्क नहीं पहना हुआ था."
# text = "ते पक्षी निरीक्षणासाठी सर्वात लोकप्रिय ठिकाण आहे व प्रसिद्ध पर्यावरणस्नेही पर्यटन स्थळ आहे व ते पक्षी निरीक्षणासाठी सर्वात लोकप्रिय ठिकाण आहे."
text = "नमस्कार, माझे नाव श्याम ठोंबरे आहे, आयआयटी बॉम्बेचा विद्यार्थी आहे, आणि डेटा सायन्स क्षेत्रात एक महान आणि यशस्वी वैज्ञानिक बनण्याची माझी इच्छा आहे."
# text = "जयोस्तु ते जयोस्तु ते! जयोस्तु ते! श्री महन्मंगले शिवास्पदे शुभदे स्वतंत्रते भगवती त्वामहम् यशोयुतां वंदे! राष्ट्राचें चैतन्य मूर्त तूं नीती संपदांची स्वतन्त्रते भगवती श्रीमती राज्ञी तूं त्यांची परवशतेच्या नभांत तूंचि आकाशीं होशी स्वतन्त्रते भगवती चांदणी चमचम-लखलखशी."
# sequence = np.array(text_to_sequence(text, ['transliteration_cleaners']))[None, :]
sequence = np.array(text_to_sequence(text, ['indic_cleaners']))[None, :]
sequence = torch.autograd.Variable(
    torch.from_numpy(sequence)).cuda().long()

mel_outputs, mel_outputs_postnet, _, alignments = model.inference(sequence)

plot_data((mel_outputs.float().data.cpu().numpy()[0],
           mel_outputs_postnet.float().data.cpu().numpy()[0],
           alignments.float().data.cpu().numpy()[0].T))

with torch.no_grad():
    audio1 = waveglow.infer(mel_outputs_postnet, sigma=0.666)

sf.write("./outputs/output.wav", audio1[0].data.float().cpu().numpy(), hparams.sampling_rate)
# %matplotlib inline # from denoiser import Denoiser # checkpoint_path = "./saved_models/marathi_tts_best_checkpoint" # path to marathi best checkpoint file # path to marathi best checkpoint file # path tp waveglow checkpoint # text = "नमस्कार, माझे नाव श्याम ठोंबरे आहे, आज जब मैं सुपरमार्केट गया तो देखा कि सब्जी बेचने वाले लोगों ने मास्क नहीं पहना हुआ था." # text = "ते पक्षी निरीक्षणासाठी सर्वात लोकप्रिय ठिकाण आहे व प्रसिद्ध पर्यावरणस्नेही पर्यटन स्थळ आहे व ते पक्षी निरीक्षणासाठी सर्वात लोकप्रिय ठिकाण आहे." # text = "जयोस्तु ते जयोस्तु ते! जयोस्तु ते! श्री महन्मंगले शिवास्पदे शुभदे स्वतंत्रते भगवती त्वामहम् यशोयुतां वंदे! राष्ट्राचें चैतन्य मूर्त तूं नीती संपदांची स्वतन्त्रते भगवती श्रीमती राज्ञी तूं त्यांची परवशतेच्या नभांत तूंचि आकाशीं होशी स्वतन्त्रते भगवती चांदणी चमचम-लखलखशी." # sequence = np.array(text_to_sequence(text, ['transliteration_cleaners']))[None, :]