当前位置: 首页 > news >正文

Seed-VC:零样本语音转换与扩散transformer

Seed-VC理论和实践

当声音克隆不再需要训练

文章:https://arxiv.org/abs/2411.09943
代码:https://github.com/Plachtaa/seed-vc

零样本语音转换与扩散transformer

摘要:
零样本语音转换旨在将源语音转换为与未见说话者的参考语音的音色相匹配。传统的方法存在音色泄漏、音色表示不足以及训练和推理任务之间的不匹配等问题。我们提出了Seed-VC,这是一个新的框架,通过在训练期间引入外部音色移位器来干扰源语音音色,减轻泄漏并使训练与推理对齐来解决这些问题。此外,我们采用了一个扩散transformer,利用整个参考语音上下文,通过上下文学习捕获细粒度的音色特征。实验表明,Seed-VC优于OpenVoice和CosyVoice等强基线,在零样本语音转换任务中实现了更高的说话人相似度和更低的词错误率。通过结合基频(F0)调节,我们进一步将我们的方法扩展到零样本歌唱声音转换,从而获得与当前最先进方法的比较性能。我们的研究结果强调了Seed-VC在克服核心挑战方面的有效性,为更准确和通用的语音转换系统铺平了道路。

1.引言:

语音转换(VC)技术的目的是在保留原始语言内容的前提下,将源说话者的语音转换为目标说话者所说的声音。VC的应用包括个性化语音合成,影视配音,以及对语言障碍人士的帮助。传统的VC方法通常需要大量的目标说话人录音,限制了它们的可扩展性和实用性。
零样本语音转换试图克服这些限制,使模型能够转换语音,以匹配任何未见的说话者的音色,只给出一个简短的参考话语。此功能对于创建灵活且可通用的VC系统至关重要,该系统可以在具有多种说话人的实际场景中运行。尽管取得了重大进展,但零样本VC仍面临着几个关键挑战。

首先,音色泄漏仍然是一个持续存在的问题。大多数现有模型[13][14][15][16]使用自监督学习(SSL)模型(例如HuBERT,wav2vec)[1][2]、自动语音识别(ASR)模型[18]或音素后验图(PPG)[17]等方法从源话语中提取语音内容。然而,这些提取的内容特征往往保留了源说话人的残余音色信息,导致转换后的语音出现音色泄漏。这种泄漏导致转换后的语音与参考说话人的音色不完全相似。为了缓解这种情况,一些方法引入了信息瓶颈[4]来过滤音色信息,例如基于内容特征的k-means聚类[19]或基于向量距离的内容检索[6]。虽然这些方法减少了音色泄漏,但它们也删除了重要的内容细节,导致转换结果中的词错误率(WER)更高。说话人的相似性和可懂度之间的权衡是零样本VC的一个重大障碍。

其次,音色表征不足也是一大挑战。许多先前的工作使用从参考语音[4][20]中提取的单个向量来表示音色。虽然在已知说话人数量有限的非零样本场景中,模型参数可以隐式地捕捉说话人的详细特征,但这在零样本条件下可能是不够的。在零样本VC中,模型必须推广到声音属性可能存在巨大差异的看不见的说话者。单矢量表示无法捕获说话者音色的细粒度细微差别,导致转换质量不理想。

第三,训练任务和推理任务不一致。通常,VC模型被训练成使用其自身的内容和音色特征来重建源语音。然而,在推理过程中,任务转变为合成语音,将源话语的内容与来自不同参考说话者的音色结合起来。训练目标和推理任务之间的这种差异会降低性能,因为模型没有针对部署过程中遇到的实际条件进行优化。

为了解决这些挑战,我们提出了Seed-VC,这是一种新的零样本语音转换框架,引入了两个关键创新。首先,我们在训练过程中使用外部音色移位器来扰动源语音的音色。音色移位器可以是一个非完美的零样本VC模型,也可以是一个来自现有文本到语音(TTS)系统的语义到声学模型。通过将源语音转换为音色移位版本,我们获得一个替代的语句,从中提取内容特征。这个过程保证了内容提取器对不携带原始音色的语音进行操作,有效地减少了音色泄漏。此外,该策略使训练过程与推理场景保持一致,其中内容和音色来自不同的说话者。

其次,我们利用扩散transformer[21]架构,能够利用整个参考语音作为上下文,而不是依赖于单个音色向量。transformer的上下文学习能力允许模型从参考语音中捕获更详细和细致入微的音色信息。在许多零样本TTS模型[22][23][24][25]中,transformer的上下文学习能力已经被证明可以大大提高说话人的相似度,但在VC任务中很少使用。通过整合完整的参考话语,该模型可以学习高质量零样本转换所必需的细粒度说话人特征。

实验结果表明,Seed-VC显著优于OpenVoice[26]和CosyVoice[27]等强基线,在零样本语音转换任务中实现了更高的说话者相似性和更低的WER。我们还比较了我们的模型在几个说话人上的零样本性能与之前的非零样本模型,以更低的WER实现了同等或更好的说话人相似性。此外,我们通过将基频(F0)调节纳入模型输入,将我们的框架扩展到零样本歌唱声音转换中。结果显示,说话人相似度高,WER低,F0相关性高,F0均方根误差(RMSE)低,DNSMOS得分高,表明了自然度和可懂度的有效性。

本文贡献如下:
(1).我们提出了新框架Seed-VC,通过在训练过程中使用外部音色移位器来解决音色泄漏和训练-推理不一致问题。
(2).我们通过利用整个参考语音上下文的transformer增强音色表示,捕获对零样本VC至关重要的细粒度说话人特性。
(3).我们在零样本语音转换和零样本歌唱语音转换任务中展示了优于现有最先进模型的性能。我们通过对音色移位器的影响、完整参考语音上下文的使用和不同音色移位方法的进行了消融研究。
我们的工作通过解决核心挑战并提供更有效和可推广的方法来推进零样本语音转换领域。我们相信Seed-VC为更准确和通用的语音转换系统铺平了道路,适用于广泛的现实世界场景。

2.相关工作

在本节中,我们回顾了与我们提出的Seed-VC框架相关的先前工作,重点是内容表示,音色建模以及减轻音色泄漏和训练-推理差异的技术。

2.1语音转换中的内容表示
从语音中准确提取语言内容对VC系统至关重要。传统方法通常依赖于并行数据和显式对齐技术,这对于零样本场景是不可扩展的。自监督学习(SSL)模型已经成为无需标记数据即可表示内容的强大工具。

自监督模型:像HuBERT[1]和wav2vec2.0[2]这样的SSL模型通过预测输入信号的屏蔽部分来学习稳健的语音表示。这些模型捕捉语音和语言信息,同时对说话者特定的特征不太敏感,使它们适合于在VC中提取内容特征。
语音后验图(PPGs):PPGs[3]来源于自动语音识别(ASR)模型,表示语音单位的后验概率。它们在VC中被广泛用于内容表示。然而,ppg会保留残留的说话人信息,导致转换后的语音出现音色泄漏。

2.2解决音色泄露
当来自源语音内容表示的残余说话人信息污染转换后的语音,影响与目标说话人的音色相似性时,就会发生音色泄漏。目前已有几种方法来缓解这个问题。
信息瓶颈方法:在内容表示中引入瓶颈特征可以减少说话人信息的留存量。例如,AutoVC[4]在编码器中使用了一个精心设计的瓶颈,将内容与说话人特性分开。然而,严重的瓶颈特征会导致重要语言信息的丢失,增加转换后语音的词错误率。
离散化技术:矢量量化(VQ)和k-means聚类等方法已被用于离散化内容特征,有效地消除说话人的可变性。VQ-VAE模型[5]量化潜在空间,以鼓励内容和音色的分离。虽然这些方法减少了音色泄漏,但它们也可能丢弃了对自然发音至关重要的微妙语言细节。
基于向量距离的内容检索:一些方法通过基于距离度量[6]选择向量来检索与音色不太相关的内容表示。这有助于减少音色泄漏,但可能会在内容表示中引入扭曲,影响语音的可懂度。

2.3 语音处理中的扩散模型和扩散Transformer
生成建模的最新进展引入了扩散概率模型作为数据生成任务的方法。扩散模型最初是为图像合成而提出的,它已经证明了通过顺序去噪过程对复杂数据分布建模的卓越能力。这种方法已经扩展到语音领域,在语音合成和语音转换方面产生了显著的改进。
语音合成中的扩散模型:DiffWave[8]和WaveGrad[9]等模型将扩散过程应用于波形生成,与传统的自回归模型相比,减少了计算需求,实现了高保真音频合成。这些模型迭代地将噪声信号细化到目标语音波形,由学习到的去噪函数引导。扩散模型在语音合成中的成功突出了它们在捕获音频数据中复杂的时间和频谱模式方面的潜力。
语音转换中的扩散模型:在语音转换中,扩散模型被用来提高转换语音的自然度和质量。通过对语音信号的数据分布进行建模,基于扩散的VC模型可以在保留语言内容的同时,生成与目标说话人特征密切相关的输出。例如,扩散概率建模已被用于提高VC系统对过度平滑的鲁棒性,并更好地处理语音数据中的可变性[16]。
扩散Transformers:将扩散模型与transformer架构相结合,可以利用这两种方法的优势。Transformers[11]以其强大的序列建模和上下文学习能力而闻名,擅长捕获序列数据中的长期依赖关系。将Transformers集成到扩散框架中可以对语音信号进行更具表现力的建模。在文本到语音(TTS)的背景下,DiffSinger[12]等模型通过对以语音和音高信息为条件的声谱图分布建模,利用扩散Transformers产生高质量的歌唱声音。Transformers的上下文学习能力使模型能够利用参考语音的整个序列,捕捉细粒度的细微差别必不可少的自然声音合成。

零样本语音转换的应用:对于零样本VC,扩散transformer提供了处理可变长度序列和从参考语音中整合丰富上下文信息的优势。通过对完整的参考话语进行调节,该模型可以学习精确模仿看不见的说话者所需的详细音色表示。这种方法解决了单矢量音色表示的局限性,增强了模型在零样本场景下的泛化能力。我们提出的Seed-VC框架通过采用扩散转换器架构建立在这些进步的基础上。通过利用transformer模型中的扩散过程,Seed-VC旨在通过上下文学习从参考语音中捕获更细微的音色特征。这种集成使模型能够产生高质量、自然的转换语音,与未见说话人的音色密切匹配,解决了先前工作中的挑战。

3.所提方法

在本节中,我们介绍了Seed-VC,这是我们提出的用于零样本语音转换的框架,它解决了音色泄漏、音色表示不足和训练-推理不一致的挑战。Seed-VC利用扩散transformer架构,并在训练期间采用外部音色移位器,以提高零样本场景的性能。

3.1 训练过程:
在这里插入图片描述

主要原理:
在这里插入图片描述

(1).为了获得参考语音的音色,通过一个预训练好的声纹特征提取器CAM++(腾讯公司创造的开源的)提取。源语音的内容通过Semantic feature Extraction提取,他本质就是ASR模型(包括encoder和decoder),本实验调用的是Whisper模型,Encoder输出的内容就是内容特征。
在这里插入图片描述

(2)下图的上面为参考语音的80维的mel谱,作为引导prompt,辅助生成目标语音,后半部分被掩蔽mask,相当于全是0了。中间为全是噪声的音频,前半截被mask,这个噪声的长度和参考语音,和目标语音的长度(帧数)是一致的。最下面是提取的内容特征,作为条件。把这一堆东西进行拼接,输入到U-DiT模型中。

在这里插入图片描述

(3)U-DiT:扩散模型Flow match
引入了diffusion的transformer模型

结构:
在这里插入图片描述

该框架的主要组成部分是:
扩散transformer:一个基于transformer的网络,具有N层维数d,它模拟了扩散方案中的去噪过程。我们进一步应用U-ViT [30]的改进:
U-Net式跳接:我们采用与U-Net[31]类似的方法进行跳接。然而,我们没有对序列长度进行下采样,而是通过模型向前保持序列长度的一致性。图1给出了详细的说明
时间token:我们在序列中将时间嵌入作为前缀标记。同时,与[21]类似,在transformer块中采用同步嵌入作为自适应层范数。
旋转位置嵌入:我们在[32]之后应用旋转位置嵌入,使位置编码具有更好的泛化性能,并具有一定的外推性能。
长度调节器:一个卷积堆栈。由于语义特征可能与声学特征具有不同的帧率,我们引入了长度调节模块,将原始语义特征序列插值到与声学特征相同的长度。具体来说,语义特征序列首先被插值到最接近所需长度(在训练中,它是声学特征序列长度),然后传递到卷积堆栈以获得更平滑的语音内容信号表示。

本质:该模型学习的是梯度。

3.2 推理过程

Vocoder也是提前训练好的
在这里插入图片描述

实际代码中,t没用到。s展开到下面了:
在这里插入图片描述

http://www.xdnf.cn/news/1288855.html

相关文章:

  • 启保停-----------单相照明灯的接法
  • 【数据库】 MySQL 表的操作详解
  • 编程模型设计空间的决策思路
  • 贪心----4.划分字母区间
  • 【科研绘图系列】R语言绘制特定区域颜色标记散点图
  • Seata深度剖析:微服务分布式事务解决方案
  • 自然语言处理( NLP)基础
  • docker-compose搭建 redis 集群
  • Gartner 《IAM for LLM-Based AI Agents》学习心得
  • archlinux中VLC无法播放视频的解决办法
  • 【AI生成+补充】高频 hql的面试问题 以及 具体sql
  • ARM芯片架构之CoreSight SoC-400 组件介绍
  • dag实现案例 02、实现简易版dag调度系统(基于01之上升级)
  • C语言—数组和指针练习题合集(二)
  • python调研本地 DeepSeek API的例子
  • IIS Express中可以同时加载并使用.net4.0和.NET 2.0的 DLL
  • 还在用PUT更新局部数据?Jakarta REST 4.0 的“合并补丁”,优雅!
  • 【element树组件】el-tree实现连接线及hover编辑效果
  • Java进阶学习之不可变集合
  • Ubuntu与Rocky系统安装Java全指南
  • 《软件工程导论》实验报告一 软件工程文档
  • 基于LLVM的memcpy静态分析工具:设计思路与原理解析(C/C++代码实现)
  • Life:Internship in OnSea Day 50, 51
  • 11. React组件插槽用法
  • Flink Python API 提交 Socket 数据源的 WordCount 作业
  • uni-app实战教程 从0到1开发 画图软件 (学会画图)
  • Flutter UI Kits by Olayemi Garuba:免费开源的高质量UI组件库
  • nvm install 14.21.3 时npm 无法下载和识别
  • -bash: ./restart.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录
  • 1.Ansible 自动化介绍