TTS

2023-10-27

FastSpeech 基于 Transformer 的前馈网络,用于并行生成 TTS 梅尔谱图。 FastSpeech 模型与自回归 Transformer TTS 相比,梅尔谱图生成速度加快了 270 倍,端到端语音合成速度加快了 38 倍。

项目实现

docker cp LJSpeech-1.1.tar.bz2 torch_na:/workspace/FastSpeech/data

docker cp /home/elena/tts/waveglow_256channels_ljs_v2.pt torch_na:/workspace/FastSpeech/waveglow/pretrained_model

把下载的预训练模型改名为

waveglow_256channels.pt

解压文件当当前文件夹

unzip alignments.zip 

然后运行preprocess.py

python preprocess.py 

处理完数据后,开始进行训练

python train.py

(训练将近一周)训练后如图

 训练后进行验证,先修改eval.py中的超参数 --step ,改为自己刚训练后的model_new文件夹下的checkpoint后面的数,如图

我的情况把默认0,改为768000,如下

if __name__ == "__main__":
    # Test
    WaveGlow = utils.get_WaveGlow()
    parser = argparse.ArgumentParser()
    parser.add_argument('--step', type=int, default=768000) #把默认0,改为768000,其他的不变
    parser.add_argument("--alpha", type=float, default=1.0)
    args = parser.parse_args()

然后再运行

python eval.py

 (如果运行后出现错误,请参考Q&A2)

结果显示如图

 生成俩种结果,一种是通过mel_spce,一种通过waveglow.

waveglow生成的效果更好,mel_space噪声比较大!

代码详解

preprocess.py  ->对LJSpeech数据集进行预处理

		def preprocess_ljspeech(filename):
		    # LJSpeech 数据集作为输入路径
		    in_dir = filename
		    # mel 谱图输出路径为 ./mels ,若路径不存在则创建路径
		    out_dir = hp.mel_ground_truth
		    if not os.path.exists(out_dir):
		        os.makedirs(out_dir, exist_ok=True)
		    # 执行语音波形-mel谱图转换,并保存mel谱图,得到LJSpeech数据集语音文本列表
		    metadata = ljspeech.build_from_path(in_dir, out_dir)
		    # 将得到的语音文本列表写入磁盘
		    write_metadata(metadata, out_dir)
		
		    # 移动语音文本列表文件
		    shutil.move(os.path.join(hp.mel_ground_truth, "train.txt"),
		                os.path.join("data", "train.txt"))

hparams.py  模型的相关参数

# Mel
num_mels = 80
text_cleaners = ['english_cleaners']

# FastSpeech
vocab_size = 300
max_seq_len = 3000

encoder_dim = 256 #模型编码维度
encoder_n_layer = 4 #模型编码层数
encoder_head = 2 #模型头
encoder_conv1d_filter_size = 1024 #模型输出大小

decoder_dim = 256 #模型解码维度
decoder_n_layer = 4
decoder_head = 2
decoder_conv1d_filter_size = 1024

fft_conv1d_kernel = (9, 1)
fft_conv1d_padding = (4, 0) 

duration_predictor_filter_size = 256
duration_predictor_kernel_size = 3
dropout = 0.1

# Train
checkpoint_path = "./model_new"  #训练模型保存路径
logger_path = "./logger"  #训练日志保存路径
mel_ground_truth = "./mels" #
alignment_path = "./alignments"

batch_size = 32
epochs = 2000 
n_warm_up_step = 4000

learning_rate = 1e-3
weight_decay = 1e-6
grad_clip_thresh = 1.0
decay_step = [500000, 1000000, 2000000]

save_step = 3000
log_step = 5
clear_Time = 20

batch_expand_size = 32

疑问与解答 Q&A

1.为什么生成的梅普图(mel)是npy文件?

2.ModuleNotFoundError: No module named 'numba.decorators'

在运行验证模型时,出现模型错误,因为库版本错误。

卸载numba,然后安装 numba-0.48.0即可

pip install numba==0.48.0

参考文献

【1】GitHub - xcmyz/FastSpeech: The Implementation of FastSpeech based on pytorch.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

TTS 的相关文章

