GST--Style Tokens: Unsupervised Style Modeling, Control and Transfer in End-to-End Speech Synthesis

和这篇文章是前后两天出来的
《Towards End-to-End Prosody Transfer for Expressive Speech Synthesis with Tacotron》,这篇文章也是google的成果,作者列表里也有wangyuxuan。

abstract

 本文提出一个GST-global style token,和tacotron联合训练的embedding bank,没有准确的韵律lable用于训练GST,但是用它建模一个大范围的声学表示。GST生成soft interpretable lable用于控制合成,比如独立于文本的改变语速和说话风格。它可以被用于风格迁移,从一个audio中复制风格,用于文本序列中。当在无标记、带噪数据上训练时,GST可以分离噪声和说话人特性,提供一个高度可变同时鲁棒性强的语音合成。

introduction

 神经网络在TTS上去的可喜的成就,但是神经网络在处理长的、富有表达力的文本时还是有很大改进空间。
 韵律对于合成高自然度的语音非常重要,韵律是很多因素的汇总,比如paralinguistic(副语言信息,重音、语调、语速、流畅度),重读,风格。
 style是为了给模型对于给定的文本选择合适的表达方式的能力。尽管很难精确的定义,风格包含很多信息,比如意图,情感,并且影响说话人的语调和流畅度的选择。合适的风格渲染会影响整体的感知。对于读小说或者读新闻是很重要的。
 风格建模存在的挑战:(1)什么是正确的韵律?没有一个客观的评价标准。对于一个大的数据集,没办法拿到注释,而是不同评测者的感受也会不一样。(2)高度变化的表现力也很难建模,即使是最新的TTS模型,也只是建模一个均一化的韵律分布。对于长文本的表现力缺乏。(3)难以控制合成语音的表达。

Model Architecture
2.1 Training

在这里插入图片描述
上图是GST mdoel的结构的训练过程,包括reference encoder, attention两部分。
首先reference encoder把变长的语音编码成定长的reference embedding, 然后进过attention计算reference embedding和每个style token(也叫GSTs,所有输入共享)的相似度。最后GSTs加权和的结果–style embedding输入tacotron, 联合训练,没有单独的韵律标签。
在这里插入图片描述
上图是GST model做infer的过程,有两种操作方式可以选择:(1)直接在encoder上加确定的token,可以进行风格控制;(2)送入一个不同的句子提取token,进行风格迁移。

3. Model Details
3.1 Tacotron Architecture

基础模型是tacotron的结构,把最后decode的2层GRU替换成2层256的LSTM,用0.1的概率zoneout正则。(没研究过–看下ref的文章。)输出是80维对数梅尔功率谱,每次输出两帧(why), 然后用空洞卷积变换成线性谱,通过GL vocoder恢复。相同数据集的结果比原来的(2017a)的结果好,证明用的是一个很好的baseline model。

3.2 Style Token Architecture
3.2.1 reference encoder

6层Conv-2d(kernel 22, 33,output channel 32, 32, 64, 64, 128, 128)+1层GRU(128)

3.2.2 Style Token Layer

 实验结果表明,10个token足以表示丰富的韵律信息,为了和encoder state保持一致,输出维度设为256。tanh attention之后的输出通过softmax。(这一块的操作没太懂)然后试了好几种拼的方式,发现直接赋值style embedding + encoder output的效果最好。
 此处用content-based attention做相似度测量。其他形式的attention可能也可以,学到的韵律表示形式可能有些差异。实验结果表明:(1)multi-head attention可以显著提升效果;(2)token数目增加会提升性能,采用的搭配, t o k e n e m b e d d i n g s i z e = 256 / h token embedding size = 256/h tokenembeddingsize=256/h, h h h是token的数目。然后把不同的token再拼在一起,保持输出维度是不变的。
和prosody transfer那篇工作(只有reference encoder)的主要区别就是在这里,多加了一个attention 结构的style token layer

4. Model Interpretation
4.1. End-to-End Clustering/Quantization

 对于GSTmodel,可以看作是一种端到端把reference embedding分解成比如style token这样的vector or cluster的方法每一个token的贡献被一个attention score表示,但也可以被替换成一个想要的similarity measure。GST layer从概念上说有点像VQ-VAE encoder,学到输入的一个量化表示。因此我们把GST layer替换成一个离散的,像VQ的查找表,但没有看到好的结果。
这个拆分的思路和其他人的工作也有一些像,但是GST用attention-based clustering, 可能会减少学习prior embedding需要的样本数。

4.2. Memory-Augmented Neural Network

GST需要额外的空间存储从语音中提取的style信息,train的时候写,infer的时候读。可以利用Memory-Augmented Neural Network的研究更好的改进GST。

Related Work

 其实TTS上一直有关于prosody 和speaking style的研究,但是一些不错的成果都需要确切的标签,比如情感或者说话人编码。也有一小部分人在研究自动注释,但是是基于监督学习的,因此需要昂贵的注释。比如,AuToBI(自动韵律注释)致力于生成韵律注释,服务于TTS任务。但是AuToBI仍然需要训练的注释,并且ToBI是一个手工设计的标记系统,性能有限。
 cluster-based modeling(基于聚类的建模)和本文比较像,使用i-vector和其他的声学特征建模训练集,缺点是依赖于复杂的hand-designed feature,并且需要单独训练一个neural voicing model。
 Ryan 等人的提出的reference embedding被用于本文,可以用refer signal中提取的reference embedding做风格迁移,但是他们并不能保证可解释的风格迁移,而且section 6证明他们的效果也不是很好。
 本文是基于2017b的工作的一个延伸,不同之处:(1)2017b用的是decoder的单帧信号作为query学习token,因此只是建模了主要和F0相关的local variation。但是GST用整段信号作为输入,可以包含和合成表现力相关的局部和整体的信息。(2)GST允许文本以disentangled style embedding方式输入。在sec6.2中说了这一点的关键作用,对于风格控制和迁移。(3)GST可以被用于干净的和带噪的语音。

6. Experiments: Style Control and Transfer
6.1 style control
6.1.1 style selection

最简单的控制方法是让模型只考虑一个单独的token,然后infer的时候将style embedding替换成一个specific, optionally scaled token。这样做有几个好处:(1)便于检查每个token贡献了什么style,根据经验,我们发现每个token不仅包含了pitch,intensity,还有其他的,比如:语速,情感;(2)除了可解释性以外,style token conditioning还可以改进语音质量。长的句子中有很多韵律的变换。很多TTS模型给到的是一个averaged prosody,比如每句话的结尾都是pitch下降,这是不合理的。我们发现对sounding token的调节可以显著的改善这个问题。

6.1.2 style scaling

另外一个控制style token的方式是缩放,把token embedding✖️scaler会强化它的风格影响,但是scaler比较大的话输出听不懂的speech,表明稳定性不是很好(下一步改进的工作)。
此处给了两个例子,token A 控制速度,token B控制表现力。每个token对应< -0.3, 0.1, 0.3, 0.5>四个样例,正数值越大,语速越快(表现力越强,体现在极品变化越大)。训练的时候只有正数token,但是infer时候给到负的token,是相反的效果(slower or clamer)。tokenB的样例4为何语速变慢??

6.1.3 style sampling

可以通过修改token layer的attention权重控制合成。因为GST attention生成的是一组拼接的权重,可以手动修改。采样的密度可以通过优化softmax temperature控制。

6.1.4 text-side style control

训练的时候text encoder states 加的是同样的style embedding,但infer的时候可以使不同的片段condition on一种活多种token。

6.2 style transfer
parallel style transfer

句子内容一样。比较了 baseline Tacotron,directly reference embedding, GST model。
directly reference embedding会严格的时间域对齐prosody transfer。
GST 包络和infer近似,时间不一样

nonparallel style transfer

比较了 10-token GST, 256-token GST, directly reference embedding
source是一个长句子(258词),reference是不同长度的句子)10,96,321词)。
结果

  • 10个token的对齐已经很好的;
  • 256个token表现出相似的优越性能,尽管256比reference embedding的128要大。
  • 直接condition on reference embedding,发现只有reference句子比source长的时候才可以,其他的都崩了,但是有一些词不清楚。因为embedding中包含了太多的信息,影响生成。
  • side-by-side subjective test 受测者在baseline Tacotron和GST之间都倾向于后者。
  • 说明的这个方法有能力在任何文本上进行prosody transfer
7. Experiments: Unlabeled Noisy Found Data

录音棚的数据比较耗时且昂贵,但是网上能够找到大量的富有表现力但是带噪的数据,可以用这些数据训练GST model。

