首页 > 其他分享 >Tacotron2 Inference教程

Tacotron2 Inference教程

时间:2024-02-13 21:55:19浏览次数:18  
标签:waveglow Tacotron2 教程 Inference cpython py 36 import pyc

https://www.dandelioncloud.cn/article/details/1601780566695559170

目录结构

本教程实验环境为Google Colab,文件目录结构如下

  1. ALL
  2. └── tacotron2
  3. ├── audio_processing.py
  4. ├── checkpoint_269000
  5. ├── data_utils.py
  6. ├── demo.wav
  7. ├── distributed.py
  8. ├── Dockerfile
  9. ├── filelists
  10. │ ├── ljs_audio_text_test_filelist.txt
  11. │ ├── ljs_audio_text_train_filelist.txt
  12. │ └── ljs_audio_text_val_filelist.txt
  13. ├── hparams.py
  14. ├── inference.ipynb
  15. ├── layers.py
  16. ├── LICENSE
  17. ├── logger.py
  18. ├── loss_function.py
  19. ├── loss_scaler.py
  20. ├── model.py
  21. ├── multiproc.py
  22. ├── plotting_utils.py
  23. ├── __pycache__
  24. │ ├── audio_processing.cpython-36.pyc
  25. │ ├── data_utils.cpython-36.pyc
  26. │ ├── distributed.cpython-36.pyc
  27. │ ├── hparams.cpython-36.pyc
  28. │ ├── layers.cpython-36.pyc
  29. │ ├── logger.cpython-36.pyc
  30. │ ├── loss_function.cpython-36.pyc
  31. │ ├── model.cpython-36.pyc
  32. │ ├── plotting_utils.cpython-36.pyc
  33. │ ├── stft.cpython-36.pyc
  34. │ ├── train.cpython-36.pyc
  35. │ └── utils.cpython-36.pyc
  36. ├── README.md
  37. ├── requirements.txt
  38. ├── stft.py
  39. ├── tensorboard.png
  40. ├── text
  41. │ ├── cleaners.py
  42. │ ├── cmudict.py
  43. │ ├── __init__.py
  44. │ ├── LICENSE
  45. │ ├── numbers.py
  46. │ ├── __pycache__
  47. │ │ ├── cleaners.cpython-36.pyc
  48. │ │ ├── cmudict.cpython-36.pyc
  49. │ │ ├── __init__.cpython-36.pyc
  50. │ │ ├── numbers.cpython-36.pyc
  51. │ │ └── symbols.cpython-36.pyc
  52. │ └── symbols.py
  53. ├── train.py
  54. ├── utils.py
  55. └── waveglow
  56. ├── config.json
  57. ├── convert_model.py
  58. ├── denoiser.py
  59. ├── distributed.py
  60. ├── glow_old.py
  61. ├── glow.py
  62. ├── inference.py
  63. ├── LICENSE
  64. ├── mel2samp.py
  65. ├── __pycache__
  66. │ ├── denoiser.cpython-36.pyc
  67. │ └── glow.cpython-36.pyc
  68. ├── README.md
  69. ├── requirements.txt
  70. ├── tacotron2
  71. ├── train.py
  72. ├── waveglow_256channels_universal_v5.pt
  73. └── waveglow_logo.png

文件准备

首先请读者创建一个名为ALL的空文件夹,通过git clone https://github.com/NVIDIA/tacotron2.git命令将tacotron2完整的代码文件下载下来。此时ALL文件夹里面会多出一个名为tacotron2的文件夹,在这个文件夹里有一个inference.ipynb文件,就是等会要用到的推理部分的代码

