YourTTS论文阅读

本文提出YourTTS模型,建立在VITS基础上,用于零样本多说话人TTS和语音转换任务。该模型在VCTK数据集上实现了先进结果,在低资源语言场景也有良好表现。此外,模型可在不到1分钟语音内微调,还存在持续时间预测不稳定和发音问题等局限。

论文链接:YourTTS: Towards Zero-Shot Multi-Speaker TTS and Zero-Shot Voice Conversion for everyone

摘要

YourTTS将多语言方法的力量带到了零样本多speakers TTS 的任务中。本文的方法建立在VITS模型之上,并为zero-shot多speakers和多语言训练添加了一些新颖的修改。在VCTK数据集上的零样本多speakers TTS中实现了最先进的 (SOTA) 结果,并且在零样本语音转换中的结果与 SOTA 相当。此外,本文方法在具有单speaker数据集的目标语言中取得了可喜的结果,为低资源语言中的零样本多speakers TTS 和零样本语音转换系统开辟了可能性。最后,可以在不到1分钟的语音中对YourTTS模型进行微调,并在语音相似度和合理质量方面获得最先进的结果。这对于合成与训练中看到的声音或录音特征非常不同的speakers是很重要的

简介

近年来,文本-语音(TTS)系统在深度学习方法方面取得了显著进步,使得基于语音的虚拟助手等应用得以成功应用。大多数TTS系统都是根据单个speaker的声音定制的,但目前有兴趣为新speaker合成声音,这在训练中没有见过,只使用几秒钟的语音。这种方法被称为zero-shot多speakers TTS (ZS-TTS)。

Neural Voice Cloning with a Few Samples通过扩展DeepVoice 3方法首次提出了使用深度学习方法的 ZS-TTS。同时,Tacotron 2使用从训练有素的speaker编码器中提取的外部speaker嵌入进行了调整,使用广义端到端损失 (GE2E) ,允许生成类似于目标说话人的语音。类似地,Tacotron 2与不同的speaker是嵌入方法一起使用,显示LDE嵌入改进了看不见speaker的语音相似性和自然度;该作者还展示了一个性别依赖模型提高了看不见的speakers的相似性。

在这种情况下,Attentron提出了一种细粒度编码器,该编码器具有用于从各种参考样本中提取详细样式的注意力机制和粗粒度编码器。由于使用了几个参考样本,为没见过的speakers实现了更好的语音相似度。

SC-GlowTTS是基于流的模型在ZS-TTS中的第一个应用。与以前的研究相比,它提高了训练中没见过speakers的语音相似度,保持了可比的质量。此外,该作者在训练中仅使用11位speakers就显示出了可喜的结果。另一个贡献是展示了HiFi-GAN声码器的微调,使用 TTS模型预测的 Mel谱图为已看到的speakers显着增加了新speakers的相似性和语音质量。尽管取得了这些进展,但在训练期间观察到的和未观察到的speakers之间的相似性差距仍然是一个开放的研究问题。ZS-TTS模型仍然需要大量的speakers进行训练,因此很难在低资源语言中获得高质量的模型。据知,当前ZS-TTS模型的质量不够好,特别是对于语音特征与训练中看到的不同的目标speakers。尽管SC-GlowTTS在VCTK数据集中只用11个speakers就取得了可喜的结果,但一般来说,限制训练speakers的数量和种类进一步阻碍了模型对看不见的声音的泛化。

与ZS-TTS并行,多语言TTS也针对同时学习多种语言的模型而发展。其中一些模型特别有趣,因为它们允许代码转换,即改变句子某些部分的目标语言,同时保持相同的声音。这在ZS-TTS的范围内可能特别有趣,因为它可以允许使用一种语言的speakers使用另一种语言。本文提出YourTTS,它建立在 VITS的基础上,对零样本多speakers和多语言训练进行了一些新颖的修改。实验表明,本文的模型在VCTK数据集中实现了最先进的零样本多speakers TTS 结果,并在零样本语音转换中取得了与SOTA相当的结果。

