4

深度语音识别(二)——Deep Speech, 语音合成

 2 years ago
source link: http://antkillerfarm.github.io/speech/2019/03/01/Deep_ASR_2.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

CTC(续)

https://www.zhihu.com/question/55851184

基于CTC等端到端语音识别方法的出现是否标志着统治数年的HMM方法终结?

https://zhuanlan.zhihu.com/p/23308976

CTC——下雨天和RNN更配哦

https://zhuanlan.zhihu.com/p/23293860

CTC实现——compute ctc loss(1)

https://zhuanlan.zhihu.com/p/23309693

CTC实现——compute ctc loss(2)

http://blog.csdn.net/xmdxcsj/article/details/70300591

端到端语音识别(二)ctc。这个blog中还有5篇《CTC学习笔记》的链接。

https://blog.csdn.net/luodongri/article/details/77005948

白话CTC(connectionist temporal classification)算法讲解

https://zhuanlan.zhihu.com/p/339612348

CTC总结

Warp-CTC

Warp-CTC是一个可以应用在CPU和GPU上的高效并行的CTC代码库,由百度硅谷实验室开发。

https://github.com/baidu-research/warp-ctc

非官方caffe版本:

https://github.com/xmfbit/warpctc-caffe

Deep Speech

Deep Speech是吴恩达领导的百度硅谷AI Lab 2014年的作品。

《Deep Speech: Scaling up end-to-end speech recognition》

https://github.com/mozilla/DeepSpeech

上图是Deep Speech的网络结构图。网络的前三层和第5层是FC,第4层是双向RNN,Loss是CTC。

主要思路:

1.这里的FC只处理部分音频片段,因此和CNN有异曲同工之妙。

2.论文解释了不用LSTM的原因是:很难并行处理。

http://blog.csdn.net/xmdxcsj/article/details/54848838

Deep Speech笔记

Deep speech 2

Deep speech 2是Deep speech原班人马2015年的作品。

《Deep speech 2: End-to-end speech recognition in english and mandarin》

https://github.com/PaddlePaddle/DeepSpeech

这个官方代码是PaddlePaddle实现的,由于比较小众,所以还有非官方的代码:

https://github.com/ShankHarinath/DeepSpeech2-Keras

不出所料,这里使用CNN代替了FC,音频数据和图像数据一样,都是局部特征很明显的数据,从直觉上,CNN应该要比FC好使。

至于多层RNN或者GRU都是很自然的尝试。论文的很大篇幅都是各种调参,也就是俗称的“深度炼丹”。

论文附录中,如何利用集群进行分布式训练,是本文的干货,这里不再赘述。

EESEN

《EESEN: End-to-End Speech Recognition using Deep RNN Models and WFST-based Decoding》

苗亚杰,南京邮电大学本科(2008)+清华硕士(2011)+CMU博士(2016)。
个人主页:
http://www.cs.cmu.edu/~ymiao/

https://github.com/srvk/eesen

eesen是基于Tensorflow开发的,苗博士之前还有个用Theano开发的叫PDNN的库。

ESPnet

ESPnet是日本的研究人员2018年的作品。

《ESPnet: End-to-End Speech Processing Toolkit》

https://github.com/espnet/espnet

https://mp.weixin.qq.com/s/Disa8tS398J1mjwXkz5jrg

Advanced Methods for Neural End-to-End Speech Processing

语音合成(Speech synthesis),有时也叫做text-to-speech (TTS)。

早在12世纪,人们就尝试建造机器来合成人类语言。在18世纪下半叶,匈牙利科学家Wolfgang von Kempelen用一系列的风箱、弹簧、风笛和共振箱制造出一些简单的单词和句子,制造出了一个会说话的机器。

1930年,Bell实验室发明了声码器(Vocoder),将人的声音分解成声带振动和口唇调制两部分,改变口唇部分的调制函数后,就可以合成出不同的声音。这种合成方式物理学基础明确,系统简单,在80年代很受欢迎。著名物理学家霍金的轮椅就是采用这种方式发声的。这种合成方式的缺点在于发音的机器味道很浓,流畅度也不够。

90年代,人们采用更粗暴的方式来合成声音。研究者让播音员录制一个大规模声音库,然后从声音库中选出声音片段来,拼接成所要的句子。比如要合成“我想回家”,就在声音库里找到“我”、“想”、“回”、“家”这四个字对应的发音,再把他们拼成一句话。

这种拼接法里最重要的事是选择合适的发音片段,因为同一个音节在不同环境下的真正发音是不太一样的,要选出最合适的发音片段并不容易。同时,为了拼出的声音更自然,质量更高,声音库自然是越大越好,因此需要大量录制工作。

研究者提出统计模型方法来解决这个问题。和拼接法不同,统计模型方法对每个发音构造一个统计模型,这样只要调整模型参数就可以得到新的发音,而这种参数调整只需要很少的数据。

近年来,深度学习方法成为主流。和统计模型方法相比,深度神经网络对发音过程有更精细的刻画,因此可以合成非常自然逼真的声音。

Festival

Festival是CMU的Rob Clark和Alan Black发起的项目。

http://www.cstr.ed.ac.uk/projects/festival/

eSpeak NG

https://github.com/espeak-ng/espeak-ng/

gnuspeech

https://www.gnu.org/software/gnuspeech/