接着将预训练好的WaveGlow模型保存到waveglow文件夹中(该模型名为waveglow_256channels_universal_v5.pt

最后还需要一个最重要的文件,就是tacotron2训练时保存的模型文件,一般在训练过程中,它会自动命名为checkpoint_xxxx,将其放到tacotron2文件夹下。如果你自己没有训练tacotron2,官方也提供了一个训练好的模型文件

修改Inference代码

再次强调,我的实验环境是Colab,以下内容均为,文字解释在上,对应代码在下

首先需要确保tensorflow版本为1.x,否则会报错

  1. %tensorflow_version 1.x
  2. import tensorflow as tf
  3. tf.__version__

然后进入ALL/tacotron2目录

  1. %cd ALL/tacotron2

执行代码前需要确保已经安装了unidecode

  1. !pip install unidecode

导入库,定义函数

  1. import matplotlib
  2. %matplotlib inline
  3. import matplotlib.pylab as plt
  4. import IPython.display as ipd
  5. import sys
  6. sys.path.append('waveglow/')
  7. import numpy as np
  8. import torch
  9. from hparams import create_hparams
  10. from model import Tacotron2
  11. from layers import TacotronSTFT, STFT
  12. from audio_processing import griffin_lim
  13. from train import load_model
  14. from text import text_to_sequence
  15. from denoiser import Denoiser
  16. def plot_data(data, figsize=(16, 4)):
  17. fig, axes = plt.subplots(1, len(data), figsize=figsize)
  18. for i in range(len(data)):
  19. axes[i].imshow(data[i], aspect='auto', origin='bottom',
  20. interpolation='none')
  21. hparams = create_hparams()
  22. hparams.sampling_rate = 21050 # 该参数会影响生成语音的语速,越大则语速越快
  23. checkpoint_path = "checkpoint_269000"
  24. model = load_model(hparams)
  25. model.load_state_dict(torch.load(checkpoint_path)['state_dict'])
  26. _ = model.cuda().eval().half()

接着进入waveglow目录加载waveglow模型

  1. %cd ALL/tacotron2/waveglow
  2. waveglow_path = 'waveglow_256channels_universal_v5.pt'
  3. waveglow = torch.load(waveglow_path)['model']
  4. waveglow.cuda().eval().half()
  5. for k in waveglow.convinv:
  6. k.float()
  7. denoiser = Denoiser(waveglow)

输入文本

  1. text = "WaveGlow is really awesome!"
  2. sequence = np.array(text_to_sequence(text, ['english_cleaners']))[None, :]
  3. sequence = torch.autograd.Variable(
  4. torch.from_numpy(sequence)).cuda().long()

生成梅尔谱输出,以及画出attention图

  1. mel_outputs, mel_outputs_postnet, _, alignments = model.inference(sequence)
  2. plot_data((mel_outputs.float().data.cpu().numpy()[0],
  3. mel_outputs_postnet.float().data.cpu().numpy()[0],
  4. alignments.float().data.cpu().numpy()[0].T))

使用waveglow将梅尔谱合成为语音

  1. with torch.no_grad():
  2. audio = waveglow.infer(mel_outputs_postnet, sigma=0.666)
  3. ipd.Audio(audio[0].data.cpu().numpy(), rate=hparams.sampling_rate)

(可选)移除waveglow的bias

  1. audio_denoised = denoiser(audio, strength=0.01)[:, 0]
  2. ipd.Audio(audio_denoised.cpu().numpy(), rate=hparams.sampling_rate)

标签:waveglow,Tacotron2,教程,Inference,cpython,py,36,import,pyc
From: https://www.cnblogs.com/wcxia1985/p/18014870

相关文章

  • Python语言程序设计入门教程
      目  录第一章、概述    1.Python是什么    2.Python语言的特点    3.Python语言的缺点    4.Python程序的执行过程10   5.安装Python11  6.运行Python程序17        7.Python集成开发环境21  第二章、......
  • Tacotron2(NVIDIA版)训练笔记
    https://blog.csdn.net/qq_44951010/article/details/124828260 Tacotron2项目地址:https://github.com/NVIDIA/tacotron2Tacotron2中文训练笔记:https://blog.csdn.net/qq_44951010/article/details/124830538从科大讯飞爬取音频数据:https://blog.csdn.net/qq_44951010/article/......
  • Sublime Text 3 全程详细图文教程(转载)
    SublimeText3全程详细图文教程(转载)今天被群里大佬安利了一款文本编辑软件,找了一下相关教程。一、 前言      使用SublimeText也有几个年头了,版本也从2升级到3了,但犹如寒天饮冰水,冷暖尽自知。最初也是不知道从何下手,满世界地查找资料,但能查阅到的资料,苦于它们的零......
  • mysql5.7安装教程
     下载MySQL或者使用刚才下载的Mysql文件都行打开下载链接:https://dev.mysql.com/downloads/windows/installer/5.7.html 点击Download进行下载弹出页面 点击Nothanks进行下载下载下来的文件名是mysql-installer-community-5.7.24.0.msi双击文件名称进行安装如......
  • SpringMVC 教程
    SpringMVC回顾MVC什么是MVCMVC是:模型(Model)、视图(View)、控制器(Controller)的简写,是一种软件设计规范;是将业务逻辑、数据、显示分离的方法来组织代码;MVC的主要作用是降低了视图与业务逻辑间的双向耦合;MVC不是一种设计模式,MVC是一种架构模式。Model:数据模型......
  • Java break、continue 详解与数组深入解析:单维数组和多维数组详细教程
    JavaBreak和ContinueJavaBreak:break语句用于跳出循环或switch语句。在循环中使用break语句可以立即终止循环,并继续执行循环后面的代码。在switch语句中使用break语句可以跳出当前case,并继续执行下一个case。示例://循环示例for(inti=0;i<10;i++......
  • 无涯教程-Flask - 应用程序
    为了测试Flask的安装,在编辑器中以Hello.py键入以下代码fromflaskimportFlaskapp=Flask(__name__)@app.route('/')defhello_world():return'HelloWorld'if__name__=='__main__':app.run()必须在项目中导入Flask模块。Flask类的对象是无涯教程的WSG......
  • Mybatis 教程
    Mybatis教程第一个Mybatis程序思路:搭建环境\(\to\)导入Mybatis\(\to\)编写代码\(\to\)测试搭建环境搭建数据库CREATEDATABASE`mybatis`;USE`mybatis`;CREATETABLE`user`(`id`INT(20)NOTNULL,`name`VARCHAR(30)DEFAULTNULL,`pwd`VARCHA......
  • 无涯教程-Flask - 环境设置
    安装Flask通常需要Python2.6或更高版本,尽管Flask及其依赖项在Python3(Python3.3及更高版本)上可以很好地工作,但是许多Flask扩展都无法正确地支持它,因此,建议在Python2.7上安装Flask。使用virtualenv安装virtualenv是一个虚拟的Python环境构建器。它可以帮助用户并行创建多......
  • switch 安装 moonlight 教程
    ​准备工作:破解的switch能进行串流,支持moonlight的电脑(nvdiashiled功能/sunshine软件)比较好的网络环境:5Ghz频段wifi的稳定链接去下载moonlight的nro包GitHub-rock88/moonlight-nx使用破解switch的DBI工具-MTP连接连到电脑上(switch比较挑数据......