本文新颖的零样本多speakers TTS 方法包括以下贡献:

  • 取得最先进的英语语言成绩
  • 第一项在零样本多speakers TTS范围内探索多语言方法的工作
  • 学习如何使用目标语言中的单个speaker生成具有良好质量和相似性的零样本多speakers语音;即是一种在少数speakers可用的语言场景下的zero-shot多speakers TTS系统
  • 能够在模型训练期间仅使用目标语言中的一位speaker以目标语言进行零样本语音转换
  • 对于语音/录音特征与模型训练中看到的非常不同的speakers,本文的模型可以在不到1分钟的语音中进行微调,并且仍然可以在语音相似度方面取得良好的效果,并具有合理的质量

本文每个实验的音频样本在此网站可浏览。此外,为了可重复性,在Coqui TTS上实现可用;所有实验的checkpoints在Github仓库中可用。

YourTTS

YourTTS建立在VITS的基础上,但包括一些针对零样本多speakers和多语言训练的新颖修改。与之前的工作不同,在本文的模型中,使用原始文本而不是音素作为输入。对于没有可用的良好开源字素音素转换器的语言,这允许更真实的结果。

与以前的工作一致,例如VITS,使用基于Transformer的文本编码器。然而,对于多语言训练,将4维可训练语言嵌入连接到每个输入字符的嵌入中。此外,还将Transformer blocks的数量增加到10个,隐藏通道的数量增加到196个。作为解码器,使用4个仿射耦合层的堆栈,每层本身就是4个 WaveNet残差块的堆栈,如在 VITS 模型中。

作为声码器,使用 HiFi-GAN V1和VITS中引入的鉴别器修改。此外,为了进行高效的端到端训练,使用变分自动编码器 (VAE)将TTS模型与声码器连接起来。为此,使用VITS提出的后验编码器。后编码器由16个非因果WaveNet残差块组成。作为输入,后编码器接收线性频谱图并预测潜在变量,该潜在变量用作声码器和基于流的解码器的输入,因此不需要中间表示(例如梅尔频谱图)。这允许模型学习中间表示;因此,它比声码器和TTS模型分别训练的两阶段方法系统取得了更好的结果。此外,为了使模型能够从输入文本中合成具有不同节奏的语音,使用VITS中提出的随机持续时间预测器。

为了给模型提供零样本多speakers生成能力,就像在SC-GlowTTS模型中一样,将基于流的解码器、后验编码器和声码器的所有仿射耦合层都设置在外部speakers嵌入上。在耦合层和后编码器的残差块中使用全局调节。还将外部speakers嵌入与文本编码器输出和解码器输出相加,然后将它们分别传递给持续时间预测器和声码器。使用线性投影层来匹配元素求和之前的维度(见图1)。

此外,受Cross-Lingual Speaker Adaptation Using Domain Adaptation and Speaker Consistency Loss for Text-To-Speech Synthesis的启发,研究了最终损失中的speakers一致性损失(SCL)。在这种情况下,使用预训练的speakers编码器从生成的音频和Ground Truth中提取speakers嵌入,在此基础上最大化余弦相似度。形式上,SCL可以定义为以下公式。设 ϕ ( . ) \phi(.) ϕ(.)是输出speakers嵌入的函数, c o s s i m cos_sim cossim是余弦相似度函数, α α α是控制SCL在最终损失中的影响的正实数, n n n是批量大小 g g g h h h分别代表Ground Truth和生成的speakers音频。

L S C L = − α n ⋅ ∑ i n c o s _ s i m ( ϕ ( g i ) , ϕ ( h i ) ) L_{SCL}=\frac{-\alpha}{n}\cdot\sum_i^n cos\_sim(\phi(g_i), \phi(h_i)) LSCL=nαincos_sim(ϕ(gi),ϕ(hi))

YourTTS模型在训练和推理过程中如图1所示,其中 (++) 表示连接,红色连接表示此连接不会传播梯度,虚线连接是可选的。为简单起见,省略了 HifiGAN 鉴别器网络
在这里插入图片描述

图1 YourTTS架构:(a) 训练过程和 (b) 推理过程

