Chapter4-1_Speech_Synthesis(Tacotron)

文章目录

  • 1 TTS before End-to-end
  • 2 Tacotron
    • 2.1 Encoder
    • 2.2 Attention
    • 2.3 Decoder
    • 2.4 Post processing
  • 3 How good is Tacotron?

本文为李弘毅老师【Speech Synthesis - Tacotron】的课程笔记,课程视频youtube地址,点这里👈(需翻墙)。

下文中用到的图片均来自于李宏毅老师的PPT,若有侵权,必定删除。

文章索引:

上篇 - 3-2 Deep Clustering, PIT

下篇 - 4-2 More than Tacotron

总目录

1 TTS before End-to-end

我们现在的TTS(Text-to-Speech)都是end-to-end的神经网络,那么,在没有end-to-end之前,TTS是怎么做的呢?李老师在这里简单介绍了几个技术,最老的可以追溯到1939年。这里来看一下最接近end-to-end的Deep Voice,其他的有兴趣可以直接看李老师的视频,这里就不介绍了。

Deep Voice其实就是四个神经网络分别train好之后合在一起的模型。首先text会进入一个Grapheme-to-phoneme的模型,把书写的基本单元转化为发音的基本单元。然后这个phoneme会进入一个Duriation Prediction的模型,输出每个phoneme的发音时长是多少。同时这个phoneme也会进入一个叫做Fundamental Frequency Prediction的模型,用来输出每个phoneme的发音音调是怎样的。最后有一个模型,同时接收phoneme,发音时长和音调,然后输出合成的语音。
ch4-1-1

2 Tacotron

Tacotron在17年和18年都有发表论文,是一个end-to-end的语音合成模型。它的输入是character,输出是 (linear) spectrogram,spectrogram和真正的语音之差一个phase的信息,所以可以说是end-to-end的模型了。Tacotron中的Taco就是墨西哥料理中的Taco,作者们应该是一群吃货,在论文的注释中还特别注释了哪些人喜欢吃Taco,哪些人喜欢吃寿司。
ch4-1-2
Tacotron的整体结构如下图所示,可以分为Encoder,Attention,Decoder和Postprocessing四个部分。下面将对每个部分分别介绍。
ch4-1-3

2.1 Encoder

Encoder就是类似于讲Grapheme转化为phoneme的东西。首先输入的文本会经过一层embedding,然后经过一个由全连接+dropout组成的Pre-net,接着经过一个叫做CBHG的模块,最后输出一串sequence。这个CBHG是一个有点复杂的东西,李老师在这里没有细讲,就是几句话带过。总之,就是输入一个sequence,吐出一个sequence。
ch-4-1-4
在第二版的encoder当中,CBHG就被砍掉了,所以这其实也就是一个可有可无的东西,这也是李老师不做过多介绍的原因之一。第二版的encoder结构如下图所示。
ch4-1-5

2.2 Attention

这里的Attention就是正常的Attention,如果不知道Attention的原理的话,可以参考我的这篇博客。这里attention的作用其实就很像是预测每个phoneme的duration。输入的文字和输出的语音在时间上其实是有一种对应关系的,下图中纵坐标表示的是encoder steps,横坐标表示decoder steps,中间的这幅图就是attention的大小,如果学出来像是左图这样的一条斜直线的话,就说明学的比较好,如果学出来像右图这样的话,就说明没学好。
ch4-1-6

2.3 Decoder

Decoder就是一个会经过Pre-net且有Attention的RNN,不过每个time step的输出都会有3个或者多个sequence,因为一个phoneme对应的语音是比较长的。不过这里还有一个额外的model,用来判断这个RNN在这个time step是否可以结束了。
ch4-1-7

2.4 Post processing