随机推荐

  • 还是搜索、索引的问题

    搜索要弄清2个基本问题 1 要搜索出什么类型的entity 2 entity的哪个方面 维度和关键词发生关联的 一般来说可以有多个角度link到entity 一个entity支持多个索引 可以从不同的column检索 对于 web sear
  • elasticsearch ubuntu 安装

    之前 一直听说 Elasticsearch功能强大 我今天安装了下 到pypi里看了下 并安装到虚拟环境中 本以为它就是一个包呢 所以试着用 结果出问题了 后来一看 原来它也是分服务端可客户端的 pypi里的这个是客户端 搭建很简单 所以我
  • Qt Qstring字符串的查找、替换、切割操作

    文章目录 查找 替换replace 字符串切割 查找 直接上代码 include
  • 手把手教你使用simulink配合STM32CUBEMX (生成keil项目实战)

    本文的作者在自学过程中发现该类资料的缺少 以及前人叙述不够完善的情况下 进行了本文的创作 文章将一步一步的讲解如何使用simulink将F4的灯点亮 更多的功能我们一起探索 别的型号的 cpu 大家可以类比进行 1 首先是将MATLAB安装
  • 模拟HashSet

    package chain 单链表 节点 Map中的Entry
  • 国际版阿里云/腾讯云CDN装备运用教程:加快网站拜访速度

    阿里云CDN装备运用教程 加快网站拜访速度 本文旨在为读者供给一个关于阿里云CDN的简要教程 咱们将介绍阿里云CDN的基本概念 资源加快过程 同步资源设置以及与阿里云OSS目标存储的结合 期望经过这篇教程 读者能够更好地了解和利用阿里云CD
  • 感知机

    统计学习方法 此书中 将感知机模型讲解十分清楚 并且推导了损失函数设计原理 随机梯度下降方法求解参数 详细解释了对偶问题求解方法及模型的收敛性 笔者再次学习该模型后 将自己的理解融入本文中 从感知机模型 损失函数设定 计算策略 算法流程这4
  • vue create is a Vue CLI 3 only command and you are using Vue CLI 2.9.6. You may want to run the

    这是应为vue的版本存在更新 需要先卸载vue cli2 然后重新安装vue cli 3 1 卸载vue cli2 npm uninstall vue cli g 或 yarn global remove vue cli 2 安装vue c
  • TCP报文段首部格式介绍

    1 TCP报文段首部格式tu 2 头部各个字段介绍 1 源端口和目的端口 源端口和目的端口字段各占 2 字节 端口是运输层与应用层的服务接口 运输层的复用和分用功能都要通过端口才能实现 2 序号字段 序号字段占 4 字节 要明确的是 TCP
  • WebService报错javax.xml.ws.soap.SOAPFaultException: javax.xml.ws.WebFault.messageName()

    原文地址 http blog csdn net woshixuye article details 14312579 一 发现问题 JAX WS规范是一组XML web services的JAVA API JAXWS RI是其的一个包 用j
  • 面试-大数据-场景题-sql

    1 求5min内浏览次数达到100的用户 LAG和LEAD函数 转载自 有如下场景 某公司网站每日访问量达到10亿级别的访问量 每次访问记录一条数据 数据包含如下字段 用户ID 访问时间 毫秒级 访问页面 要求使用hive求出所有在5分钟内
  • 卷积神经网络的三个特性

    转载 elecfans com emb fpga 20171116580425 2 html 局部感知 形象地说 就是模仿你的眼睛 想想看 你在看东西的时候 目光是聚焦在一个相对很小的局部的吧 严格一些说 普通的多层感知器中 隐层节点会全连
  • 关于C#模拟LED

    如下图 不管是用什么控件 或者是richTextBox 或者是TextBox 等等 我想应该都可以做得出下面这种效果来 但是 本人研究了快半个月了 可以说也没有找到什么很好的头绪 所以 干脆就粘贴在我的博客中了 希望看到的朋友给我个意见或者
  • c语言在输入字符串时输入空格的方式

    1 最容易的 将一个字符串分为一个一个字符输入 char s 100 int i 0 while scanf c s i s i n i s i 0 遇到换行停止输入 并且将换行替换为 0 printf s n s 但是如果在这段程序前还有
  • 每日一题:最大和上升子序列

    最大和上升子序列 题目 Daimayuan Online Judge 动态规划 和最长上升子序列类似 状态划分 以第i个数结尾的上升子序列的倒数第二个数可能是第一个数 第二个数 第i 1个数 从第一个数开始枚举 以它为结尾 首先f i a
  • bboss 流批一体化框架 与 数据采集 ETL

    数据采集 ETL 与 流批一体化框架 特性 高效 稳定 快速 安全 bboss 是一个基于开源协议 Apache License 发布的开源项目 主要由以下三部分构成 Elasticsearch Highlevel Java Restcli
  • feign调用使用Apache Http遇到问题汇总

    feign调用使用Apache Http目前已知会造成三个问题 1 RequestMapping必须显式指定调用方式 method RequestMethod POST 否则默认会使用get请求 这会造成之前一些没有显式指定调用方式的方法报
  • linux下quartus出现ModelSim executable not found和Unable to checkout a license. Make sure...... 错误

    一定要把Tools gt Options gt EDA Tool Options设置到bin下YOUR PATH altera 13 1 modelsim ase bin 注意是modelsim ase不是modelsim ae 而且有bi
  • C++内存分析工具

    C 内存分析工具 背景 内存泄漏在c 中是一个常见的问题 有一个好用的内存分析工具就是很有必要的 下面来介绍两个简单好用的内存分析工具 Valgrind和Sanitizer Valgrind valgrind是一种非侵入式的内存检测工具 在
  • TTS

    FastSpeech 基于 Transformer 的前馈网络 用于并行生成 TTS 梅尔谱图 FastSpeech 模型与自回归 Transformer TTS 相比 梅尔谱图生成速度加快了 270 倍 端到端语音合成速度加快了 38 倍