在训练期间,后验编码器接收线性频谱图和speakers嵌入作为输入并预测潜在变量z,该潜在变量和speakers嵌入用作生成波形的基于GAN的声码器生成器的输入。为了进行高效的端到端声码器训练,不使用整个潜在变量z作为声码器的输入,而是从z中随机采样恒定长度的部分序列。基于流的解码器旨在调节 P Z p P_{Z_p} PZp先验分布中的潜在变量z和speaker嵌入。为了将 P Z p P_{Z_p} PZp分布与文本编码器的输出对齐,使用单调对齐搜索 (MAS)。随机持续时间预测器接收作为输入的speaker嵌入、语言嵌入和通过MAS完成的对齐获得的持续时间。为了生成类似人类的语音节奏,随机持续时间预测器的目标是音素(或在本文的例子中为伪音素)持续时间的对数似然的变分下限。

在推理过程中,不使用MAS。相反, P Z p P_{Z_p} PZp分布由文本编码器预测,持续时间通过随机持续时间预测器的逆变换从随机噪声中采样,然后转换为整数。通过这种方式,从分布 P Z p P_{Z_p} PZp中采样了一个潜在变量 z p z_p zp。基于反向流的解码器接收潜在变量 z p z_p zp和speaker嵌入作为输入,将潜在变量 z p z_p zp转换为潜在变量 z z z,后者作为输入传递给声码器生成器,从而获得合成波形。

实验

Speaker Encoder

作为Speaker Encoder,H/ASP模型使用VoxCeleb 2数据集对附加Softmax的Prototypical Angular损失函数进行训练。此外,使用所有语言在多语言LibriSpeech (MLS) 数据集的测试子集中评估了模型。本文模型的平均等误码率 (EER) 达到了 1.967,而 SC-GlowTTS论文中使用的Speaker Encoder的EER达到了 5.244。

音频数据集

研究了 3 种语言,每种语言使用一个数据集来训练模型。对于英语,使用 VCTK数据集,一个包含44小时和109位speakers以48KHz采样的英语语言数据集。每个speaker大约有 400 句话。将VCTK数据集分为:训练、开发(包含与训练集相同的扬声器)和测试。对于测试集,选择了11个既不在开发集也不在训练集中的speakers;从每种口音中选择了1名代表,总共7名女性和4名男性(225、234、238、245、248、261、294、302、326、335 和 347)。此外,在一些实验中,使用了LibriTT 数据集的子集train-clean-100和train-clean-360来增加模型训练中的speakers数量。

对于葡萄牙语,使用TTS-Portuguese Corpus,这是一个巴西葡萄牙语的单人数据集,包含大约10小时的语音,以48KHz 采样。由于作者没有使用具有隔音功能的工作室,因此数据集包含一些环境噪声。对于实验,将音频重新采样到16Khz,并使用FullSubNet模型作为降噪器。随机选择了500个样本验证集,其余的数据集用于训练。

对于法语,使用基于LibriVox的M-AILABS数据集的fr_FR集。该数据集由2位女性speakers(104小时)和3位男性speakers(71 小时)组成,总共 175 小时的语音。数据以16kHz采样,音频长度在1到20秒之间变化。

对于所有数据集都进行了预处理,以便获得具有相似响度的样本并消除长时间的沉默。将所有音频重新采样到16Khz,并使用Webrtcvad工具包应用语音活动检测 (VAD) 来修剪尾随的静音。此外,使用Python包ffmpeg-normalize中的基于RMS的归一化将所有音频归一化为-27dB。

为了评估本文模型在英语中的零样本多speakers性能,使用了11个保留用于测试的VCTK speakers。为了进一步测试它在VCTK领域之外的性能,从LibriTTS数据集的子集test clean中选择了10个speakers(5F/5M)。对于法语,没有使用评估数据集。最后,对于speakers适应实验,为了模拟更真实的设置,使用了来自Common Voice数据集的4个speakers。

实验设置

用YourTTS模型进行了四次实验:

  • 实验1:使用 VCTK 数据集(单语)训练
  • 实验2:使用VCTK和TTS-Portuguese数据集进行训练(双语)
  • 实验3:使用 VCTK、TTS-Portuguese和 M-AILABS 法语数据集(三语)训练
  • 实验4:从实验3中获得的模型开始,并继续使用来自LibriTTS的trainclean-100和train-clean-360的 1151名新英语使用者进行训练