decoder输出的sequence会再丢到一个CBHG里去,可以把CBHG想象成一大堆的CNN,然后再输出一个sequence。需要这个post processing的原因是,decoder产生的每个time step的输出是依赖于前一个time step的输出的,所以如果错了就没法修正了,加一个CBHG就是给模型一个修正的机会。最后的loss会结合decoder输出和Mel-spectrogram的偏差,以及CBHG输出和Mel-spectrogram的偏差。最终Inference的时候,我们用的是CBHG的输出。
ch4-1-8
当然这个输出不是语音,还需要一个额外的Vocoder才行,但这个Vocoder是单独train好的,这里不多做介绍。
ch4-1-9

有一点需要指出的是,Tacotron在Inference的时候,是需要加Dropout的,不然输出会坏掉~

3 How good is Tacotron?

再来看一下Tacotron的效果如何。这里用到的评价指标叫做mean opinion score。这个就是找一堆人,来听声音打分,分数为1分到5分的整数,1分最低,5分最高,觉得声音越真实,打分就可以越高。话说这个其实和历史模型做比较,就有点不太靠谱,不同人的主观感受是不太一样的。

结果就是第一版的Tacotron分数一般,但是第二版的Tactron就逼近ground truth了。
ch4-1-10
两个版本的最大差异,其实是在vocoder这里。用了WaveNet之后,分数直线飙升。
ch4-1-11

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/470659.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第三方模块config的使用

作用:允许开发人员将不同运行环境下的应用配置信息抽离到单独的文件中,模块内部自动判断当前应用的运行环境, 并读取对应的配置信息,极大提供应用配置信息的维护成本,避免了当运行环境重复的多次切换时,手动…

Chapter4-2_Speech_Synthesis(More than Tacotron)

文章目录1 Mispronunciation2 More information for Encoder3 Attention4 Fast Speech and DurIAN5 Dual Learning5 Controllable TTSSpeaker EmbeddingGST-TacotronTwo-stage Training本文为李弘毅老师【Speech Synthesis - More than Tacotron】的课程笔记,课程视…

【代码笔记】iOS-清除图片缓存UIActionSheet

一,效果图。 二,代码。 RootViewController.m //点击任何处出现sheet -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {UIActionSheet * sheet [[UIActionSheet alloc] initWithTitle:"确定要清空图片缓存?" d…

Chapter5_Speaker_Verification

文章目录1 Task Introduction2 模型架构3 模型介绍3.1 i-vector3.2 d-vector3.3 x-vector3.4 more4 End to End本文为李弘毅老师【Speaker Verification】的课程笔记,课程视频youtube地址,点这里👈(需翻墙)。 下文中用到的图片均来自于李宏毅…

python如何读取字典的关键字_python提取字典key列表的方法

python提取字典key列表的方法 更新时间:2015年07月11日 12:04:48 作者:企鹅不笨 这篇文章主要介绍了python提取字典key列表的方法,涉及Python中keys方法的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了python提取字典key列表的方法…

使用express搭建服务器获取MySQL数据库数据

一、原始的mysql查询方法 先安装mysql cnpm install mysql --save 引入这个db.js之后,才能对数据库进行查询 进行查询 查询结果如下: 二、ORM 介绍 ORM 全拼Object-Relation Mapping. 中文意为 对象-关系映射. 主要实现模型对象到关系数据库…

Chapter6_Vocoder

文章目录1 Introduction2 WaveNet2.1 WaveNet的架构2.2 Softmax Distribution2.3 Causal Convolution和Dilated Convolution2.4 Gated Activation Unit2.5 小结3 FFTNet4 WaveRNN4.1 Dual Softmax Layer4.2 Model Coarse4.3 Model Fine4.4 小结5 WaveGlow本文为李弘毅老师【Voc…

show一下自己的文档编写功底

以我为例,我绝对相信,“才华”和颜值成反比。“才华”二字加了引号了,自知跟优秀有孙大圣一个筋斗云的距离,不过某些细节方面表现得被认为还不错,这里我要秀一下我的文档编写能力。在我这十年的工作生涯里,…

Chapter7-1_Overview of NLP Tasks

文章目录1 Introduction2 Part-of-Speech(POS) Tagging3 Word Segmentation4 Parsing5 Coreference Resolution6 Summarization7 Machine Translation8 Grammar Error Correction9 Sentiment classification10 Stance Detection11 Natural Language Inference(NLI)12 Search En…

python制作文本编辑器_Python小实战:制作文本编辑器

学了半年了,该施展一下了🍺 做什么呢?做一个简单的文本编辑器吧 来,开始 知识点: 1)做窗体的知识 2)文件操作 窗体用的是tkinter简单模块,系统自带模块 有人说了:“哇&am…

OGNL 详解

Struts2 OGNL详解 1.概念: OGNL是Object-Graph Navigation Language的缩写,全称为对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对象的方法,能够遍历整…

完善获取数据库数据的写法

上一篇:使用express搭建服务器获取MySQL数据库数据 一、完善获取数据库数据的写法 asyncawait版本: const express require(express) const db require(./db/nodejs-orm/index.js)const app express()app.get("/get_data", (req, res) …

Chapter7-2_BERT and its family - Introduction and Fine-tune

文章目录1 What is pre-train model2 How to fine-tune2.1 Input2.2 Output2.3 Fine-tune2.4 Weighted Features3 Why fine-tune本文为李弘毅老师【BERT and its family - Introduction and Fine-tune】的课程笔记,课程视频youtube地址,点这里&#x1f4…

【BZOJ-2435】道路修建 (树形DP?)DFS

2435: [Noi2011]道路修建 Time Limit: 10 Sec Memory Limit: 128 MBSubmit: 3115 Solved: 1002[Submit][Status][Discuss]Description 在 W 星球上有 n 个国家。为了各自国家的经济发展,他们决定在各个国家之间建设双向道路使得国家之间连通。但是每个国家的国王都…

CSRF跨站请求伪造

一、CSRF跨站请求伪造 CSRF全拼为Cross Site Request Forgery,译为跨站请求伪造。 CSRF指攻击者盗用了你的身份,以你的名义发送恶意请求。 包括:以你名义发送邮件,发消息,盗取你的账号,甚至于购买商品&a…

升级 ubuntu_Ubuntu 19.04 已经到期!现有用户必须升级到 Ubuntu 19.10

Ubuntu 19.04 已在 2020 年 1 月 23 日到期,这意味着运行 Ubuntu 19.04 的系统将不再会接收到安全和维护更新,因此将使其容易受到攻击。-- Abhishek Prakash(作者)Ubuntu 19.04 发布于 2019 年 4 月 18 日。由于它不是长期支持(LTS)版本,因此…

Chapter7-3_BERT and its family - ELMo, BERT, GPT, XLNet, MASS, BART, UniLM, ELECTRA, and more

文章目录1 How to pre-train2 Predict next token3 Mask Input4 seq2seq的pre-train model5 ELECTRA6 Sentence Embedding本文为李弘毅老师【BERT and its family - ELMo, BERT, GPT, XLNet, MASS, BART, UniLM, ELECTRA, and more】的课程笔记,课程视频youtube地址…

python中split函数_python strip()函数和Split函数的用法总结

strip函数原型 声明:s为字符串,rm为要删除的字符序列. 只能删除开头或是结尾的字符或是字符串。不能删除中间的字符或是字符串。 s.strip(rm) 删除s字符串中开头、结尾处,位于 rm删除序列的字符 s.lstrip(rm) 删除s字符串中开头处&#xff0c…

express项目搭建 初始化详细步骤

案例 一、对每一个POST请求都设置CSRF防护 实际上,不仅仅转账需要CSRF防护,每一个post请求都需要做csrf的防护措施。 webA项目中的app.js: const router express.Router();router.all("/register",(res,req)>{.... })funct…

Chapter7-4_來自獵人暗黑大陸的模型 GPT-3

文章目录1 为何来自暗黑大陆2 GPT-3的野心3 GPT-3的效果4 Beyond GPT-3本文为李弘毅老师【來自獵人暗黑大陸的模型 GPT-3】的课程笔记,课程视频youtube地址,点这里👈(需翻墙)。 下文中用到的图片均来自于李宏毅老师的PPT,若有侵权…