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

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

利用大型高质量数据集

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot中阿里云OSS的使用

目录 1 登录/注册阿里云并进入控制台 2 进入OSS控制台 3 创建bucket 4 查看bucket 5 获取AccessKey 6 查看帮助文档 7 添加Maven依赖 8 获取示例代码并改造成工具类 9 测试 1 登录/注册阿里云并进入控制台 2 进入OSS控制台 3 创建bucket 4 查看bucket 5 获取AccessKe…

套接字的多种可选项(修改IO缓冲区大小及TCP_NODELAY)

标题套接字的多种可选项 我们进行套接字编程时往往只关注数据通信,而忽略了套接字具有的不同特性。但是,理解这些特性并根据实际需要进行更改也十分重要。 从上表可以看出,套接字可选项是分层的。IPPROTOIP层可选项是IP协议相关事项&#x…

全局视角,搞懂“新零售支付”

文章首发于微信公众号:PenguinPay ,欢迎关注。 零售业就是商家将商品或服务在场所中卖给消费者。其中的关键词就是 人,货,场。 一、 初始新零售 1.1 传统零售货找人 传统零售业,只能在固定场所销售商品或服务,以商家店为中心只…

探究SpringWeb对于请求的处理过程

探究目的 在路径归一化被提出后,越来越多的未授权漏洞被爆出,而这些未授权多半跟spring自身对路由分发的处理机制有关。今天就来探究一下到底spring处理了什么导致了才导致鉴权被绕过这样严重的问题。 DispatcherServlet介绍 首先在分析spring对请求处…

AI编译器的前端优化策略

背景 工作领域是AI芯片工具链相关,很多相关知识的概念都是跟着项目成长建立起来,但是比较整个技术体系在脑海中都不太系统,比如项目参与中涉及到了很多AI编译器开发相关内容,东西比较零碎,工作中也没有太多时间去做复盘…

上升子序列的最大长度,递归-记忆化搜索-动态规划三步走

题目描述: 小明有一个数组,他想从数组任意元素开始向后遍历,找出所有上升子序列,并计算出最长的上升子序列的长度。 数据范围: 每组数据长度满足 1≤n≤200 1≤n≤200 , 数据大小满足 1≤val≤350 1≤val≤…

C++基础入门

前言:哈喽小伙伴们,从这篇文章开始,博主将开启新篇章的讲解——C语言,那么C是一门怎么样的语言呢???它的语法又是怎么样的呢???这篇文章将给你一一解答。 目录…

阿里云部署配置幻兽帕鲁Palworld服务器教程

阿里云作为国内领先的云计算服务提供商,为企业和个人提供了丰富的云服务。最近幻兽帕鲁这款游戏挺火,阿里云为游戏开发者和玩家提供了一种高效、便捷的方式来部署配置幻兽帕鲁Palworld联机服务器,无需手动部署配置,3分钟即可完成幻…

Java笔记 --- 四、异常

四、异常 Java.lang.Throwable Error Exception(异常) 异常的作用 异常的处理方式 JVM默认的处理方式 捕获异常(自己处理) try里面没有出现异常,就不会运行catch里面的代码 如果出现多个异常,需要多个c…

【PyQt】01-PyQt下载

文章目录 前言静态库 一、PyQt是什么?二、安装1.Windows环境下安装安装PyQt5Designer 2.Liunx环境下安装 总结 前言 拜吾师 PyQt5 快速入门 静态库 补充一点知识: Windows: .lib Linux: .a .so(动态库) 简单描述PyQt就是python调用C的Qt文…

【超简版,代码可用!】【0基础Python爬虫入门——下载歌曲/视频】

安装第三方模块— requests 完成图片操作后输入:pip install requests 科普: get:公开数据 post:加密 ,个人信息 进入某音乐网页,打开开发者工具F12 选择网络,再选择—>媒体——>获取URL【先完成刷新页面】 科…

2024年人工智能产业十大发展趋势

2024年人工智能产业十大发展趋势 技术变革1. 多模态预训练大模型将是人工智能产业的标配2. 高质量数据愈发稀缺将倒逼数据智能飞跃3. 智能算力无处不在的计算新范式加速实现 应用创新4. 人工智能生成内容(AIGC)应用向全场景渗透5. 人工智能驱动科学研究&…

Vscode配置python代码开发

文章目录 1. 配置python运行环境2. 常用插件说明3. Vscode配置文件说明3.1 setting.json配置说明3.2 launch.json配置说明 4. 远程开发5. 其他配置 1. 配置python运行环境 安装python插件:点击VSCode左侧边栏中的扩展图标(或按 CtrlShiftX)&a…

nodejs学习计划--(七)express框架

express框架 1. express介绍 express 是一个基于 Node.js 平台的极简、灵活的 WEB 应用开发框架,官方网址:https://www.expressjs.com.cn/ 简单来说,express 是一个封装好的工具包,封装了很多功能,便于我们开发 WEB …

osgEarth真HelloWorld

osgEarth真HelloWorld vcpkg installtests vcpkg install osgEarth安装指南 https://docs.osgearth.org/en/latest/install.html, 预先设置ports/osg/portfile.cmake GL3 否则调用osg相关功能时会出现如下提示 OpenSceneGraph does not define OSG_GL3_AVAILABLE; …

【2024-01-27可用】NVM安装太慢,镜像地址失效

安装nvm时, Could not retrieve https://registry.npm.taobao.org/latest/SHASUMS256.txt. 解决如下 ### 具体配置 安装路径 root: D:\Program Files\nvm path: D:\Program Files\nodejs镜像地址 node_mirror: https://npmmirror.com/mirrors/node/ npm_mirror:…

基于ncurse的floppy_bird小游戏

1. 需求分析 将运动分解为鸟的垂直运动和杆的左右运动。 2. 概要设计 2.1 鸟运动部分 2.2 杆的运动 3. 代码实现 #include <stdio.h> #include <ncurses.h>#include <stdlib.h> #include <time.h>int vx 0; int vy 1;int bird_r; int bird_c;int…

高考复习技巧考研资料、美赛论文及代码,数据收集网站(初高中招生考试全科试卷等)

图&#xff0c;就要从“点、线、面的位置关系”这一内核开始发散&#xff0c;第一层级为彼此的位置关系&#xff0c;平行、相交、异面&#xff08;两直线间位置&#xff09;、垂直&#xff08;相交或异面中的特殊位置&#xff09;&#xff0c;多面体、旋转体等&#xff0c;然后…

【Java与网络6】实现一个自己的HTTP浏览器

前面我们讨论了HTTP协议的基本结构和Socket编程的基本原理&#xff0c;本文我们来整个大活&#xff1a;自己实现一个简单的浏览器。 目录 1.主线程循环体 2.readHostAndPort()方法的实现 3.readHttpRequest()方法的实现 4.sendHttpRequest()方法的实现 5.readHttpRespons…

由两个有限项的等差数列B, C, 求有多少个有限项的等差数列A,满足C是A, B的所有公共项,若有无穷个A满足条件,输出-1

题目 思路: #include <bits/stdc++.h> using namespace std; #define int long long #define pb push_back const int maxn = 1e6 + 5, inf = 1e9 + 5, maxm = 4e4 + 5, mod = 1e9 + 7, N = 1e6; // int a[maxn], b[maxn]; int n, m; string s;int qpow(int a, int b){…