为了加速训练,在每个实验中都使用迁移学习。对于实验1,从一个在LJSpeech上训练1M步的模型开始,并使用VCTK数据集继续训练200K步。然而,由于提出的更改,由于权重形状的不兼容,模型的某些层被随机初始化。对于实验2和3,训练是通过从前一个实验继续进行大约140k步来完成的,一次学习一种语言。此外,对于每个实验,使用speaker一致性损失 (SCL) 对50k步进行微调, α α α = 9。最后,对于实验 4,继续对实验3中的模型进行训练,并使用SCL进行微调。这样做是因为尽管ZS-TTS中的最新工作仅使用VCTK数据集,但该数据集的speakers数量有限(109)且记录条件很少。因此,在仅使用此数据集进行训练之后,ZS-TTS模型通常不能令人满意地推广到新的speakers,因为speakers的录音条件或语音特征与训练中看到的有很大不同。

这些模型是在NVIDIA TESLA V100 32GB上训练的,批量大小为64。对于TTS模型训练和声码器 HiFi-GAN的区分,使用了 AdamW优化器,beta为0.8和0.99,权重衰减0.01和初始学习率0.0002以 0.999875的gamma指数衰减。对于多语言实验,使用加权随机抽样来保证语言平衡批次。

实验和讨论

在本文中,使用平均意见得分 (MOS) 研究评估合成语音质量。为了比较合成语音和原始speaker之间的相似度,计算说话人编码器余弦相似度(SECS)。SECS包括计算从speaker编码器中提取的两个音频的speaker嵌入之间的余弦相似度。取值范围为-1到1,值越大表示相似度越强。使用Resemblyzer包的speaker编码器计算SECS。

尽管实验涉及3种语言,但由于MOS指标的成本很高,因此仅使用两种语言来计算此类指标:英语,speakers最多,葡萄牙语,speakers最少。此外,仅在训练期间为未观察到的speakers提供指标。MOS分数是通过严格的众包获得的。对于英语语言的MOS和Sim-MOS的计算,分别使用了276和200位以英语为母语的贡献者。对于葡萄牙语,使用90名母语葡萄牙语贡献者来衡量这两个指标。

在评估过程中,作为提取speakers嵌入的参考音频,使用 VCTK数据集的第五句(即,speakerID 005.txt),因为所有测试speakers都说出了它并且因为它是一个长句子(20 个单词)。对于LibriTTS和MLS葡萄牙语数据集,随机选择每个speaker一个样本,仅考虑长度超过5秒的样本,以这种方式保证一个很好的参考。

对于英语中MOS、SECS和Sim-MOS的计算,从 LibriTTS 数据集的test-clean子集中随机选择55个句子,只考虑超过20个单词的句子。对于葡萄牙语,使用这55句话的翻译。在推理过程中,为每个speaker合成5个句子,从而确保覆盖所有speakers和大量的句子。作为所有测试子集的Ground Truth,为每个测试speaker随机选择5个音频。对于SECS和Sim-MOS的Ground Truth,将每个speaker随机选择的5个音频(如上所述)与在合成测试句期间用于提取speaker嵌入的参考音频进行比较。

表1显示了所有实验的MOS和sims -MOS的95%置信区间和SECS,英文数据集VCTK和LibriTTS,葡萄牙语数据集MLS的葡萄牙语子集。
在这里插入图片描述

表1 所有实验的 SECS、MOS 和 Sim-MOS,置信区间为 95%

对于VCTK数据集,通过实验1(单语)和2 + SCL(双语)获得了最好的相似性结果。两者都实现了相同的SECS和非常接近的Sim-MOS。根据Sim-MOS,使用SCL并没有带来任何相似度的提高;然而,所有实验的置信区间重叠,使这个分析不确定。另一方面,根据SECS,使用SCL提高了3个实验中的2个的相似性。然而,对于实验2,两个指标都表征SCL在相似度方面的积极作用。的确,SECS从0.857改善至0.864;Sim-MOS从4.15改善至4.17。

