精华内容
下载资源
问答
  • Deep Voice

    2021-01-12 08:49:54
    <div><p>http://research.baidu.com/deep-voice-production-quality-text-speech-system-constructed-entirely-deep-neural-networks/</p><p>该提问来源于开源项目:ibab/tensorflow-wavenet</p></div>
  • deepvoice3-tensorflow 基于tensorflow实施 。 该项目从@ r9r9创建的移植。 地位 该项目目前正在进行中。 我的目标是通过使用DeepVoice3构建日语的端到端TTS模型。 如果您对具有各种数据集支持和预训练模型的多扬...
  • deepvoice3

    2020-05-27 16:17:34
    deepvoice3

    deepvoice3

    官方github

    DeepVoice3: Single-speaker text-to-speech demo
    In this notebook, you can try DeepVoice3-based single-speaker text-to-speech (en) using a model trained on LJSpeech dataset. The notebook is supposed to be executed on Google colab so you don't have to setup your machines locally.
    Estimated time to complete: 5 miniutes.
    Code: https://github.com/r9y9/deepvoice3_pytorch
    Audio samples: https://r9y9.github.io/deepvoice3_pytorch/
    

    Install dependencies

    import os
    from os.path import exists, join, expanduser
    
    # Clone
    name = "deepvoice3_pytorch"
    if not exists(name):
      ! git clone https://github.com/r9y9/$name
    
    # Change working directory to the project dir 
    os.chdir(join(expanduser("~"), name))
    
    !git checkout 7a10ac6763eda92595e257543494b6a95f64229b --quiet
    
    # Install dependencices
    !pip install -q -e '.[bin]'
    
    %pylab inline
    ! pip install -q librosa nltk
    
    import torch
    import numpy as np
    import librosa
    import librosa.display
    import IPython
    from IPython.display import Audio
    # need this for English text processing frontend
    import nltk
    ! python -m nltk.downloader cmudict
    

    Download a pre-trained model

    preset = "20180505_deepvoice3_ljspeech.json"
    checkpoint_path = "20180505_deepvoice3_checkpoint_step000640000.pth"
    
    if not exists(preset):
      !curl -O -L "https://www.dropbox.com/s/0ck82unm0bo0rxd/20180505_deepvoice3_ljspeech.json"
    if not exists(checkpoint_path):
      !curl -O -L "https://www.dropbox.com/s/5ucl9remrwy5oeg/20180505_deepvoice3_checkpoint_step000640000.pth"
    

    Synthesis
    Setup hyper parameters

    import hparams
    import json
    
        
    # Load parameters from preset
    with open(preset) as f:
      hparams.hparams.parse_json(f.read())
      
    # Inject frontend text processor
    import synthesis
    import train
    from deepvoice3_pytorch import frontend
    synthesis._frontend = getattr(frontend, "en")
    train._frontend =  getattr(frontend, "en")
    
    # alises
    fs = hparams.hparams.sample_rate
    hop_length = hparams.hparams.hop_size
    

    Define utility functions

    def tts(model, text, p=0, speaker_id=None, fast=True, figures=True):
      from synthesis import tts as _tts
      waveform, alignment, spectrogram, mel = _tts(model, text, p, speaker_id, fast)
      if figures:
          visualize(alignment, spectrogram)
      IPython.display.display(Audio(waveform, rate=fs))
      
    def visualize(alignment, spectrogram):
      label_fontsize = 16
      figure(figsize=(16,16))
    
      subplot(2,1,1)
      imshow(alignment.T, aspect="auto", origin="lower", interpolation=None)
      xlabel("Decoder timestamp", fontsize=label_fontsize)
      ylabel("Encoder timestamp", fontsize=label_fontsize)
      colorbar()
    
      subplot(2,1,2)
      librosa.display.specshow(spectrogram.T, sr=fs, 
                               hop_length=hop_length, x_axis="time", y_axis="linear")
      xlabel("Time", fontsize=label_fontsize)
      ylabel("Hz", fontsize=label_fontsize)
      tight_layout()
      colorbar()
    

    Load the model checkpoint

    from train import build_model
    from train import restore_parts, load_checkpoint
    
    model = build_model()
    model = load_checkpoint(checkpoint_path, model, None, True)
    

    Generate speech

    # Try your favorite senteneces:)
    texts = [
        "Scientists at the CERN laboratory say they have discovered a new particle.",
        "There's a way to measure the acute emotional intelligence that has never gone out of style.",
        "President Trump met with other leaders at the Group of 20 conference.",
        "The Senate's bill to repeal and replace the Affordable Care Act is now imperiled.",
        "Generative adversarial network or variational auto-encoder.",
        "The buses aren't the problem, they actually provide a solution.",
        "peter piper picked a peck of pickled peppers how many peppers did peter piper pick.",
        "Some have accepted this as a miracle without any physical explanation.",
    ]
    
    for idx, text in enumerate(texts):
      print(idx, text)
      tts(model, text, figures=False)
    
    # With attention plot
    text = "Generative adversarial network or variational auto-encoder."
    tts(model, text, figures=True)
    
    展开全文
  • deepvoice3基于pytorch

    2018-09-11 22:17:19
    基于pytorch的T2S工具源码,PyTorch implementation of convolutional networks-based text-to-speech synthesis ...arXiv:1710.07654: Deep Voice 3: Scaling Text-to-Speech with Convolutional Sequence Learning.
  • Deep Voice 3的一个Tensorflow实现
  • Deep Voice 论文

    2018-01-29 00:19:06
    Deep Voice 将深度学习应用于语音合成的全过程。 需要提取的特征非常少,因此容易应用于不同的数据集。 与现有技术相比,这个系统非常高效,专为生产系统而设计。 流程 将语素(文本)转换为音素 预测持续时间...

    创新点

    1. Deep Voice 将深度学习应用于语音合成的全过程。
    2. 需要提取的特征非常少,因此容易应用于不同的数据集。
    3. 与现有技术相比,这个系统非常高效,专为生产系统而设计。

    流程

    1. 将语素(文本)转换为音素
    2. 预测持续时间和基频
    3. 音频合成

    上面是最大概的东西,除了第一步中有查字典的过程之外,剩下两步都是靠数据(数据大佬。。。)来训练神经网络(不清楚是不是用全连接层),传统的python库pyttsx也可以实现语音合成,两者之间的差异性不清楚在哪里,有待后续研究,这里给出论文详解链接:
    Deep Voice详解教程——前百度首席科学家吴恩达力荐(上篇)
    Deep Voice详解教程——前百度首席科学家吴恩达力荐(下篇)
    代码【好像并不全】

    展开全文
  • 百度语音合成模型Deep Voice3

    千次阅读 2020-09-28 11:31:15
    Deep Voice3是由百度提出的一个全新的全卷积TTS架构。百度的主要工作分为如下五个方面: 提出了一个全卷积的 character-to-spectrogram 架构,它能并行计算,并且比使用循环单元的架构快 Deep Voice3训练非常快,...

    INTRODUCTION

    Deep Voice3是由百度提出的一个全新的全卷积TTS架构。百度的主要工作分为如下五个方面:

    1. 提出了一个全卷积的 character-to-spectrogram 架构,它能并行计算,并且比使用循环单元的架构快
    2. Deep Voice3训练非常快,并且可以扩展到LibriSpeech语音数据集,该数据集包含来自2484个说话人的820小时音频数据
    3. 可以产生单调的注意力行为 (monotonic attention behavior),避免了seq2seq语音合成中常见的错误
    4. 比较了几种波形合成方法的质量,包括WORLD、Griffin-Lim以及WaveNet
    5. 描述了Deep Voice3推理内核的实现,它可以在单个GPU上提供高达每天一千万次推理

    ARCHITECTURE

    Deep Voice3能够将各种文本特征(如字符、音素、重音)转换为各种声码器参数,如梅尔谱、线性对数谱、基频、频谱包络等。这些声码器参数可用作波形合成模型的输入

    Deep Voice3架构包括3个组件:

    • 编码器:完全由卷积构成,用于提取文本特征
    • 解码器:也是完全由卷积构成,利用**多跳卷积注意力机制 (multi-hop convolutional attention mechanism) **将提取的文本特征,以一种自回归的方式解码成低维的音频特征
    • 转换器:同样是完全由卷积构成,它从解码器隐藏状态预测最终声码器的参数(取决于声码器选择)。与解码器不同,转换器是非因果的,因此它可以依赖未来的上下文信息

    优化的目标是解码器转换器损失的线性组合。作者将解码器和转换器分开并应用于多任务训练,因为这样可以使得实践中注意力更好的学习。具体来说的话,梅尔谱预测的损失指导了注意力机制的训练,因为注意力的训练利用了梅尔谱预测以及声码器参数预测的梯度

    TEXT PREPROCESSING

    1. 字母全部转大写
    2. 删除所有标点符号
    3. 每句话的结尾由且仅由句号或问号组成
    4. 使用特殊的分隔符替换单词之间的空格,这些分隔符表示说话人在单词之间停顿的时长。共有四种特殊的分隔符,它们表示的含义分别是:含糊不清的单词、标准发音和空格字符、单词之间的短时停顿、单词之间的长时停顿。例如句子"Either way, you should shoot very slowly," 在way后带有长时停顿,在shoot后带有短时停顿,可以写成"Either way%you should shoot/very slowly%." 其中%表示长时停顿,/表示短时停顿。停顿时长可以通过手工标记或文本音频对齐器

    CONVOLUTION BLOCKS

    该卷积块包含一个一维卷积滤波器,一个门控可学习的非线性单元,一个残差连接,以及一个缩放因子0.5\sqrt{0.5}。为了引入说话人的相关特征,在经过softsign激活函数之后,将说话人特征作为偏置添加到卷积滤波器的输出。卷积块中使用标准正态分布初始化卷积滤波器的权重

    Softsign函数:
    y=F(x)=x1+x. y=F(x)=\frac{x}{1+|x|}.

    ENCODER

    编码器网络首先从文本编码开始,将字符或音素转换为可训练的向量表示heh_e。然后将heh_e送入全连接层以投影到目标维度。PreNet得到的输出再送入一系列卷积块,以提取时间相关的文本信息。最后,它们被投影回Text Embedding维度以创建注意力键向量hkh_k。从注意力键向量和文本嵌入计算注意力值向量hv=0.5(hk+he)h_v=\sqrt{0.5}(h_k+h_e),以联合考虑heh_e中的局部信息和hkh_k中的长时上下文信息。键向量hkh_k被各个注意力块用来计算注意力权重,而最终的上下文向量被计算为值向量hvh_v的加权平均

    DECODER

    解码器以自回归的模式预测接下来的r (r>1) 帧梅尔谱。由于不能利用后面时刻的数据,所以解码器采用的是causal convolution或者也叫做masked convolution

    梅尔谱数据先经过PreNet,然后通过casual convolution层将其变为query矩阵。再与Encoder的输出的Key和Value矩阵进行attention运算。如此积累多层,最后经过全连接层预测接下来的r帧梅尔谱,并且还会预测是否该停止预测(类似于Tacotron2)。损失函数是L1 Loss及交叉熵

    ATTENTION BLOCK

    Attention模块就是大家熟知的传统点积计算方法,先用query矩阵与key矩阵计算attention权重,然后再对value矩阵加权求和,得到context向量。此外,attention block还引入了位置编码hp(i)h_p(i)帮助文本和频谱进行对齐
    hp(i)=sin(wsi/10000k/d) ,i=0,2,4,...hp(i)=cos(wsi/10000k/d) ,i=1,3,5,... h_p(i)=sin(w_si/10000^{k/d})\ ,i=0,2,4,...\\ h_p(i)=cos(w_si/10000^{k/d})\ ,i=1,3,5,...
    其中,ii是时间步索引,kk是位置编码中的通道索引,dd是位置编码中所有通道的数量,wsw_s是编码的位置率。位置率决定了注意力分布中线的平均斜率,大致对应于语速。对于单说话人,query中的wsw_s被固定为1,key中的wsw_s被固定为输入时间步与输出时间步之比;对于多说话人,wsw_s通过每个说话人嵌入进行计算(下图左边)

    详细流程如下图所示

    在翻译场景中,源语言句子和目标语言句子中词的对应顺序并不是严格单调的,而在语音合成中,语音是按照文本顺序读出来的,所以对齐关系会更严格

    CONVERTER

    转换器网络将解码器的最后隐藏层的输出作为输入,转换器包含若干非因果卷积块,然后预测下游声码器的参数。与解码器不同,转换器是非因果和非自回归的,因此它可以使用解码器的未来信息进行预测。转换器有很多种,可以使用Griffin-fim或者wavenet等,当然,采用wavenet的效果会好一些。整个模型框架如下

    RESULTS

    Deep Voice3模型由于采用全卷积而非GRU来提取文本及频谱特征,可以大幅提高训练时GPU的利用率,相同的batch size下,速度是Tacotron的10倍。并且达到收敛所需的步数也只是Tacotron的1/4。在加入monotonic attention后,合成语音的自然语也有所提高

    REFERENCE

    展开全文
  • Deep Voice 3 中文翻译

    千次阅读 2018-08-07 18:14:04
    我们现在的deepvoice3,是一个基于注意力机制的全卷积神经元TTS系统。它匹配最先进的神经元自然语音合成系统并且训练更快。我们用前所未有的TTS训练集,在超过800小时的音频2000多个人上训练deepvoice3。另外的,...

     

    渣翻见谅,先贴原文连接https://arxiv.org/abs/1710.07654

    摘要

    我们现在的deepvoice3,是一个基于注意力机制的全卷积神经元TTS系统。它匹配最先进的神经元自然语音合成系统并且训练更快。我们用前所未有的TTS训练集,在超过800小时的音频2000多个人上训练deepvoice3。另外的,我们识别了基于注意力机制的语音合成网络的常见问题,证明了怎么去减轻他们,并且比较了一些不同的语音合成方法。我们还描述了如何在一个GPU服务器上对每天一千万个查询的推理进行衡量。

     

    1. 引言

    TTS系统转换文字到人类语音,TTS系统被用于各种各样的应用,比如人类技术借口,视觉障碍认识的可及,媒体与娱乐。传统TTS基于复杂的多阶段工程流水线。通常,这些系统首先将文本转换为压缩的音频特征,然后使用称为声码器(vocoder)的音频波形合成方法将该特征转换为音频。

    最近关于神经TTS的研究已经取得了令人印象深刻的结果,产生了具有更简单的特征、更少的组件和更高质量的合成语音的流水线。关于TTS的最优神经网络结构还没有达成共识。然而,序列到序列模型已经显现出有希望的结果。

    在文本中,我们提出了一个新颖的,全卷积结构的语音合成,扩展到非常大的数据集,并且演示了部署一个基于注意力机制的TTS系统时出现的几个现实问题。具体来说,我们做了以下贡献:

    1.我们提出了一个全卷积的字符到声谱的结构,它使完全并行计算成为可能,并且比相似的循环神经元结构快几个数量级。

    2.我们展示了我们的结构可以在包含了820小时的音频和2484个人的 LibriSpeech ASR数据集上训练得很快。

    3.我们证明了可以产生单调的注意力行为,避免通常的错误模式影响到sequence-to-sequence模型。

    4.我们对比了几个声波合成方法的质量,包括WORLD,Griffin-Lim和WaveNet。

    5.我们描述了一个用于DEEP VOICE 3的推理核心的实现,它可以在一个GPU服务器上每天提供多达一千万个查询。

     

    2. 相关工作

    我们的工作建立在最先进的神经元语音合成和注意力机制的sequence-to-sequence学习之上。

    最近一些作品解决了神经元网络语音合成的问题,包括Deep Voice 1,Deep Voice 2,Tacotron,Char2Wav,VoiceLoop,SampleRNN和WaveNet。Deep Voice 1 & 2保持了传统的tts流水线结构,分离的字型和音素的转换,持续时间和频率的预测,和声波的合成。对比Deep Voice 1 & 2,Deep Voice 3使用了一个基于注意力机制的sequence-to-sequence模型,使用更紧凑的体系结构。相似与Deep Voice 3, Tacotron和Char2Wav提出了用于TTS的sequence-to-sequence神经元网络。Tacotron是一个神经元文本到声谱转化模型,使用了Griffin-Lim做声谱到声波的合成。Char2Wav预测了全局声码器的参数,并且在全局参数之上,使用了一个样本RNN做声波生成。对比Char2Wav和Tacotron, Deep Voice 3为了加快训练,没有使用循环神经网络。Deep Voice 3使基于注意力机制的TTS系统在生产环境上可行,它避免了一些通常的注意力机制带来的问题来使系统的正确率不会降低。最后,WaveNet和SampleRNN是神经声码器的声波合成系统。在文献上也有很多高质量的手工工程声码器可以被替代,像STRAIGHT和WORLD。Deep Voice 3没有添加新的声码器,但是可以在稍作修改后,与其他不同的波形合成方法集成。

    自动语音识别(ASR)数据集通常比传送的TTS文集大很多,但往往不那么干净,因为他们通常包含多重的扩音器和背景噪声,虽然先前的方法已经将TTS使用与ASR数据集,但是,Deep Voice 3是我们所知的最好的,第一个扩展到上千个说话的人的独立TTS系统。

    Sequence-to-sequence模型编码了一个可变长度的输入到隐藏状态中,然后用解码器去处理并生成一个目标序列。注意力机制使解码器可以在生成目标序列时自适应的关注编码器的隐藏状态中不同的位置。基于注意力机制的sequence-to-sequence模型非常广泛的用于机器翻译,语音识别和文本摘要。最近的有关Deep Voice 3的注意力机制上的优化包括在训练时强制单调注意力,完全注意力的非循环结构和卷积的sequence-to-sequence模型。Deep Voice 3证明了TTS训练中单调注意的效果,TTS是单调性的一个全新领域。另外,我们证明了在推理中使用一个简单的强制单调,一个标准的注意力机制可以工作的更好。Deep Voice 3建立了一个卷积sequence-to-sequence结构,引入了一个位置编码,增强速率的调整去解释输入和输出领域上的不匹配(这句不太好翻译,原文:Deep Voice 3 also builds upon the convolutional sequence-to-sequence architecture from Gehring et al. (2017) by introducing a positional encoding similar to that used in Vaswani et al. (2017), augmented with a rate adjustment to account for the mismatch between input and output domain lengths.)

     

    3. 模型结构

    在这一节中,我们介绍了我们的全卷积的sequence-to-sequence TTS结构。我们的结构有能力转换一个文本特征到各种声码器参数,比如梅尔频谱,线性标度对数幅谱,基频,谱包络和非周期性参数。这些声码器参数可以被用作声波合成模型的输入。

    图1:Deep Voice 3使用残差卷积层把text编码为每个时间点的key的value向量给基于注意力机制的解码器使用。解码器使用它们去预测对应输出音频的梅尔标度对数幅谱。(淡蓝色点状箭头描绘了推理过程中的自回归过程)将解码器的隐藏状态馈送给转换网络去预测声波合成所使用的声码器参数。更多细节详见附录A。

    Deep Voice 3的结构由三部分组成:

    编码器:一个全卷积的编码器,它将文本特征转化为内部的学习表示。

    解码器:一个全卷积的因果解码器,使用了注意力机制的带洞卷积,以一个自回归的方法将学习表示解码为低维的音频表示(梅尔标度谱)

    转换器:一个全卷积的后处理网络,从解码器的隐藏状态中预测了最终的声码器参数(取决于声码器的选择)。区别于解码器,转换求是非因果的因此可以依赖于未来的上下文信息。

    要优化的总体目标函数是来自解码器(第3.5节)和转换器(第3.7节)的损失的线性组合。我们分别的将解码器和转换器用于多任务的训练,因为它在实践中可以使注意力的训练更加容易。具体来说,对梅尔谱图预测的损失可以训练注意力机制,因为注意力机制不仅和声码器参数预测相关,还和梅尔谱图的梯度预测相关。

    在多人的回话场景中,训练的说话人的嵌入,在编码器,解码器和转换器中都会使用。然后,我们详细的描述了每一个组件和数据预处理。模型的超参数可在附录C的表4中得到。

    3.1 文本预处理

    文本预处理是良好性能的关键。直接使用原始文本(具有间隔和标点的字符)在许多话语中能产生可以接受的表现。然而,一些话中的稀有词汇会产生许多错发音,或者可能跳过和重复单词。我们通过一下方式对文本进行正则化来减轻这些问题:

    1. 我们将所有文本中的字母变成大写

    2. 我们删除了中间所有的标点符号

    3. 我们用句号或问好结束每一句话

    4. 我们用特殊的分隔符替代单词当中的空格,它代表了说话人在单词中间停顿是时长。我们使用了4中不同的分隔符:

    (i)粘在一起的词

    (ii)标准的发音和字符间隔

    (iii)在单词中间的短停顿

    (iv)单词中间的长停顿

    For example,
    the sentence “Either way, you should shoot very slowly,” with a long pause after “way”
    and a short pause after “shoot”, would be written as “Either way%you should shoot/very
    slowly%.” with % representing a long pause and / representing a short pause for encoding
    convenience.

     

    3.2 字符和音素的联合表示

    有效的TTS系统需要拥有一个修改发音来改正通常错误(通常涉及适当的名词、外来词和特定领域的术语)的方法。通常的方法是维护一个字典将卷积块转化为语音表达。

    我们的模型可以直接将字符(带有标点和间隔)转换为声学特征,学习隐含的字素到音素的模型,这种隐式转换在模型产生错误使很难改正,因此,除了字符模型,我们同样训练了一个只有音素的模型和混个字符音素模型以供选择。他们在只有字符的模型上相同,除了编码器有时候接受音素和重音嵌入而不是字符嵌入。

    一个只有音素的模型需要一个将词转化为音素表达的预处理步骤(通过使用外部音素字典或单独训练的字形到音素模型),混合音素字符模型除了在音素词典中的词之外需要相同的预处理步骤。这些在词典之外中的词以字符输入,并且被允许使用隐式学习到的字素转音素模型。当使用字符音素混合模型时,在每轮训练过程中每一个词会有固定的几率被转换为它的音素表达。我们发现这会提高发音和准确率并且减少注意力错误,尤其是当推广到比训练集更长的句子中时。更重要的是,支持音素表达的模型允许使用音素字典纠正错发音,这是一个生产系统的重要需求属性。

    3.3 用于序列处理的卷积块

    图2:一个卷积块包含了带有门控线性单元的1-D卷积和残差连接。这里的 c 指代了输入的维度。大小为 2 * c 的卷积输出被分成了大小相等的两部分:门控向量和输入向量。

     

    通过提供足够大的接收字段,堆叠的卷积层可以利用序列中长期的上下文信息并且不会在计算中引入任何的顺序依赖。我们使用了在图2中描绘的卷积块作为主要的时序处理单元去编码文本和音频的隐藏表示。这个卷积块包含了一个1-D的卷积核,一个门控线性单元作为非线性学习,一个对输入的残差连接,和一个 \sqrt{0.5} 的换算系数。这个门控的线性单元为梯度流提供了线性路径,它会减轻堆叠卷积块的梯度消失问题,并且保持非线性。为了引入说话人元素,在卷积输出上,softsign函数之后加入了一个说话人的嵌入作为偏置。我们使用softsign函数因为它限制了输出的范围,同时也避免了指数为基础的非线性有时表现出的饱和问题。(这句翻译有点渣,贴上原文:We use the softsign nonlinearity because it limits the range of the output while also avoiding the saturation problem that exponentialbased nonlinearities sometimes exhibit.)我们在整个网络中用零均值和单位激活方差初始化卷积核的权值。这个卷积在结构中可以是非因果的(例如编码器)或者因果的(例如解码器)。为了保证序列的长度,输入数据在因果卷积的左边被填充了 k - 1 个 0 的时间点,在非因果卷积的左右各填充了 ( k - 1 ) / 2 个 0 的时间点,其中 k 是奇数卷积核宽度,在卷积正则化之前会引入 Dropout 层。

     

    3.4 Encoder

    编码网络(在图1中描绘的)以一个嵌入层开始,将字符或者音素转换成可训练的向量表达 h_{e} 。嵌入的 h_{e} 首先通过全连接层来从嵌入维度转化为目标维度,然后,他们通过一系列在3.3中描述的卷积块来处理,以提取文本信息的时间依赖性。最后,他们被投影到嵌入维度,来创建注意力的 key 向量 h_{k} 。注意力的 value 向量从注意力 key 向量和文本嵌入中计算 : 

                                                                      h_{v} = \sqrt{0.5} * (h_{k} + h_{e})

    来共同考虑局部的信息 h_{e} 和长期上下文信息 h_{k} 。 key 向量 h_{k} 被每个注意力块使用来计算注意力权重,而最终的上下文向量由 value 向量 h_{v} 的加权平均计算 (见 3.6)

     

    3.5 Decoder

    解码器(在图1中描绘的)通过由过去的音频帧来预测未来的一组音频帧 r ,以这种方式来实现自回归的音频生成。因为解码器是自回归的,所以它必须使用因果卷积块。 我们选择梅尔对数幅谱作为紧凑的音频帧表示。我们根据经验观察发现,一起解码多个帧 (例如  r > 1)能产生更好的音频质量。解码器由多个带有ReLU去线性化的全连接层开始来处理输入的梅尔谱图(在图1中表示为 "PreNet")。然后,它跟随着一系列的因果卷积和attention,这些卷积块生成了用于关注编码器隐藏状态的变量 queries 。最后,一个全连接层输出了下一组音频帧 r 和一个二元"最终帧"预测(用来指示这句话的最后一帧是否被合成)。Dropout用在每一个attention之前的全连接层之前,除了第一个。对梅尔谱图计算 L1 损失,并使用最终帧预测来计算二进制交叉熵损失。

     

    3.6 Attention Block

    图3:位置编码被添加到 query 和 value 中,并且对应了各自的 w_{query} 和 w_{value} 。通过将一个较大的负值掩码添加到logit中,可以在推理中实现强迫单调性。 在训练中,注意力权重偶会被dropout。

     

    图4 :(a)为训练之前的注意力分布,(b)为训练之后但是没有强制约束,(c)在第三层和第一层使用了强制约束

    我们使用了点积注意力机制(如图3所示)。注意力机制使用了 query 向量(解码器的隐藏状态)和编码器每个时间点的 key 向量来计算注意力权重,然后输出了一个上下文向量作为计算全局权重的 value 向量。我们引入了attention在时间上的单调性作为诱导偏置,并观察他的经验收益。因此,我们向 key 和 query 向量添加了位置编码。位置编码 h_{p} 从以下公式中选择:

    h_{p}(i) = sin(w_{s}i/10000^{k/d})  在 i 为偶数时

    h_{p} (i)= cos(w_{s}i/10000^{k/d})  在 i 为奇数时

    其中 i 是时间戳的编号, k 是位置编码中的通道编号,d 是位置编码中的通道总数,w_{s} 是编码的 position rate 。position rate 决定了注意力分布线的平均斜率,大体上对应与语音的速度。对于单个说话人,w_{s} 被设置为 query 中的一个,并且固定与输入时长与输出时长的时间比率(在整个数据集上计算)。对多人会话的数据集,w_{s} 使用每一个说话人嵌入的 key 和 value 向量计算(如图3所示),在正弦余弦函数生成正交基时,该初始化产生一个对角线形式的注意力分布,我们初始化了全连接层的权重被用来计算隐藏attention向量对 key 和 value 的映射。位置编码被用在所有的attention块上,一个全连接层被用于上下文向量来生成attention块的输出。总之,位置编码提高了卷积注意力机制。

    生产质量的TTS系统对注意力错误的容忍度极低。因此,除了位置编码,我们考虑额外的策略来消除重复或者跳过单词的情况。一种方法是用经典的注意力机制代替拉菲尔等人引入的单调注意机制,利用期望的训练逼近soft-monotonic注意的hard-monotonic随机译码。尽管改进的单调性,这种策略可能会产生更分散的注意力分布。在某些情况下,同时出现了几个字符,无法获得高质量的语音。我们提出了另一种注意力权重策略,它只适用于单调推理,保持训练过程没有任何限制。替代在所有input上计算softmax,我们在间隔为8的时间窗口上采用了softmax。最初的权重设为0,然后计算当前窗口中最高权重的序号,这种策略也在图4所示的推理中实施单调的注意,并且产生优异的语音质量。

    3.7 Converter

    转换器将解码器的最后一个隐藏层作为输入,使用了多个非因果卷积块,然后预测提供给下游声码器的参数。不像解码器,转换器是非卷积并且非自回归的,所以可以使用解码器中未来的上下文去预测自己的输出。

    转换器网络的损失函数取决于使用的声码器类型。

    略过声码器和result

    5 Conclusion

    我们介绍了Deep Voice 3,一个具有位置增强注意力机制的基于全卷积sequence-to-sequence声学模型的神经元TTS系统。我们描述了sequence-to-sequence语音生成模型中常见的错误,然后表明了我们用Deep Voice 3成功的避免了这些错误。我们的模型不能直接生成声波,但可以适用于Griffin-Lim,WaveNet和WORLD做音频合成。我们还证明了我们的结构在多人会话语音合成中表现良好,通过增强讲话人的嵌入。最后,我们描述了Deep Voice 3生产系统的特点,包括文本规范化和特征表现,并通过广泛的MOS评价展示最先进的质量。未来的工作将涉及改进隐式学习的字形到音素模型,与神经声码器联合训练,以及对更干净和更大的数据集进行训练,以模拟人类声音和来自成千上万个扬声器的口音的完全可变性。

    附录A Deep Voice 3 的详细结构

     

    图6:Deep Voice 3使用了深度残差卷积网络,把文本和音素转换为每个时间点的 key 和 value向量,将它们交给注意力机制的解码器。解码器使用他们去预测对应输出音频的梅尔对数幅谱,(浅蓝色虚线箭头描绘了推断过程中的自回归合成过程)将解码器的隐藏状态馈送到转换器网络,以生成最后声码器的参数,最终生成波形。权重归一化(Salima&KimMA,2016)被应用到模型中的所有卷积滤波器和全连接层权重矩阵。

    展开全文
  • Deepvoice3_pytorch 基于卷积网络的文本到语音合成模型的PyTorch实现: :深度语音3:通过卷积序列学习将文本转换为语音。 :基于深度卷积网络并具有指导性注意力的高效可训练的文本语音转换系统。 音频示例可从...
  • ve ever got is, that alexa is answering in a extremly deep voice. I can't even understand what she's talking. <h2>What is the expected behavior? <p>clean voice - Audio output <h2>What ...
  • 7. Deep Voice: Real-time Neural Text-to-Speech 文章于2017年3月发表 Deep Voice是使用DNN开发的语音合成系统,主要思想是将传统参数语音合成中的各个模块使用神经网络来代替,包括以下五个模块: grapheme-to-...
  • <div><p>I am trying to use WaveFlow vocoder with deepvoice3. In order to implement the same i have made minor tweaks in the codebase,: <p>Firstly i have modified the examples/deepvoice3/utils.py to ...
  • <div><p>Hey, i am currently training a deepvoice3 model on a custom dataset, i am facing this error <p>2020-06-04 12:01:42,075-WARNING: NaN or Inf found in input tensor. 2020-06-04 12:01:42,075-...
  • I am attempting to retrain a DeepVoice3 model using the LJSpeech data. My interest in training a new model is that I want to make some small model parameter changes in order to enable fine-tuning ...
  • 百度的deepvoice已经推出了三个版本,每一个版本都更加优化和高效。直到最近才有时间对此进行编译和测试。  DeepVoiceV1语音系统在2017年初就已出现,它运用人工智能技术,能深入学习,可以把文本文字转换为语音。...
  • <div><p>fix the error of oom when synthesis and remove the dependency of deepvoice3</p><p>该提问来源于开源项目:r9y9/wavenet_vocoder</p></div>
  • Deep Voice 3 引入了全卷积序列到序列式模型来进行语音合成,这种新架构在语音训练速度上有了数量级的提升,经过800 多个小时的语音数据学习,它可以合成 2400 多钟不同的语音结果。Deep Voice 3的意义在于探索语音...
  • DeepVoiceCoachReport:一份报告,总结了Deep Voice Coach的发现,这是一个研究口音分类和CAPT的深度学习项目
  • Deep Voice 2 论文学习 文章目录Deep Voice 2 论文学习  摘要  1 介绍  2 相关工作  3 单说话人 Deep Voice 2  4 带有可训练说话人嵌入的多说话人模型  5 结果  6 结论   ...
  • 今年 2 月份,百度提出了完全由深度神经网络构建的高质量文本转语音(TTS)系统 Deep Voice。这一系统随后在今年五月份推出了第二个版本。近日,百度发布了 Deep Voice 3,该研究的论文已经提交 ICLR 2018 大会。 ...
  • Deep Voice 1 论文学习 文章目录Deep Voice 1 论文学习  1 简介  2 相关研究  3 TTS 系统组件    3.1 字素到音素模型    3.2 分隔模型    3.3 音素持续时间模型与基频...
  • DEEP VOICE 3: SCALING TEXT-TO-SPEECH WITH CONVOLUTIONAL SEQUENCE LEARNING》论文学习 文章目录《DEEP VOICE 3: SCALING TEXT-TO-SPEECH WITH CONVOLUTIONAL SEQUENCE LEARNING》论文学习  摘要  1 ...
  • 百度的AI研究部门近日宣布,其文本到语音(TTS)系统“Deep Voice”已经学会了如何使用仅三秒钟的语音样本数据来模仿人类的声音。 这项技术被称为“语音克隆”,可以用来个性化虚拟助手,比如苹果的Siri、Google ...
  • PyTorch实现基于卷积网络的文本到语音合成模型
  • ▲内容预览: 百度实现文本到语音的实时转换 Facebook 发布支持 90 种语言的预训练词向量 英伟达发布 GTX 1080 TI ...高手实战演练,十大机器学习时间...█百度 Deep Voice,实现文本到语音的实时转换 雷锋网...
  • 神经网络语音合成模型介绍-DeepVoice3

    千次阅读 2018-09-29 20:34:36
  • 和depp voice的思路一致,增加了building block,改善了性能;对于tactron,增加了一个post-processing neural vocoder,改善了性能。在这两个目前最好的TTS系统上都证明了我们方法的有效性。证明...

空空如也

空空如也

1 2 3 4 5 ... 15
收藏数 286
精华内容 114
关键字:

deepvoice