tacotron2/inference.ipynb

247 lines
208 KiB
Plaintext
Raw Normal View History

{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Tacotron 2 inference code \n",
"Edit the variables **checkpoint_path** and **text** to match yours and run the entire code to generate plots of mel outputs, alignments and audio synthesis from the generated mel-spectrogram using Griffin-Lim."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Import libraries and setup matplotlib"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib\n",
"matplotlib.use(\"Agg\")\n",
"import matplotlib.pylab as plt\n",
"import IPython.display as ipd\n",
"\n",
"import numpy as np\n",
"import torch\n",
"\n",
"from hparams import create_hparams\n",
"from model import Tacotron2\n",
"from layers import TacotronSTFT\n",
"from audio_processing import griffin_lim\n",
"from train import load_model\n",
"from text import text_to_sequence\n",
"\n",
"%matplotlib inline"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
"def plot_data(data, figsize=(16, 4)):\n",
" fig, axes = plt.subplots(1, len(data), figsize=figsize)\n",
" for i in range(len(data)):\n",
" axes[i].imshow(data[i], aspect='auto', origin='bottom', \n",
" interpolation='none')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Setup hparams"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"INFO:tensorflow:Parsing command line hparams: distributed_run=False,mask_padding=False\n"
]
}
],
"source": [
"hparams = create_hparams(\"distributed_run=False,mask_padding=False\")\n",
"hparams.sampling_rate = 22050\n",
"hparams.filter_length = 1024\n",
"hparams.hop_length = 256\n",
"hparams.win_length = 1024"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Load model from checkpoint"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"checkpoint_path = \"/home/scratch.adlr-gcf/rafaelvalle/tacotron2_state_dict.pt\"\n",
"checkpoint_path = \"/home/scratch.adlr-gcf/rafaelvalle/tacotron2_statedict_198000\"\n",
"\n",
"model = load_model(hparams)\n",
2018-05-06 00:29:09 +00:00
"try:\n",
" model = model.module\n",
"except:\n",
2018-05-06 00:30:08 +00:00
" pass\n",
"model.load_state_dict({k.replace('module.',''):v for k,v in torch.load(checkpoint_path)['state_dict'].items()})\n",
"_ = model.eval()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Load WaveGlow for mel2audio synthesis"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"/opt/conda/lib/python3.6/site-packages/torch/serialization.py:425: SourceChangeWarning: source code of class 'glow_old.WaveGlow' has changed. you can retrieve the original source code by accessing the object's source attribute or set `torch.nn.Module.dump_patches = True` and use the patch tool to revert the changes.\n",
" warnings.warn(msg, SourceChangeWarning)\n",
"/opt/conda/lib/python3.6/site-packages/torch/serialization.py:425: SourceChangeWarning: source code of class 'glow_old.WN' has changed. you can retrieve the original source code by accessing the object's source attribute or set `torch.nn.Module.dump_patches = True` and use the patch tool to revert the changes.\n",
" warnings.warn(msg, SourceChangeWarning)\n"
]
}
],
"source": [
"waveglow_path = '/home/scratch.adlr-gcf/rafaelvalle/waveglow_old.pt'\n",
"waveglow = torch.load(waveglow_path)['model']"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Prepare text input"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [],
"source": [
"text = \"Waveglow is really awesome!\"\n",
"sequence = np.array(text_to_sequence(text, ['english_cleaners']))[None, :]\n",
"sequence = torch.autograd.Variable(\n",
" torch.from_numpy(sequence)).cuda().long()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Decode text input and plot results"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1152x288 with 3 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"mel_outputs, mel_outputs_postnet, _, alignments = model.inference(sequence)\n",
"plot_data((mel_outputs.data.cpu().numpy()[0],\n",
" mel_outputs_postnet.data.cpu().numpy()[0],\n",
" alignments.data.cpu().numpy()[0].T))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Synthesize audio from spectrogram using WaveGlow"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" <audio controls=\"controls\" >\n",
" <source src=\"data:audio/wav;base64,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
" Your browser does not support the audio element.\n",
" </audio>\n",
" "
],
"text/plain": [
"<IPython.lib.display.Audio object>"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"with torch.no_grad():\n",
" audio = waveglow.infer(mel_outputs_postnet, sigma=0.666)\n",
"ipd.Audio(audio[0].data.cpu().numpy(), rate=hparams.sampling_rate)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.6"
}
},
"nbformat": 4,
"nbformat_minor": 2
}