另一个值得注意的结果是,在VCTK数据集上的所有实验的SECS都高于Ground Truth。这可以用VCTK数据集本身的特征来解释,例如,在大多数音频中都有高亢的呼吸。speaker编码器可能无法处理这些特性,因此降低了Ground Truth的SECS。总的来说,在对该数据集的最佳实验中,相似性(SECS和simo -MOS)和质量(MOS)结果与Ground Truth相似。在MOS方面的结果与VITS文章所报道的结果一致。然而,实验证明通过本文的修改,模型设法为未见过的speaker保持良好的质量和相似性。最后,最佳实验在相似度和质量上都比以往的研究取得了更好的结果,从而实现了zero-shot多speakers TTS在VCTK数据集中的SOTA。

对于LibriTTS数据集,在实验4中获得了最好的相似度。这一结果可以解释为,与其他任何实验相比,该实验使用了更多的speakers(约1.2k),确保了更广泛的声音覆盖和记录条件多样性。另一方面,对于MOS,实验1是最好的实验。认为这主要是由于训练数据集的质量。实验1探索了VCTK数据集的单独使用,这是高质量的,而其他实验添加了低质量的数据集。对于葡萄牙MLS数据集,实验3+SCL获得了最高的MOS度量,MOS为4.11±0.07,尽管置信区间与其他实验重叠。有趣的是,用葡萄牙语训练的模型使用中等质量的单speaker数据集,在zero-shot多speakers合成中达到了良好的质量。另一方面,实验3是根据Sim-MOS最好的实验,达到了3.19±0.10的Sim-MOS,但在置信区间再次出现了重叠。在本数据集中,Sim-MOS和SECS不一致,基于SECS度量,相似性最好的实验是实验4+SCL。相信这是因为LibriTTS数据集的多样性。该数据集也由有声读物组成,因此倾向于与MLS数据集具有相似的录音特征和韵律。本文认为SECS和Sim-MOS之间的这种差异可以用Sim-MOS的置信区间来解释。最后,考虑到本文模型只与一个说葡萄牙语的男性进行训练,在这个数据集中实现的Sim-MOS是相关的。

按性别分析,实验4仅考虑男性和女性speakers的MOS分别为4.14±0.11和3.79±0.12。男性和女性speakers的Sim-MOS分别为3.29±0.14和2.84±0.14。因此,==模型在葡萄牙语中的表现受到性别的影响;本文认为,这是因为模特没有接受葡萄牙语女性speakers的训练。==尽管如此,模型可以用葡萄牙语产生女性语音,即使它没有接受过任何葡萄牙语的女性声音训练。Attentron模型通过与大约100名说英语的人进行训练,获得了3.30±0.06的Sim-MOS。考虑到置信区间,本文模型实现了一个接近的Sim-MOS,只使用了一个说目标语言的男性。因此,本文相信本文的方法可以成为开发低资源语言的zero-shot多speakers TTS模型的解决方案。

显然,包括法语(实验3)提高了葡萄牙语的质量和相似度(根据SECS)。质量的提高可以用MAILABS法语数据集比葡萄牙语语料库质量更好的事实来解释;由于batch的整体质量被多语言平衡,在模型训练过程中,batch中质量较低的语音数量会减少。最后,相似性的增加可以解释为TTS-Portuguese是一个单一speaker数据集,在实验2中通过语言进行batch平衡,batch中的一半由一个男性speakers组成,而法语的添加只有三分之一的batch将由葡萄牙语speakers的声音组成。

使用说话人一致性损失(SCL)改进了SECS测量的相似度。另一方面,对于Sim-MOS,实验之间的置信区间不确定,不能断言SCL确实提高了相似性。然而,本文认为,SCL可以帮助泛化记录在训练中看不到的特征。例如,在实验1中,模型在训练中没有看到LibriTTS数据集的记录特征,但在该数据集上的测试中,由于SCL的存在,SECS和Sim-MOS指标在相似性方面都有所改善。另一方面,使用SCL似乎会略微降低生成音频的质量。本文认为,这是因为使用了SCL,模型学会了在参考音频中产生记录特征,从而产生更多的失真和噪声。但是,在使用高质量参考样本的测试中,该模型能够生成高质量的语音

