首页 > 编程知识 正文

flipped小说读后感中文(阅读卡)

时间:2023-05-06 07:13:03 阅读:79853 作者:3616

最近,浙江大学和微软亚洲研究院联合发表论文,关于快速的端到端语音合成系统,论文的链接如下

快速规格:快速,机器人标准控制技术

arxiv.org

以下是笔者读完论文后的论文方法总结和思考,不当之处欢迎指正。

论文首先指出了端到端自回归(Auto Regressive )语音合成系统存在的问题。

推理阶段的速度太慢了(虽然traditional Transformer的训练速度很快,但推理阶段还是需要前一阶段的输出,无法真正并行)。 生成的声音不是pgddxrk,而是几个单词被跳过或重复生成。 这在笔者实验的时候真的很熟悉,其原因主要是传统语音合成系统的Alignment隐含,在推断的过程中错误排列)。 无法控制(这里笔者的控制应该主要指的是生成的语速方面,因为在旋律层面上已经做得很好了)。 因此,论文针对上述三个问题,基于Transformer,重新设计了模型。 模型的图像如下:

照片1

首先,为了加快推算的速度,论文中采用了non auto-regressive的seq-to-seq模型(图1的) a ) ),不依赖前面的时间步的输入,就可以真正并行化整个模型。 论文中非自动记忆的信噪比模型的设计方法与论文非自动记忆装置的转换方法相似。

图2论文non-autoregressiveneuralmachinetranslation的结构图

文本(phoneme )首先经过编码器得到编码器输出。 由于phoneme的长度往往小于感人的马里奥频谱图的长度,因此为了适应解码器的输入长度,模型在这里有一个长度调节器。 在这里,使Encoder Output的长度等于动人的马里奥音轨的长度,并将嵌入的Encoder Output作为解码器的输入直接输入到解码器中。 值得注意的是,论文的作者用1D Conv代替了Transformer中的全连接网络,弄清了其原因(

themotivationisthattheadjacenthiddenstatesaremorecloselyrelatedinthecharacter/phonemeandmel-spectrogramsequenceinspechtaster

之后,论文详细介绍了Length Regulator的设计方法(Length Regulator的作用是将Encoder Output智能地填充到与Mel Spectrogram一致的长度, 编码器输出首先进入持续时间预测器,持续时间预测器根据编码器输出一系列组3 )然后长度预测器是编码器输出的第一个这样,2(3)1)2)3=11就等于目标感人的马里奥声纹图的长度。

Duration Predictor (图1 ) d ) )负责从Encoder Output预测对应于各个向量的复制所需的次数。 在这里,作者为了改变传统的seq-to-seq模型的隐含对齐, 因为添加了“Transformer-TTS”(请参见笔者的另一个基于博文Transformer的语音合成系统)的明确对齐标记)的“Transformer”是“Multi-Head”,所以名为Duration Extractor的部件用于从该头部的注意矩阵中提取目标。 Duration Predictor的预测结果进行目标和MSELoss,在整个训练过程中反向传播。

本节具体介绍Duration Predictor和Extractor的设计

至此,论文解决了的前提

到了两个问题。至于最后一个Controllability,只需要对Duration Predictor的预测结果进行人为干预,即可做到控制合成语音的语速快慢。

论文作者的实验充分验证了上述设计的有效性,首先是合成速度有了巨大地提高:

其次,pgddxrk性也有了较大地提升:

总的来说,这篇论文是一个非常好的工作,提出了一种有效地加快合成速度的方法,并提高了合成的准确性,因为模型结构的红利,该模型还可以对合成声音的语速进行控制。但是也存在问题,模型使用了Transformer-TTS的Alignment作为Target,而Transformer-TTS的Alignment是隐式的,也就是说,模型将隐式的Alignment作为显式的Alignment的Target。


今天(2019-5-29)发现百度也出了一篇non auto-regressive TTS的model:

Parallel Neural Text-to-Speech​

arxiv.org

粗略看了一下论文,整体架构基于DeepVoice3,Decoder Input使用Position Embedding代替,个人觉得这种方式过于人工。模型的整体架构如图:

论文还提出了一个并行化的Vocoder,取名WaveVAE。


复现笔记参见:

星辰漫游者:FastSpeech复现笔记​

zhuanlan.zhihu.com

class FastSpeech(nn.Module): """ FastSpeech """ def __init__(self): super(FastSpeech, self).__init__() self.encoder = Encoder() self.length_regulator = LengthRegulator() self.decoder = Decoder() self.mel_linear = Linear(hp.decoder_output_size, hp.num_mels) self.postnet = PostNet() def forward(self, src_seq, src_pos, mel_max_length=None, length_target=None, alpha=1.0): encoder_output, encoder_mask = self.encoder(src_seq, src_pos) if self.training: length_regulator_output, decoder_pos, duration_predictor_output = self.length_regulator( encoder_output, encoder_mask, length_target, alpha, mel_max_length) decoder_output = self.decoder(length_regulator_output, decoder_pos) mel_output = self.mel_linear(decoder_output) mel_output_postnet = self.postnet(mel_output) + mel_output return mel_output, mel_output_postnet, duration_predictor_output else: length_regulator_output, decoder_pos = self.length_regulator( encoder_output, encoder_mask, alpha=alpha) decoder_output = self.decoder(length_regulator_output, decoder_pos) mel_output = self.mel_linear(decoder_output) mel_output_postnet = self.postnet(mel_output) + mel_output return mel_output, mel_output_postnet

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。