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

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

笔记地址: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的成功归因于以下几点:

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

利用大型高质量数据集

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

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

相关文章:

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

笔记地址:https://flowus.cn/share/a79f6286-b48f-42be-8425-2b5d0880c648 【FlowUs 息流】tortoise 论文地址: Better speech synthesis through scaling Abstract: 自回归变换器和DDPM:自回归变换器(autoregressive transfo…...

单元测试工具JEST入门——纯函数的测试

单元测试工具JEST入门——纯函数的测试 什么是测试❓🙉 我只是开发而已?常见单元测试工具 🔧jest的使用👀 首先你得知道一个简单的例子🌰😨 Oops!出现了一些问题👏 高效的持续监听&a…...

Elasticsearch Windows版安装配置

Elasticsearch简介 Elasticsearch是一个开源的搜索文献的引擎,大概含义就是你通过Rest请求告诉它关键字,他给你返回对应的内容,就这么简单。 Elasticsearch封装了Lucene,Lucene是apache软件基金会一个开放源代码的全文检索引擎工…...

安装 vant-ui 实现底部导航栏 Tabbar

本例子使用vue3 介绍 vant-ui 地址:介绍 - Vant 4 (vant-ui.github.io) Vant 是一个轻量、可定制的移动端组件库 安装 通过 npm 安装: # Vue 3 项目,安装最新版 Vant npm i vant # Vue 2 项目,安装 Vant 2 npm i vantlatest-v…...

GitHub国内打不开(解决办法有效)

最近国内访问github.com经常打不开,无法访问。 github网站打不开的解决方法 1.打开网站http://tool.chinaz.com/dns/ ,在A类型的查询中输入 github.com,找出最快的IP地址。 2.修改hosts文件。 在hosts文件中添加: # localhost n…...

Unity之第一人称角色控制

目录 第一人称角色控制 😴1、准备工作 📺2、鼠标控制摄像机视角 🎮3、角色控制 😃4.杂谈 第一人称角色控制 专栏Unity之动画和角色控制-CSDN博客的这一篇也有讲到角色控制器,是第三人称视角的,以小编…...

23种设计模式-结构型模式

1.代理模式 在软件开发中,由于一些原因,客户端不想或不能直接访问一个对象,此时可以通过一个称为"代理"的第三者来实现间接访问.该方案对应的设计模式被称为代理模式. 代理模式(Proxy Design Pattern ) 原始定义是:让你能够提供对象的替代品或其占位符。…...

python -- 流程控制

1、if控制语句&#xff1a;语法格式&#xff1a; age 20 if age > 18:print("我不是小孩子") elif age < 18:print("你永远都是小孩子") else:print("你永远都是小孩子") 2、while循环语句&#xff1a;语法格式&#xff1a; age1 30 …...

Centos 7.9 在线安装 VirtualBox 7.0

1 访问 Linux_Downloads – Oracle VM VirtualBox 2 点击 ​the Oracle Linux repo file 复制 内容到 /etc/yum.repos.d/. 3 在 /etc/yum.repos.d/ 目录下新建 virtualbox.repo&#xff0c;复制内容到 virtualbox.repo 并 :wq 保存。 [rootlocalhost centos]# cd /etc/yum.rep…...

mysql之基本查询

基本查询 一、SELECT 查询语句 一、SELECT 查询语句 查询所有列 1 SELECT *FORM emp;查询指定字段 SELECT empno,ename,job FROM emp;给字段取别名 SELECT empno 员工编号 FROM emp; SELECT empno 员工编号,ename 姓名,job 岗位 FROM emp; SELECT empno AS 员工编号,ename …...

鸿蒙(HarmonyOS)项目方舟框架(ArkUI)之DataPanel组件

鸿蒙&#xff08;HarmonyOS&#xff09;项目方舟框架&#xff08;ArkUI&#xff09;之DataPanel组件 一、操作环境 操作系统: Windows 10 专业版、IDE:DevEco Studio 3.1、SDK:HarmonyOS 3.1 二、DataPanel组件 数据面板组件&#xff0c;用于将多个数据占比情况使用占比图进…...

qt5-入门

参考&#xff1a; qt学习指南 Qt5和Qt6的区别-CSDN博客 Qt 学习之路_w3cschool Qt教程&#xff0c;Qt5编程入门教程&#xff08;非常详细&#xff09; 本地环境&#xff1a; win10专业版&#xff0c;64位 技术选择 Qt5力推QML界面编程。QML类似HTML&#xff0c;可以借助CSS进…...

【重磅发布】已开放!模型师入驻、转格式再升级、3D展示框架全新玩法…

1月23日&#xff0c;老子云正式发布全新版本。此次新版本包含多板块功能上线和升级&#xff0c;为用户带来了含模型师入驻、三维格式在线转换升级、模型免费增值权益开放、全新3D展示框架等一系列精彩内容&#xff01; 1月23日&#xff0c;老子云正式发布全新版本。此次新版本…...

Qt 基础之QDataTime

Qt 基础之QDataTime 引言一、获取(设定)日期和时间二、时间戳三、时间计算 (重载运算符) 引言 QDataTime是Qt框架中用于处理日期和时间的类。它提供了操作和格式化日期、时间和日期时间组合的功能。QDataTime可以用于存储和检索日期和时间、比较日期和时间、对日期和时间执行算…...

美国将限制中国,使用Azure、AWS等云,训练AI大模型

1月29日&#xff0c;美国商务部在Federal Register&#xff08;联邦公报&#xff09;正式公布了&#xff0c;《采取额外措施应对与重大恶意网络行为相关的国家紧急状态》提案。 该提案明确要求美国IaaS&#xff08;云服务&#xff09;厂商在提供云服务时&#xff0c;要验证外国…...

智能指针|巨巨巨详细

智能指针 shared_ptrshared_ptr的基本用法使用shared_ptr要注意的问题 unique_ptr独占的智能指针weak_ptr弱引用的智能指针weak_ptr的基本用法weak_ptr返回this指针weak_ptr解决循环引用问题 weak_ptr使用注意事项 智能指针 C程序设计中使用堆内存是非常频繁的操作&#xff0…...

硬件知识(2) 手机的传感器-sensor

#灵感# 看看小米在干啥 手机型号&#xff1a;Redmi Note 13 Pro&#xff0c;解读一下它宣传的手机卖点。 目录 宣传1&#xff1a;1/1.4" 大底&#xff0c;f/1.65 大光圈&#xff0c; 宣传2&#xff1a;支持 2 亿像素超清直出&#xff0c;分辨率高达 16320 x 12240 宣…...

Kotlin快速入门系列9

Kotlin对象表达式和对象声明 对象表达式 有时&#xff0c;我们想要创建一个对当前类有些许修改的对象同时又不想重新声明一个子类。如果是Java&#xff0c;可以用匿名内部类的概念来解决这个问题。kotlin的对象表达式和对象声明就是为了实现这一点(创建一个对某个类做了轻微改…...

nginx+nginx-rtmp-module+ffmpeg进行局域网推流rtmp\m3u8

局域网推流的简单方式 这里以ubuntu为例 一、先下载安装包 nginx、nginx-rtmp-module&#xff0c;再一起安装 # 下载nginx # 这里我安装的是 nginx-1.10.3 版本 cd /usr/software wget http://nginx.org/download/nginx-1.25.0.tar.gz tar -zxvf nginx-1.25.0.tar.gz# 下载ng…...

PMP备考笔记:模拟考试知识点总结

1. 答题思路&#xff1a;优先看问题&#xff0c;可节省时间。 2. 考试就按照考试的套路来做&#xff0c;不要过多考虑。 开发团队只专注当前冲刺目标&#xff0c;产品负责人对PB排优先级。 收集需求工具-原型法&#xff1a;能够让用户提前体验&#xff0c;减少返工的风险。 …...

Docker 离线安装指南

参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性&#xff0c;不同版本的Docker对内核版本有不同要求。例如&#xff0c;Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本&#xff0c;Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)

文章目录 1.什么是Redis&#xff1f;2.为什么要使用redis作为mysql的缓存&#xff1f;3.什么是缓存雪崩、缓存穿透、缓存击穿&#xff1f;3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...

MFC内存泄露

1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

ETLCloud可能遇到的问题有哪些?常见坑位解析

数据集成平台ETLCloud&#xff0c;主要用于支持数据的抽取&#xff08;Extract&#xff09;、转换&#xff08;Transform&#xff09;和加载&#xff08;Load&#xff09;过程。提供了一个简洁直观的界面&#xff0c;以便用户可以在不同的数据源之间轻松地进行数据迁移和转换。…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

Reasoning over Uncertain Text by Generative Large Language Models

https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...

智能AI电话机器人系统的识别能力现状与发展水平

一、引言 随着人工智能技术的飞速发展&#xff0c;AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术&#xff0c;在客户服务、营销推广、信息查询等领域发挥着越来越重要…...