尽管本文模型取得了令人满意的结果,但也存在一定的局限性。首先,随机持续时间预测器的不稳定性,对于一些speakers和句子,产生非自然的持续时间。这种情况在所有语言中都会发生,这可能与多语言建模持续时间预测器增加的难度有关。模型的另一个局限性是一些单词的错误发音,特别是在葡萄牙语中。与以前的工作不同,不使用音素作为输入。因此,本文模型比以往的研究存在更多的发音问题。然而,注意到,当添加LibriTTS数据集时,大多数英语发音问题都消失了,这表明有了足够的词汇量,模型能够学习正确的发音。

Zero-Shot Voice Conversion

与SC-GlowTTS模型一样,不向编码器提供任何关于说话人身份的信息,因此编码器预测的分布被迫与说话人无关。因此,YourTTS可以使用模型的后验编码器、解码器和HiFi-GAN生成器转换声音。由于使YourTTS与外部speakers嵌入相适应,它使模型能够在zero-shot语音转换设置中模拟未见过的speakers的声音。

NoiseVC: Towards High Quality Zero-Shot Voice Conversion中,作者报告了AutoVC和 NoiseVC模型的MOS和Sim-MOS 指标,用于模型训练期间未见过的10个 VCTK speakers。为了将本文结果与这项工作进行比较,从VCTK测试子集中选择了8个speakers(4M/4F)。尽管该文论中使用了10个speakers,但由于性别平衡,被迫只使用8个speakers。

此外,为了分析葡萄牙语模型的泛化性,并验证本文模型在仅使用一个speaker训练模型的语言中取得的结果,使用了MLS 葡萄牙语数据集的测试子集中的8个speakers (4M/4F) 。因此,在这两种语言中,都使用了训练中未见过的speakers。为了进行更深入的分析,分别比较了男性、女性和混合性别speakers之间的转换。在分析过程中,对于每个speaker,在其他每个speaker的声音中生成一个转换,随机选择参考样本,只考虑超过3秒的样本。此外,分析了英语和葡萄牙语使用者之间的语音转移。计算MOS和Sim-MOS。然而,对于在英语和葡萄牙语(pt-en和en-pt)之间迁移时的Sim-MOS计算,由于参考样本是一种语言,而迁移是用另一种语言完成的,使用来自两种语言的评估者(英语和葡萄牙语分别为58和40)。

表2给出了这些实验的MOS和Sim-MOS。zero-shot语音转换的示例在前文的网页中提供访问。对于从一个说英语的人到另一个说英语的人(en-en)的zero-shot语音转换,模型实现了MOS为4.20±0.05和Sim-MOS为4.07±0.06。在这个实验中,只使用来自VCTK数据集的测试speakers,并遵循与Noise VC工作类似的评估方法。为了与AutoVC和NoiseVC模型的MOS和Sim-MOS结果比较,对于10个在训练中未出现的VCTK speakers,AutoVC模型实现了MOS为3.54±1.088,Sim-MOS为1.91±1.34。另一方面,NoiseVC模型的MOS为3.38±1.35,Sim-MOS为3.05±1.25。因此,本文模型在VCTK数据集的zero-shot语音转换中取得了与SOTA相当的结果;然而,本文模型训练使用更多的数据和speakers。然而,VCTK数据集的相似度结果表明,仅使用VCTK数据集训练的模型(实验1)比本节中探索的模型(实验4)具有更好的相似度。因此,相信本文的模型在仅使用VCTK数据集训练和评估时,可以在zero-shot语音转换方面取得非常相似甚至更好的结果。

在这里插入图片描述

表2 用于zero-shot语音转换实验的MOS和Sim-MOS,置信区间为95%

对于从一个葡萄牙语使用者到另一个葡萄牙语使用者的zero-shot语音转换,本文模型实现了MOS为3.64±0.09和Sim-MOS为3.43±0.09。注意到,更具体地说,本文模型在女性speakers之间的语音传输相似性(3.35±0.19)方面明显低于男性speakers之间的语音传输相似性(3.80±0.15)。这可以解释为,在训练模特时,缺少会说葡萄牙语的女性。尽管如此,有趣的是,本文模型在没有见过葡萄牙语中的女性声音的情况下,成功地接近了葡萄牙语中的女性声音。