7.1. Artificial Noisy Data

  第一个实验是人工加噪,拟合真实场景。加入各种各样的混响,SNR:5-25dB, 4个不同的训练集,50%、75%、90%、95%加噪。infer的时候用prosody control的方式,用每一个单独的token控制模型,可以对学到那种token给到一个可解释,可听的判断。

  • 结果发现,不同的噪声被当作不同的style并且吸收到不同的token中。
  • 并且可以判断,token集中的一部分是和clean speech有关的。这意味着我们可以利用一个clean style token合成干净的语音。
  • 为了证明我们的判断,做了一个实验,结果如表2所示。
    在这里插入图片描述
  • 干净数据集上baseline model可以达到MOS=4.0,但是随着噪声比例的增加,MOS分迅速下降,因为模型对噪声和干净语音没有任何先验,只是简单的对输入数据建模,因此噪声比例大的时候合成的数据也是带噪的
  • GST模型对噪声的比例不敏感,但是噪声比例增加,需要的GST token数目增多。(下面的工作可能是随着给的输入数据分布自动更新token的数目)
7.2. Real Multi-Speaker Found Data

 第二个实验是基于真实数据,TED的数据(包含各种声学变化,比如channel(近场远场),噪声,回声等。先把它切成小段,然后用ASR模型生成<text, audio>的匹配。尽管ASR会有很多的转录和对齐错误,也不做其他的预处理。训练集包含68h,439人的数据。
没有metadata作为标签,训练一个baseline model和1024-token的GST模型

  • baseline因为多说话人的数据变化太大,没能学出来。
  • GST的每个token对应不同的说话人

因为训练数据中有小比例的西班牙语音频,因此尝试了cross-lingual style transfer。方法:baseline model训练的是多说话人的tacoron model(参考deep voice 3),用音频的编号表示不同说话人id。然后用一个spanish speaker id合成100句英语。对于GST model,用同一个spanish speaker signal作为ref,合成100句英语。

  • 结果:GST生成的结果没有西班牙语的腔调,完全可懂,但还是ref speaker的 pitch range。
  • multi-speaker tacotron稍微差一些
  • 用ASR的WER进行两个模型的客观评测,GST-based model的WER远远好于baseline。表明GST确实学到的是文本不相关的embedding。
7.3. Quantitative Evaluations
  • 对于50%加噪学到的style embedding和TED随机挑选2000句(14)人学到的style embedding用t-SNE划分,结果和训练集一致。
  • 用LDA进行说话人判别,说明GST的效果和i-vector有得一拼。
7.4 implacation

(1)TTS的数据没有那么严格,并且不需要非常精确的切分以及ASR识别;
(2)GST自动生成风格注释,减去人工环节。

总结:工作很酷炫,如果真的和写的那么好的话对合成真的又是进一步大的贡献。但是在multi-speaker的部分没有再给出demo说明,不知道为什么??

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: "gst-launch-1.0 playbin uri=file:///path/to/file.swf" 这句命令是使用 GStreamer 命令行工具 "gst-launch-1.0" 来播放一个 SWF 文件。 "playbin" 是 GStreamer 的一个预定义的播放器元件,它可以自动处理所有必要的播放步骤,如解码、渲染和音频输出。 "uri=file:///path/to/file.swf" 设置了播放的文件的 URI,在这里,是本地文件 "file.swf" 的路径。 ### 回答2: gst-launch-1.0是GStreamer多媒体框架提供的命令行工具,用于构建和运行多媒体处理管道。playbin是一个内置的元素,用于处理音视频文件的播放。在上述命令中,我们使用playbin元素来播放一个文件的URI,URI指向一个.swf文件。 URI是统一资源标识符的缩写,用于唯一地标识一个资源。在这里,我们使用URI指向一个.swf文件。file:///表示文件协议,意味着文件位于本地计算机上。/path/to/file.swf是.swf文件的路径。因此,该命令的目的是使用playbin元素播放指定路径下的.swf文件。 GStreamer提供了灵活强大的多媒体处理功能,并支持各种音视频文件格式和协议。通过使用playbin元素,我们可以轻松地实现音视频文件的播放功能。此命令将自动处理文件的解码、播放和显示,并根据文件的内容和编码格式进行必要的配置。 要运行上述命令,我们需要在终端中输入"gst-launch-1.0 playbin uri=file:///path/to/file.swf"并且将"/path/to/file.swf"更改为.swf文件在本地计算机上的实际路径。然后按下回车键即可启动该命令。在成功运行后,GStreamer将根据指定URI播放相应的.swf文件。 总而言之,使用gst-launch-1.0 playbin uri=file:///path/to/file.swf命令可以轻松地实现在本地计算机上播放指定.swf文件的功能,通过GStreamer提供的多媒体处理功能,我们可以处理各种音视频格式和协议。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值