语音识别模型WaveNet介绍

简介: WaveNet是一个端到端的TTS(text to speech)模型,一种原始音频波形的生成模型。

来源:处理图像模型PixelRNN 和 PixelCNN,不仅可以一次生成一个像素,而且一次生成一个颜色通道,每个图像需要数千个预测,因此可以生成复杂的自然图像。这激发了我们将二维PixelNets改编为一维WaveNet,声音元素是一个点一个点生成的。在WaveNet中最重要的概念就是带洞因果卷积(dialated causal convolutions)了。
注:因果卷积(causal convolution)。 要想理解因果卷积,首先要理解因果性的概念,这里可以借鉴因果系统的概念,因果系统是指当且仅当输入信号激励系统时,才会出现输出响应的系统。即因果系统的响应不会出现在输入信号激励系统以前;也就是说因果系统的输出仅与当前与过去的输入有关,而与将来的输入无关的系统。因果卷积的意义就是WaveNet在生成t时刻的元素时,只能使用0到t-1时刻的元素值。即output输出只利用了之前的元素来生成。

由于声音文件是时间上的一维数组,16KHz的采样率的文件,每秒钟就会有16000个元素,而上面所说的因果卷积的感受野非常小,即使堆叠很多层也只能使用到很少的数据来生成t时刻的的元素,为了扩大卷积的感受野,WaveNet采用了堆叠了(stack)多层扩大卷积(也称为带洞卷积)来增到网络的感受野,使得网络生成下一个元素的时候,能够使用更多之前的元素数值。带洞卷积如下图所示:
原理
1.网络结构
与PixelCNNs类似,条件概率分布是通过若干卷积层进行建模的。网络中没有下采样层,模型的输出与输入具有相同的时间维度。
Wavenet模型是根据一个序列的前 t-1 个点预测第 t 个点的结果,每一个语音样本都依赖于之前时间步的所有样本,因此可以用来预测语音中的采样点数值。基本公式如下:

Wavenet模型主要成分是卷积网络,每个卷积层都对前一层进行卷积,卷积核越大,层数越多,时域上的感知能力越强,感知范围越大。在生成过程中,每生成一个点,把该点放到输入层最后一个点继续迭代生成即可。使用softmax层作为输出层。
由于语音的采样率高,时域上对感知范围要求大,我们采用了Dilated convolutions这种模型。Dilated convolutions加入了dilation这个概念,根据dilation大小选择连接的节点。比如dilation=1的时候,第二层只会使用第t,t - 2,t - 4…这些点。
使用最大对数似然方法对参数进行优化。由于对数似然易于处理,我们在验证数据集上对超参数进行优化,可以容易测定模型是否过拟合或者欠拟合。
2.Softmax Distributions
Wavenet在输出层使用了softmax,求取每个采样点的概率。由于16位的采样点就有65536种采样结果,所以我们使用 [公式] 对采样值进行转换。其公式如下:

转换后,65536个采样值会转换成256个值,而且实验证明该转换方法没有对原始音频造成明显损失。
3.Activate funtion:
激活函数使用了门单元

4. Residual and skip connections

如图,隐层中每一层的节点都会把该原来的值和通过激活函数的值相加后传递给下一层,其中1x1的卷积核用来实现降通道数的操作。然后每一个隐层的过激活函数后的结果相加做一系列操作后传给输出层。
5.Conditional wavenets
加条件特征主要是在激活函数处增加,分为两种形式,global condition 和 local condition。两者公式一致,但local的特征需要升采样.

升采样有两种方式,第一种是自己学习升采样的模型,可在模型中添加。另一种就是手动升采样,自己将特征复制多次。

Wavenet基础学习相关推荐

  1. 【转】oracle PLSQL基础学习

    [转]oracle PLSQL基础学习 --oracle 练习: /**************************************************PL/SQL编程基础****** ...

  2. python创建对象的格式为_Python入门基础学习(面向对象)

    python基础学习笔记(四) 面向对象的三个基本特征: 封装:把客观事物抽象并封装成对象,即将属性,方法和事件等集合在一个整体内 继承:允许使用现有类的功能并在无须重新改写原来的类情况下,对这些功能 ...

  3. 虚幻引擎虚拟现实开发基础学习教程

    流派:电子学习| MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz 语言:英语+中英文字幕(根据原英文字幕机译更准确)|大小解压后:3.93 GB |时长:5h 15m 了 ...

  4. 动画产业基础学习教程 Rad How to Class – Animation Industry Fundamentals

    如何分类--动画产业基础 大小解压后:6.2G 含课程素材 1920X1080 mp4 语言:英语+中英文字幕(根据原英文字幕机译更准确) 信息: 绘画技巧.解剖学.角色设计.透视和整体讲故事--这门 ...

  5. Blender纹理基础学习视频教程 CGCookie – Fundamentals of Texturing in Blender

    Blender纹理基础学习视频教程 CGCookie – Fundamentals of Texturing in Blender Blender纹理基础学习视频教程 CGCookie – Funda ...

  6. ue5新手零基础学习教程 Unreal Engine 5 Beginner Tutorial - UE5 Starter Course

    ue5新手零基础学习教程 Unreal Engine 5 Beginner Tutorial - UE5 Starter Course! 教程大小解压后:4.96G 语言:英语+中英文字幕(机译)时长 ...

  7. 0基础学好python难不难_零基础学习Python难不难?Python有什么优势?

    原标题:零基础学习Python难不难?Python有什么优势? Python是一种计算机程序设计语言.首先,我们普及一下编程语言的基础知识.用任何编程语言来开发程序,都是为了让计算机干活,比如下载一个 ...

  8. 计算机一级ps2019,2019年计算机一级考试PS基础学习点子:PS菜单中英文对照表.docx...

    2019 年计算机一级考试 PS 基础学习点子: PS 菜单中英文对照表 PS菜单中英文对照表 一.File New 2.Open 3.Open As 4.Open Recent Close 6.Sa ...

  9. Java零基础学习难吗

    java编程是入行互联网的小伙伴们大多数的选择,那么对于零基础的小伙伴来说Java零基础学习难吗?如果你是初学者,你可以很好的理解java编程语言.并不困难.如果你的学习能力比较高,那么你对Java的 ...

最新文章

  1. ipa包中图片进行了Compress之后的主要处理和作用
  2. 通过PSO实现不同函数的目标值计算和搜索
  3. 怀孕参加计算机考试有辐射吗,电脑辐射对孕妇的影响大不大 会对胎儿造成什么影响...
  4. java中的JDBC
  5. 如何部署Docker镜像到SAP Cloud Platform
  6. dotNetCharting使用总结
  7. 使用GCC生成无格式二进制文件(plain binary files)
  8. VideoJS - HTML5免费视频播放器源码 支持多格式
  9. 频繁gc是什么意思_[JVM]一次线上频繁GC的问题解决
  10. python 闭包的作用_python中对闭包的理解
  11. 仪表指针样式_PPT标准图表太丑?试试仪表盘图表!
  12. cad打印样式ctb丢失,CAD打印样式表如何设置?CTB和STB有何区别?
  13. 一生要知道的100幅世界名画
  14. 中国十大电商网站优势与劣势分析
  15. 【Shell案例】【for循环、seq生成】3、输出7的倍数
  16. android bmob获取密码,Bmob后端云初体验
  17. 美国波多里奇国家质量奖(MBNQA)简介
  18. 【数据结构】CH3 栈和队列
  19. pcs增加mysql资源_pcs命令配置示例(详细版)
  20. Selenium元素操作与属性值_Sinno_Song_新浪博客

热门文章

  1. Linux 命令(17)—— su 与 sudo 命令
  2. Spring MVC开发步骤以及执行流程
  3. 数据迁移期间进程命令
  4. 洛谷 P3373 【模板】线段树 2 解题报告
  5. python 关于反射和类的特殊成员方法
  6. 计算机设计思想 —— 解耦(分离)与内聚
  7. (纯代码)图片移动放大缩小:
  8. 大熊君学习html5系列之------Online Offline(在线状态检测)
  9. ceph进程启动流程
  10. 2017.4.26 编程之路启程!