显然,英语和葡萄牙语使用者之间的迁移和葡萄牙语使用者之间的迁移一样有效。然而,从说葡萄牙语的人过渡到说英语的人(pt-en),MOS分数在质量上有所下降。这尤其是因为从讲葡萄牙语的男性到讲英语的女性的语音转换质量很低。总的来说,如上所述,由于在模型的训练中缺少女性speakers,转移到女性speakers效果不佳。在这种情况下,挑战就更大了,因为需要将讲葡萄牙语的男性音频转换成讲英语的女性声音。在英语中,在转换过程中,speakers的性别对模特的表现没有显著影响。然而,对于涉及葡萄牙语的迁移,模型训练中女性声音的缺失阻碍了模型的泛化。

Speaker Adaption

不同的录音条件是zero-shot多speakers TTS 模型泛化的挑战。此外,与训练中看到的声音有很大差异的speakers也成为一个挑战。尽管如此,为了展示本文模型适应新speakers/录音条件的潜力,从葡萄牙语中为2个speakers (1M/1F) 选择了20到61秒的语音,在Common Voice数据集中为英语选择了相同的语音。使用这4speakers,分别对每个speaker使用SCL在实验4的checkpoints上进行微调。

在微调期间,为了确保多语言合成不受影响,使用了实验4中使用的所有数据集。但是,使用加权随机抽样 来保证来自适应speaker的样本出现在批次的四分之一中。该模型以这种方式训练了1500步。对于评估,使用前文描述的相同方法。

表3显示了性别、总持续时间(秒)和每个speaker训练中使用的样本数量,以及GT、ZS和FT的SECS、MOS和Sim-MOS。总的来说,对本文模型进行不到1分钟的微调,得到了非常有希望的结果,显著提高了所有实验的相似度,这些speaker的录音特征在模型训练中没有出现。

在这里插入图片描述

表3 SECS、MOS和Sim-MOS,具有95%的置信区间,用于speaker adaptation应实验

在英语中,本文模型在zero多speakers TTS模式下的结果是良好的,经过微调后,男女speakers都实现了与Ground truth相当的Sim-MOS。经过微调的模型获得的SECS比Ground truth更大。本文认为,这一现象可以解释,因为模型学习复制参考样本的录音特征和失真,从而比其他真实speakers样本具有优势。

在葡萄牙语中,与zero-shot相比,这种微调似乎是用一点自然来换取更好的相似度。对于男性speakers,经过31秒的语音微调后,Sim-MOS从3.35±0.12增加到4.19±0.07。对于女性speakers,相似度的提高更令人印象深刻,从zero-shot模式下的2.77±0.15到微调后的4.43±0.06,speakers的讲话只有20秒。

尽管本文模型仅使用目标speakers的20秒语音就成功地实现了高度的相似度,但表3似乎展示了使用的语音量和语音自然度(MOS)之间的直接关系。显然,与zero-shot模式相比,本文模型在大约1分钟的speakers的语音中可以复制speakers的语音特征,甚至增加了自然度。另一方面,与zero-shot模型或Ground Truth模型相比,仅使用44秒或更短的语音会降低生成语音的质量/自然度。因此,虽然本文模型在只用20秒的语音就能很好地复制speakers的语音特征,但模型需要更多的语音秒来保持更高的质量。最后,还注意到,在用几秒钟的语音对模型进行微调后,语音转换提高了很多,主要是葡萄牙语和法语,这两种语言在训练中很少使用。

结论与后续工作

本工作提出了YourTTS,它在zero-shot多speakers TTS和VCTK数据集的zero-shot语音转换中取得了与SOTA相当的结果。此外,实验表明,本文模型可以在目标语言中仅使用单个speaker数据集取得有前景的结果。此外,还表明,对于那些声音和录音条件都与训练中看到的speakers有很大差异的人,本文模型仅需使用不到1分钟的新声音即可进行微调。

在未来的工作中,打算寻求改进YourTTS模型的持续时间预测器,以及更多语言的训练。此外,打算探索该模型在低资源环境下的自动语音识别(ASR)模型训练中的数据增强应用。