其他的开源项目还有Gnopernicus、Orca、FreeTTS和Automatik Text Reader,但是这些项目目前基本处于不更新的状态了。

Tacotron

Tacotron是DeepMind提出的TTS模型。

《Tacotron: A Fully End-to-End Text-To-Speech Synthesis Model》

https://github.com/keithito/tacotron

图中的Griffin-Lim reconstruction所使用的算法,是由Daniel W. Griffin和Jae S. Lim于1984年提出的。当然了,这是一种传统的信号处理算法,一般作为新的DL替代品的baseline使用。

Jae S. Lim,1950年生,韩裔美国人。MIT本硕博(1978)。MIT教授,IEEE Fellow。信号处理领域专家。

Griffin-Lim Algorithm(GLA)的论文:

《Signal Estimation from Modified Short-Time Fourier Transform》

https://mp.weixin.qq.com/s/MJE2JRYU7KakNKmHkD42CA

谷歌发布TTS新系统Tacotron 2:直接从文本生成类人语音

https://mp.weixin.qq.com/s/uh-Gh8BSxBi-jjG6-d7-UQ

Tacotron一种端到端的Text-to-Speech合成模型

https://www.jiqizhixin.com/articles/2017-03-31-5

谷歌全端到端语音合成系统Tacotron:直接从字符合成语音

https://mp.weixin.qq.com/s/Jzu2CLAiDjVFW5qICrE9Hw

基于Tacotron模型的语音合成实践

https://mp.weixin.qq.com/s/1A0oOMa2qKqbDNBCpaoZmA

我和欧阳娜娜一起搞研发

Tacotron-2

Tacotron2是Tacotron的升级版,也是DeepMind提出的。

《Natural TTS synthesis by conditioning Wavenet on MEL spectogram predictions》

https://github.com/Rayhane-mamah/Tacotron-2

上图是Tacotron-2的体系结构图。除了标明Tacotron-2的网络结构之外,还给出了后续处理的pipeline:

1.Tacotron-2模型负责将Text转换为Mel Spectrum。

2.WaveNet模型负责将Mel Spectrum转换成wave pcm data。

WaveNet

WaveNet是DeepMind 2016年的作品,主要用于语音合成,也可用于语音识别。

DeepMind在WaveNet方面,按照时间顺序有3篇论文:

《WaveNet: A Generative Model For Raw Audio》

《Neural Machine Translation in Linear Time》

《Parallel WaveNet: Fast High-Fidelity Speech Synthesis》

https://github.com/ibab/tensorflow-wavenet

一个Tensorflow实现

https://github.com/buriburisuri/speech-to-text-wavenet

这个Tensorflow实现,利用WaveNet实现了语音识别。

https://github.com/usernaamee/keras-wavenet

keras版本的实现

除了RNN之外,CNN也经常被用于分析时间序列。为了表明序列之间的因果关系,人们通常采用一种叫做Causal Convolution的结构来进行数据采样。

上图是Causal Convolution的结构图。从中可以很明显的看出它的局限性:

1.感受野较小。

2.为了增大感受野,需要添加更多的层,从而导致计算复杂和训练困难。

针对Causal Convolution的不足,WaveNet采用了Dilated Convolution的方式进行采样。具体的步骤如上图所示。

上图是WaveNet用于语音识别时的网络结构图。

https://www.leiphone.com/news/201609/ErWGa8fs7yR1zn2L.html

DeepMind发布最新原始音频波形深度生成模型WaveNet,将为TTS带来无数可能

https://zhuanlan.zhihu.com/p/27064536

用Wavenet做中文语音识别

https://mp.weixin.qq.com/s/-NTQG7_-GqGQWrRhiGgAQQ

详述DeepMind wavenet原理及其TensorFlow实现

http://mp.weixin.qq.com/s/0Xg_acbGG3pTIgsRQKJjrQ

历经一年,DeepMind WaveNet语音合成技术正式产品化

https://mp.weixin.qq.com/s/u1UnAuGllcWn8Ik5wDPY6w

可视化语音分析:深度对比Wavenet、t-SNE和PCA等算法

https://blog.csdn.net/tonygsw/article/details/81280364

因果卷积(causal)与扩展卷积(dilated)

https://zhuanlan.zhihu.com/p/161667958

NLP模型也能用来解决时间序列问题?WaveNet详解

WaveRNN

WaveRNN是WaveNet的升级版。

《Efficient Neural Audio Synthesis》

非官方代码:

https://github.com/fatchord/WaveRNN

WaveRNN没有沿用Dilated Convolution,而是采用了另外一种方式加速RNN运算。

上图是WaveRNN的网络结构图。它将生成16bit采样点的任务,分解为生成高8bit和低8bit两个子任务。(这两者在论文中被称作coarse parts和fine parts。)这样最终生成样本的softmax层的大小就由216变成了2×28了。

这篇论文的另一个重要贡献是提出了Subscale WaveRNN。它的流程如下图所示:

1.将原始序列重组为B组(B表示Batch Size,这里为8)。上图中的序号表示在原始序列中的序号。因此上图的含义显然就是:每隔8个样本进行一次采样,采样所得编为一组。总共有8个这样的组。

2.作者发现直接分组并行生成,虽然简单,但效果不好。其原因在于只用到了过去的序列数据,而缺少对整个序列信息的把握。但直接采用全局信息,又不是RNN的做法。为此论文提出了提前量的概念,即上图中的F。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK