Tortoise-tts Better speech synthesis through scaling——TTS论文阅读

news2024/10/5 16:27:26

笔记地址:https://flowus.cn/share/a79f6286-b48f-42be-8425-2b5d0880c648
【FlowUs 息流】tortoise

论文地址:

Better speech synthesis through scaling

Abstract:

自回归变换器和DDPM:自回归变换器(autoregressive transformers)是一种基于变换器架构的模型,能够处理序列数据,例如图像的像素。DDPM(深度概率模型,Deep Diffusion Probabilistic Models)是一种基于深度学习的概率模型,用于生成高质量的图像。 自回归变换器和DDPM被广泛应用于图像生成,它们利用大量的计算资源和数据来学习图像的分布,这意味着模型通过分析和学习大量图像数据来理解和复现图像的概率分布。

技术迁移:该方法论不仅限于图像生成,还可以应用于其他领域,如语音合成。

TorToise系统:这篇论文描述了一种将图像生成领域的进步应用于语音合成的方法。其结果是TorToise,这是一个富有表现力的多声音文本到语音合成系统。

所有的模型代码和训练好的权重都已在GitHub上开源,网址为:

GitHub - neonbjb/tortoise-tts: A multi-voice TTS system trained with an emphasis on quality

1.Background

1.1Text-to-speech

文本到语音研究领域主要集中于开发高效的模型,这些模型通常基于相对较小的数据集进行训练。这种选择主要受以下因素的驱动:

高效模型的需求:为了能够大规模部署,需要构建高效的语音生成模型,这些模型必须具有高采样率。

大型转录语音数据集的缺乏:很难获得大型、经过转录的语音数据集。

扩展传统TTS中使用的编解码器模型架构的挑战:传统的TTS技术在扩展时面临许多挑战。

1.1.1Neural MEL Invertes

神经MEL反转器,就是vocoder,声码器

MEL频谱编码:大多数现代文本到语音系统操作的是编码为MEL频谱的语音数据。MEL编码的一个主要优点是它高度空间压缩,意味着它可以在保留大部分信息的同时大幅度减小数据大小。例如,Tacotron使用的MEL配置相对于以22kHz采样的原始音频波形数据实现了256倍的压缩。

MEL频谱解码研究:由于MEL频谱的这些特性,一个专门的研究领域致力于找到高质量的方法,将MEL频谱再转换回音频波形。执行这一任务的合成器通常称为“声码器”,但在这篇论文中,作者更普遍地将其称为“MEL反转器”。

基于神经网络的MEL反转器:现代基于神经网络的MEL反转器非常复杂,它们产生的波形几乎与人类耳朵听到的录音波形无法区分,并且在训练集之外具有很高的泛化能力。作者利用这些研究成果,使用了Univnet(Kim, 2021)的实现作为其文本到语音系统的最终阶段。

1.2Image generation

与TTS系统主要关注延迟不同,图像生成领域更多地关注于训练能生成高质量结果的模型,而不太关心采样时间的长短。

1.2.1DALL-E

自回归解码器在图像生成中的应用:DALL-E(Ramesh等人,2021年)展示了如何将自回归解码器应用于文本到图像的生成。这一点特别吸引人,因为在NLP领域,已经有大量研究专注于扩展仅解码器模型。

DALL-E的问题:首先,DALL-E依赖于全序列自注意力,这带来了O(N²)的计算和存储成本,其中N是序列长度。其次,传统的自回归方法需要在离散域中操作。DALL-E使用量化自编码器将图像编码成离散的标记序列,然后使用自回归先验模型来模拟这些标记序列。这在表现力方面是DALL-E的一个优势,但它需要一个解码器将这些图像标记转换回实际组成图像的像素值。

1.2.2DDPMs

解决模糊性和模式崩溃问题:DDPM(Ho等人,2020年)最近作为一种能够产生清晰、连贯和多样化图像的生成模型而出现。这些模型非常有效地使用低质量的引导信号来重建这些信号来源的高维空间。换句话说,它们在超分辨率方面表现出色。

DDPM的局限性:传统的DDPM方法依赖于在采样开始前已知的固定输出形状。此外,DDPM的采样过程需要多次迭代,并且消耗大量计算资源,意味着总是会有显著的延迟成本。

1.2.3Re-ranking

自回归模型的输出过程:DALL-E引入了“重新排序”自回归模型输出的过程。这一过程从自回归模型中随机采样,并从k个输出中挑选最高质量的输出用于下游应用。

强大的鉴别器的需求:这种方法需要一个强大的鉴别器,即能够区分好的和不好的文本/图像配对的模型。DALL-E使用了CLIP(Radford等人,2021年),这是一个以对比文本和图像配对目标进行训练的模型。

2.Method

2.1Joining Autoregressive Decoders and DDPMs

将自回归解码器和DDPM结合起来

首先回顾一下二者的优势:

自回归模型的优势:

  • 自回归模型擅长在视觉、文本和语音等未对齐的领域之间进行转换
  • 它们通过将输入数据(如文本)转换成一系列的输出标记(如图像或语音的代表性标记)来工作。

DDPM的优势:

  • DDPM在连续域中操作,使它们能够模拟表达性模态,如图像或语音的细微变化。
  • DDPMs通过处理这些输出标记,将它们转换成高质量的连续数据表示,例如语音谱图或图像。

结合二者优两种模型类型都已经展示了随着计算和数据的增加而提升性能的能力。当面对像生成语音谱图或图像这样的连续数据问题时,结合这两种方法可能会带来独特的优势。

  • 在推理过程中,首先使用自回归模型将一系列文本标记转换成代表输出空间的一系列标记(在这个案例中是语音标记)。
  • 然后,使用DDPM将这些标记解码成高质量的语音表示。

2.2Applying Autoregression+DDPMs to TTS

为了构建之前提出的系统,需要训练以下几种神经网络:

自回归解码器

  • 预测基于文本的语音标记的概率分布。
  • 这个解码器将文本转换成一系列代表语音的标记。

对比模型(类似于CLIP)

  • 用于对自回归解码器的输出进行排序。
  • 类似于CLIP的模型,用于评估和选择最佳的生成输出。

DDPM

  • 将语音标记转换回语音谱图。
  • 这一步骤负责将标记转化为可以听到的语音。
2.2.1Conditinoing Input
  • TorToise的独特设计选择:一个额外的输入被提供给自回归生成器和DDPM,被称为语音条件输入。
  • 语音条件输入的处理:从一个或多个与目标相同说话者的音频剪辑开始,这些剪辑被转换为MEL谱图,并通过一个由自注意力层组成的编码器进行处理。
  • 编码器的输出:这些层的输出被平均以产生单个向量。所有编码的条件剪辑的向量然后再次被平均,然后作为输入传递给自回归或条件网络。
2.2.2 The “TorToise Trick”
  • 训练过程:在大部分训练过程中,DDPM被训练为将离散的语音代码转换成MEL谱图。在这一过程收敛后,对DDPM进行微调,使其基于从自回归模型输出中提取的潜在空间,而不是语音代码。
  • 逻辑:自回归潜在空间比离散标记在语义上更丰富。通过在这个潜在空间上进行微调,可以提高下游扩散模型的效率。这种微调是提高模型输出质量的最大贡献者之一。

2.3CLVP

  • 重新排序的策略:正如之前提到的,从生成模型中获取表达性输出的一个好策略是使用定性鉴别器重新排序多个输出,然后只选择最佳的。DALL-E使用CLIP来实现这一点。
  • CLVP的应用:用于CLIP的这种方法同样可以应用于语音:大多数TTS数据集只是音频剪辑和文本的配对。通过在对比设置中对这些配对进行模型训练,模型成为了语音的有效鉴别器。
  • TorToise中的CLVP:训练了Contrastive Language-Voice Pretrained Transformer(CLVP)。它具有CLIP的许多相同属性,但显著地用作在重新排序TTS输出中的评分模型。
  • 高效推理:为了在推理中高效运作,CLVP被训练为将离散的语音标记与文本标记配对,这样CLVP可以在不调用昂贵的扩散模型的情况下重新排序多个自回归输出。

3.Training

  • 训练环境:这些模型在8台NVIDIA RTX-3090显卡组成的小型集群上训练了一年时间。(一年...突然理解了为什么叫tortoise)
  • 训练细节:关于这些模型的具体训练方法可以在论文文档的附录B中找到。

4.Inference Process

一旦框架的四个模型全部训练完成,推理过程如下:

输入条件和文本:将条件输入和文本输入到自回归模型,并解码出大量的输出候选项。

使用CLVP评分:使用CLVP为每个语音候选项和文本之间的相关性打分。

选择顶级候选项:选择排名最高的k个语音候选项,然后对每个候选项:

使用DDPM解码:使用DDPM解码成MEL谱图。

转换为波形:使用传统的声码器将其转换为波形。

自回归模型解码设置:在解码自回归模型时,使用核采样(nucleus sampling),设置P=0.8,重复惩罚=2,Softmax温度=0.8。

  • DDPMs采样:采样自DDPMs是一个高度研究且快速变化的领域。在TorToise设计时,发现最佳平衡质量和推理速度的采样配置如下:

算法:DDIM(Song等人,2022年)

调度:线性

采样步骤:64

无条件引导常数:2

5.The Dataset

  • 数据需求:由于目标是训练一个大型语言模型,因此需要大量数据。
  • 初始数据集:开始使用的是LibriTTS(Zen等人,2019年)和HiFiTTS(Bakhturina等人,2021年)数据集,这两个数据集合计包含896小时的转录语音。
  • 扩展数据集:构建了一个额外的“扩展”数据集,包含从互联网上抓取的有声书和播客的49,000小时语音音频。关于这个数据集是如何构建的细节在附录I中。
  • 验证用数据集:使用官方的LibriTTS测试分割作为验证目的。

6.Experiments

  • TTS系统的比较挑战:由于许多最先进的TTS系统是闭源的,且可比较样本较少,因此实验性比较TTS系统具有挑战性。
  • 评估套件:为此,作者构建了自己的评估套件,使用CLVP生成实际样本和生成样本之间的距离度量,类似于用于图像的FID分数。
  • “可理解性”度量:此外,还使用开源的wav2vec模型来表征语音片段的“可理解性”。
  • 开源工作:作者已将这些工作开源。
  • TorToise样本与其他论文样本的比较:可以在提供的链接中找到TorToise生成的样本与其他论文生成的样本之间的比较。

7.Conclusion

  • TorToise的地位:TorToise是最近使用通用模型架构的一系列最新突破性成果中的最新成果之一。
  • 对音频处理的应用:尽管TorToise几乎没有专门为音频处理设计的部分,但它在真实感方面超越了所有以前的TTS模型。
  • 成功因素:TorToise的成功归因于以下几点:

采用通用架构:比如变换器层堆栈。

利用大型高质量数据集

在较大规模和高批量大小下训练

  • 项目的主要启示:作者从这个项目中主要认识到,遵循上述三点可以获得非常强大的结果。作者认为,任何数字化的模态都可能适用于使用这个框架的生成建模。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1415503.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法38:子数组的最小值之和(力扣907题)----单调栈

题目: 给定一个整数数组 arr,找到 min(b) 的总和,其中 b 的范围为 arr 的每个(连续)子数组。 示例 1: 输入:arr [3,1,2,4] 输出:17 解释: 子数组为 [3],[…

设计模式:工厂方法模式

工厂模式属于创建型模式,也被称为多态工厂模式,它在创建对象时提供了一种封装机制,将实际创建对象的代码与使用代码分离,有子类决定要实例化的产品是哪一个,把产品的实例化推迟到子类。 使用场景 重复代码 : 创建对象…

机器学习---可能近似正确(PAC)、出错界限框架

1. 计算学习理论概述 从理论上刻画了若干类型的机器学习问题中的困难和若干类型的机器学习算法的能力 这个理论要回答的问题是: 在什么样的条件下成功的学习是可能的? 在什么条件下某个特定的学习算法可保证成功运行? 这里考虑两种框架&…

【开源】基于JAVA+Vue+SpringBoot的固始鹅块销售系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 数据中心模块2.2 鹅块类型模块2.3 固始鹅块模块2.4 鹅块订单模块2.5 评论管理模块 三、系统设计3.1 用例设计3.2 数据库设计3.2.1 鹅块类型表3.2.2 鹅块表3.2.3 鹅块订单表3.2.4 鹅块评论表 四、系统展示五、核心代码5.…

基于C语言的趣味游戏之五子棋

目录 趣味五子棋游戏 第一步 text.c文件 第二步 game.h文件 第三步 初始化 打印棋盘 玩家输入 电脑输入 判断输赢 game.c 趣味五子棋游戏 第一步 先写菜单,然后在主函数里调用,由于这是一个可以重复的游戏所以将do while循环里调用menu函数。…

C/C++ - 类的封装特性

目录 类的封装 语法格式 声明定义 分文件 访问权限 类作用域 对象模型 构造函数 默认构造函数 带参构造函数 拷贝构造函数 构造函数重载 委托构造函数 初始数据列表 构造默认参数 构造函数删除 析构函数 析构函数概念 析构函数特性 析构函数示例 析构调用…

【Unity】【游戏开发】Pico打包后项目出现运行时错误如何Debug

【背景】 开发过程中的报错可以通过控制台查看,但是PICO项目这类依赖特定设备环境的应用往往存在打包后在设备端发生运行时错误。这时如何能查看到Debug信息呢? 【分析】 Pico也是安卓系统,所以这个问题就可以泛化为Unity有哪些在安卓端运…

dnSpy调试工具二次开发2-输出日志到控制台

本文在上一篇文章的基础上继续操作: dnSpy调试工具二次开发1-新增菜单-CSDN博客 经过阅读dnSpy的源码,发现dnSpy使用到的依赖注入用了MEF框架,所以在源码中可以看到接口服务类的上面都打上了Export的特性或在构造方法上面打上ImportingConst…

力扣hot100 最小栈 变种栈

Problem: 155. 最小栈 文章目录 思路💖 Stack 自定义 Node🍻 Code 思路 👩‍🏫 甜姨 💖 Stack 自定义 Node 时间复杂度: O ( 1 ) O(1) O(1) 空间复杂度: O ( n ) O(n) O(n) 🍻 Code class MinS…

数据结构-顺序表的实现 [王道]

本博客记录个人寒假学习内容。此篇博客内容为 顺序表的定义。 博客中截图来自王道数据结构公开课 目录 顺序表的定义 顺序表的特点 顺序表的实现--静态分配 顺序表的实现--动态分配 顺序表的定义--知识结构框架 顺序表的定义 >线性表是具有相同(每个数据元素所占的空间…

Spring Boot使用AOP

一、为什么需要面向切面编程? 面向对象编程(OOP)的好处是显而易见的,缺点也同样明显。当需要为多个不具有继承关系的对象添加一个公共的方法的时候,例如日志记录、性能监控等,如果采用面向对象编程的方法&…

CSS优先级内容

定义CSS样式时,经常出现两个或多个样式规则应用在同一元素的情况,这时就会出现优先级的情况,那么应用的元素应该显示哪一个样式呢? 一.下面举例对优先级进行具体讲解。 p{color:red;} .blue{color:orange;} #header{color:blu…

OpenCV-27 Canny边缘检测

一、概念 Canny边缘检测算法是John F.Canny与1986年开发出来的一个多级边缘检测算法,也被很多人认为是边缘检测的最优算法。最优边缘检测的三个主要评价标准是: 低错频率:表示出尽可能多的实际边缘,同时尽可能的减小噪声产生的误…

Spring源码分析:refresh()

refresh()中共有13个方法,分别为 1.prepareRefresh() 容器刷新前的准备,设置上下文状态,获取属性,验证必要的属性等 protected void prepareRefresh() {//spring启动时间this.startupDate System.currentTimeMillis();//spring…

01 Redis的特性+下载安装启动+Redis自动启动+客户端连接

1.1 NoSQL NoSQL(“non-relational”, “Not Only SQL”),泛指非关系型的数据库。 键值存储数据库 : 就像 Map 一样的 key-value 对。如Redis文档数据库 : NoSQL 与关系型数据的结合,最像关系…

Python如何获取程序打包后的目录,如何获取管理员权限

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 实现步骤 📒📝 获取程序打包后所在目录📝 获取管理员权限⚓️ 相关链接 ⚓️📖 介绍 📖 Python 是一种功能强大的编程语言,本篇文章将介绍Python如何获取程序打包后所在目录,以及如何获取管理员权限并执行需要管理…

【深度学习】sdxl中的 tokenizer tokenizer_2 区别

代码仓库: https://huggingface.co/stabilityai/stable-diffusion-xl-base-1.0/tree/main 截图: 为什么有两个分词器 tokenizer 和 tokenizer_2? 在仔细阅读这些代码后,我们了解到 tokenizer_2 主要是用于 refiner 模型的。 #…

javax.servlet.http包

javax.servlet.http包 javax.srvlet.http包是对javax.servlet包的扩展。该包的类和接口处理使用HTTP进行通信的servlet。这些servlet也称为HTTP Servlet。您需要扩展HttpServlet类来开发HTTP Servlet。javax.servlet.http包经常使用的接口包括: HttpServletRequest接口HttpSe…

Windows10上通过MSYS2编译FFmpeg 6.1.1源码操作步骤

1.从github上clone代码,并切换到n6.1.1版本:clone到D:\DownLoad目录下 git clone https://github.com/FFmpeg/FFmpeg.git git checkout n6.1.1 2.安装MSYS2并编译FFmpeg源码: (1).从https://www.msys2.org/ 下载msys2-x86_64-20240113.exe &#…

x-cmd pkg | shtris - 命令行俄罗斯方块游戏

目录 简介首次用户技术特点竞品和相关作品进一步阅读 简介 shtris 是一个由 shell 脚本,参考 俄罗斯方块指南 (2009) 实现的俄罗斯方块游戏。 首次用户 使用 x shtris 即可自动下载并使用 在终端运行 eval "$(curl https://get.x-cmd.com)" 即可完成 x …