def tts( self, text: str, speaker: str = None, language: str = None, speaker_wav: str = None, emotion: str = None, speed: float = None, split_sentences: bool = True, **kwargs, ): """Convert text to speech. Args: text (str): Input text to synthesize. speaker (str, optional): Speaker name for multi-speaker. You can check whether loaded model is multi-speaker by `tts.is_multi_speaker` and list speakers by `tts.speakers`. Defaults to None. language (str): Language of the text. If None, the default language of the speaker is used. Language is only supported by `XTTS` model. speaker_wav (str, optional): Path to a reference wav file to use for voice cloning with supporting models like YourTTS. Defaults to None. emotion (str, optional): Emotion to use for 🐸Coqui Studio models. If None, Studio models use "Neutral". Defaults to None. speed (float, optional): Speed factor to use for 🐸Coqui Studio models, between 0 and 2.0. If None, Studio models use 1.0. Defaults to None. split_sentences (bool, optional): Split text into sentences, synthesize them separately and concatenate the file audio. Setting it False uses more VRAM and possibly hit model specific text length or VRAM limits. Only applicable to the 🐸TTS models. Defaults to True. kwargs (dict, optional): Additional arguments for the model. """ self._check_arguments( speaker=speaker, language=language, speaker_wav=speaker_wav, emotion=emotion, speed=speed, **kwargs ) wav = self.synthesizer.tts( text=text, speaker_name=speaker, language_name=language, speaker_wav=speaker_wav, reference_wav=None, style_wav=None, style_text=None, reference_speaker_name=None, split_sentences=split_sentences, **kwargs, ) return wav对应的文件
08-13
### 三级标题:`soundfile.LibsndfileError` 错误的常见原因与排查方法 在使用 TTS 库进行文本转语音合成时,若调用 `tts` 函数并传入 `speaker_wav` 参数,出现 `soundfile.LibsndfileError: Error opening 'my/cloning/audio.wav': System error` 错误,通常表明音频文件路径或格式存在问题。该错误源于 `soundfile` 库在尝试打开指定音频文件时失败,可能的原因包括路径格式不正确、文件损坏、编码格式不支持等。 首先,应检查 `speaker_wav` 参数所指向的音频文件路径是否为有效路径。路径中不应包含特殊字符或空格,且应使用英文命名。此外,应确保文件路径为绝对路径或当前工作目录下可访问的相对路径。例如,以下代码可用于测试文件是否可被 `soundfile` 正常读取: ```python import soundfile as sf try: data, samplerate = sf.read("my/cloning/audio.wav") print(f"成功读取音频文件,采样率: {samplerate}") except Exception as e: print(f"读取失败: {e}") ``` 若提示相同错误,则问题与 TTS 无关,而是 `soundfile` 本身无法访问该路径。 ### 三级标题:音频文件格式与编码要求 部分 `.wav` 文件可能在录制或传输过程中损坏,导致 `soundfile` 无法正常解析。此时可尝试使用 `ffmpeg` 或 `sox` 等工具打开该文件,以验证其是否有效。若确认文件损坏,建议重新录制或从原始来源重新下载。此外,某些 `.wav` 文件可能使用了 `soundfile` 不支持的编码格式(如某些压缩格式),此时应使用 `ffmpeg` 转换为标准 PCM 编码的 `.wav` 文件: ```bash ffmpeg -i input.wav -acodec pcm_s16le output.wav ``` 转换完成后,再次尝试使用 TTS 模型进行语音合成,以验证是否仍报错。 ### 三级标题:TTS 模型调用方式与参数配置 在使用 TTS 模型进行语音克隆时,需确保传入的 `speaker_wav` 参数为有效路径,并且音频文件格式符合模型要求。以下为一个标准调用示例: ```python from TTS.api import TTS import torch device = "cuda" if torch.cuda.is_available() else "cpu" tts = TTS(model_name="tts_models/multilingual/multi-dataset/xtts_v2", progress_bar=False).to(device) tts.tts_to_file( text="This is voice cloning.", file_path="output.wav", speaker_wav="my/cloning/audio.wav", language="en" ) ``` 若仍提示 `LibsndfileError`,则问题更可能出在音频文件本身,而非模型调用逻辑。此时应优先排查音频文件路径与内容完整性。 ###
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值