论文阅读_字节的语音生成模型_Seed-TTS

英文名称: Seed-TTS: A Family of High-Quality Versatile Speech Generation Models
中文名称: Seed-TTS:高质量多功能语音生成模型系列
链接: http://arxiv.org/abs/2406.02430v1
代码: https://github.com/BytedanceSpeech/seed-tts-eval (评测工具)
演示网站:https://bytedancespeech.github.io/seedtts_tech_report/
作者: Seed Team
机构: 字节跳动
日期: 2024-06-04

摘要

目标:提出 Seed-TTS,一种大规模自回归文本转语音模型,主要用于生成几乎无法区分人类语音的语音。

方法:提出了自蒸馏方法用于语音因子分解,以及强化学习方法用于增强模型鲁棒性、说话者相似度和可控性。另外,提出了一种非自回归(NAR)变体 Seed-TTS_DiT,采用全扩散式架构。

结论:Seed-TTS 在说话者相似度和自然度方面表现出色,通过微调实现了更高的主观评分。Seed-TTS 能够对各种语音属性进行优越控制,如情感,并能够为非实验室说话者生成高度表现力丰富和多样化的语音。它展示出在语音编辑方面的有效性。

读后感

看到演示网站上的效果,语音编辑(Content Editing)还挺惊艳的,几乎可以以假乱真。

它可以调整情感、语调和说话风格,包括但不限于:愤怒(Angry)、快乐(Happy)、悲伤(Sad)、温柔(Tender)、困惑(Confused)和恐惧(Fear)。在说话风格方面,还能调整为正式、非正式和戏剧化等。

在技术方面,他们提出了自蒸馏方法,并对比了完全的扩散模型和自回归语言模型的建模方法,算法方面确实有干货。

语音分解和降低能耗是未来的重要方向;语音编辑和视频翻译配音也是非常精准的使用场景;这确实是一个专注于视频领域团队的优秀作品。

1 引言

Seed TTS 可以在零样本条件下创建可控且高保真的合成语音(无需训练,提供示例即可克隆)。该模型在虚拟助手、有声读物和视频配音等应用中具有巨大的潜力。

论文在三个任务上对其进行了评估:零样本语音上下文学习(ICL)、说话人微调和情绪控制。此外,还开源了测试工具:seed-tts-eval。

主要贡献如下:

  • 在零样本 ICL 设置下,证明 Seed-TTS 能生成健壮、相似且高度动态的语音,这些语音与人类语音难以区分。
  • 提出了一种新的自蒸馏扩展,用于 Seed-TTS 的音色解耦,并展示了其在语音转换任务中的最先进性能。
  • 引入了一种基于 RL 的新型后训练扩展,全面提升了 Seed-TTS 模型的性能。
  • 展示了一种完全基于扩散的新型 Seed-TTS 变体,实现更优质的生成效果。并展示了其在语音编辑任务中的优势,同时将其与基于语言模型的同类模型进行了比较。

2 方法

Seed-TTS 是一种基于自回归转换器的模型,如图 -1 所示。系统由四个主要组件组成:语音标记器、令牌语言模型、令牌扩散模型和声学声码器。Seed-TTS 在大量数据上进行训练,其训练数据规模比以前最大的 TTS 系统大几个数量级,从而实现了强大的泛化能力和涌现能力。

在这里插入图片描述
图 1:Seed-TTS 推理管道概述。(1)语音标记器从参考语音中学习标记。(2)自回归语言模型根据条件文本和语音生成语音标记。(3)扩散转换器模型在给定生成的语音标记后,从粗到细地生成连续的语音表示。(4)声学声码器从扩散输出中产生更高质量的语音。

Seed-TTS 经过三个训练阶段:预训练、微调和后训练。

  • 预训练阶段旨在最大限度地提高场景和说话者的覆盖范围,同时为通用语音建模建立强大的基础。在此阶段,Seed-TTS 使用的训练数据量和模型规模比以前的语音生成模型大几个数量级。
  • 微调阶段包括发音者微调和指令微调。发音者微调侧重于提高一组选定发音者的性能,而指令微调旨在提高系统对用户指令的可控性和交互性。
  • 后训练通过强化学习进行,以进一步优化模型。

作为语音生成的基础模型,Seed-TTS 可以执行多种任务,包括零样本语音延续、可控 TTS、跨语言 TTS、语音转换、声音合成以及说话风格迁移。

(小编说:此处并未详细说明模型实现的具体方法)

3 实验

3.1 零样本上下文学习

为了验证合成语音中音色的保留性,在图 3 中使用 t-SNE 绘制了 25 个说话者的原始语音和合成语音的说话人嵌入。可以看到,原始语音和合成语音的嵌入可靠地聚集在一起。

(小编说:这里只摘录了一些比较有意思的实现,这 25 个声音估计也是比较有辨识度的声音)

3.2 微调

选择了 5 名说话者(3 名女性和 2 名男性),每个人的语音数据范围从 1 到 10 小时不等。使用这些数据,对 Seed-TTS 进行了微调,总共 20 小时,并集成了一个额外的发音者索引令牌,以便在推理过程中选择目标发音者的音色。

虽然微调模型在客观指标上表现相似,但在主观评估中表现出优势。实证观察表明,微调后的 Seed-TTS 模型可以捕捉到目标说话者的更多细微差别,例如细微的韵律变化和句子末尾独特的发音模式。

为了进一步实现模型的可控性,作者团队尝试集成附加指令微调(IFT)。这使得模型能够灵活地控制生成语音的各个方面,例如表达能力、语速、风格和情感。

(小编说:这个效果看演示更为直观)

3.3 低延迟推理和流式处理

与传统的 TTS 模型相比,Seed-TTS 的模型尺寸明显更大,给部署带来了额外的障碍。为了解决这些挑战,作者采用了各种技术来降低推理成本和延迟。优化后的模型在主观和客观测试中实现了与离线模型相当的效果,并显著降低了延迟、计算和内存消耗。

(小编注:RTF 指生成的语音的实际时长与生成语音所需时间的比率。如果一个语音合成系统生成 1 秒的语音需要 0.5 秒,那么 RTF 为 0.5)

4 模型扩展

4.1 通过自蒸馏进行语音分解

语音分解是将语音拆解为独立属性的过程。这使得 TTS 系统可以灵活地合成具有不同音色、韵律,并且来自不同发音人的语音组合。这对于零样本语音转换和分解零样本 TTS 等应用至关重要。

文中提出了一种自蒸馏方案来实现属性解耦。其核心是创建共享大部分信息但在某些特定属性上有所不同的受控语音对。通过利用这些数据对,并对模型架构进行小幅更新,Seed-TTS 模型能够实现高质量的属性解耦。

在 Seed-TTS 生成过程中,通过将说话人扰动引入扩散模块,可以获得内容和韵律相同但音色变化的合成语音。将原始句子和音色改变的句子分别表示为 𝑆𝑜⁢𝑟⁢𝑖 和 𝑆𝑎⁢𝑙⁢𝑡。

重新训练扩散模型,使用从 𝑆𝑎⁢𝑙⁢𝑡 中提取的令牌作为网络输入。从 𝑆𝑜⁢𝑟⁢𝑖 中提取的音色参考也作为扩散输入的一部分被集成。该网络经过优化,可以恢复从 𝑆𝑜⁢𝑟⁢𝑖 中提取的声码器嵌入。这种方法允许我们使用额外的音色参考来修改音色,同时保留原始内容和韵律。

(小编说:这种方法主要控制了音色,对韵律控制较小。目前零样本学习的 TTS 差不多都是这个效果)

4.2 通过强化学习实现偏好偏置

使用 REINFORCE 对原始模型(Seed-TTSICL)进行微调,基于不同的奖励函数形成两个版本:

  • Seed-TTSRL-SIM-WER:使用相似度和错误率作为奖励,提高说话人相似性和稳健性。
  • Seed-TTSRL-SER:使用情感识别模型的准确率作为奖励,提高情感控制能力。

RL 的应用显著提高了情绪控制的精度。然而,使用 RL 也发现了一些问题。为了实现较低的 WER,模型往往会生成速度较慢且发音更清晰的话语,这导致了自然性的牺牲。

4.3 完全基于扩散的语音生成

文中提出了一种基于扩散的 Seed-TTS 模型变体,称为 Seed-TTSDiT。该模型使得扩散模型可以直接将高斯噪声转换为纯粹基于输入文本的声码器潜在表示,而不依赖 Speech tokens。

与估计音素级别持续时间的方法不同,该模型首先估计生成语音的总持续时间,然后优化模型以确定音频和文本之间的局部对齐方式。通过这种方法,Seed-TTSDiT 可以动态调整每个音素的持续时间,从而产生高度自然的语音。

相比采用 next-token 语言建模的方法,纯扩散模型流程更简单。作为一种非流式模式,Seed-TTSDiT 自然支持内容编辑应用,如图 5 所示。然而,语言建模方法具有流式处理优势,并能够与基于文本的语言模型集成

4.4 内容编辑和语速编辑

进一步评估 Seed-TTSDiT 的两项语音编辑任务:内容编辑和语速编辑。

在内容编辑任务中,屏蔽了一定比例的音频,并使用模型根据每个测试样本提供的文本恢复被屏蔽的部分。

在语速编辑任务中,只需使用修改后的总持续时间重新合成每个测试样本。

实验表明,模型可以根据不同的总时长自动调整语速。例如,当将语音延长到更长的总时长时,模型会在适当时刻插入静音或拉长某些元音发音,同时保持整体语速在自然范围内。这样输出的语音比传统方法更自然,更接近原说话者。

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

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

相关文章

找出所有点到一个点的距离的最小值

这个题的看一眼有点像树形dp&#xff0c;但是要怎么去优化我们转移方程呢 这是为什么呢&#xff0c;我们的树形dp很难考虑来之前的答案&#xff0c;那么d[y] 怎么办&#xff0c;我们可以先以1为根计算出以1为根的答案 #define _CRT_SECURE_NO_WARNINGS #include<bits/stdc.…

js 计算小数精度问题 ,引入decimal.js库 解决

安装 npm install --save decimal.js 引入 import Decimal from "decimal.js" 使用 new Decimal function adddDecimals (...decimals) { let sum new Decimal(0) decimals.forEach(decimal > { sum sum.plus(decimal) }) return sum.toNumber() } const res …

【刷题汇总 -- 笨小猴、 主持人调度(一)、分割等和子集】

C日常刷题积累 今日刷题汇总 - day0251、笨小猴1.1、题目1.2、思路1.3、程序实现 2、主持人调度&#xff08;一&#xff09;2.1、题目2.2、思路2.3、程序实现 3、分割等和子集3.1、题目3.2、思路3.3、程序实现 -- 0/1背包问题 4、题目链接 今日刷题汇总 - day025 1、笨小猴 1…

【MIT 6.5840(6.824)学习笔记】Raft

1 脑裂 许多容错系统使用一个单主节点来决定主副本。 MapReduce&#xff1a;由单主节点控制计算复制。GFS&#xff1a;主备复制数据&#xff0c;并由单主节点确定主拷贝的位置。VMware FT&#xff1a;主虚机和备份虚机之间复制指令&#xff0c;需要单点的Test-and-Set服务确认…

【JavaEE】通过Linux部署Web项目到云服务器上

一.配置部署所需的环境. 1.1 什么是部署? 要想知道什么是部署, 就要先了解我们在日常开发的过程中所设计到的几种环境: 开发环境: 软件开发环境指的是开发人员在创建、测试和部署软件应用程序时所需的一系列硬件、软件、工具和流程的集合。它是为了支持软件开发过程而构建的…

[算法]归并排序(C语言实现)

一、归并排序的定义 归并排序&#xff08;Merge sort&#xff09;是建立在归并操作上的一种有效的排序算法。该算法是采用分治法&#xff08;Divide and Conquer&#xff09;的一个非常典型的应用。 二、归并排序的算法原理 归并排序的算法可以用递归法和非递归法来实现…

Git基本原理讲解、常见命令、Git版本回退、Git抛弃本地分支拉取仓库最新分支、如何将本地文件推送至github、.gitignore文件的使用

借此机会写篇博客汇总一下自己去公司实习之后遇到的一些常见关于Git的操作。 Git基本认识 Git把数据看作是对小型文件系统的一组快照&#xff0c;每次提交更新&#xff0c;或在Git中保存项目状态时&#xff0c;Git主要对当时的全部文件制作一个快照并保存这个快照的索引。同时…

【ROS 最简单教程 002/300】ROS 环境安装 (虚拟机版): Noetic

&#x1f497; 有遇到安装问题可以留言呀 ~ 当时踩了挺多坑&#xff0c;能帮忙解决的我会尽力 &#xff01; 1. 安装操作系统环境 Linux ❄️ VM / VirtualBox Ubuntu20.04 &#x1f449; 保姆级图文安装教程指路&#xff0c;有经验的话 可以用如下资源自行安装 ITEMREFERENCE…

vue3实战(通用后台管理系统)问题总结

npm install less vue-router element-plus -s elementplus 路由引入组件第二种写法&#xff1a; 使用动态的import( )语法(推荐使用)&#xff08;路由懒加载&#xff09; component:()>import(路径)component:()>import(/views/Main.vue)打包之后的文件将会异常的大&a…

《昇思25天学习打卡营第25天|第28天》

今天是打卡的第二十八天&#xff0c;实践应用篇中的计算机视觉中Vision Transformer图像分类。 从Vision Transformer&#xff08;ViT&#xff09;简介开始了解&#xff0c;模型结构&#xff0c;模型特点&#xff0c;实验的环境准备和数据读取&#xff0c;模型解析&#xff08…

深入探索PHP框架:Symfony框架全面解析

1. 引言 在现代Web开发领域&#xff0c;PHP作为一种广泛使用的服务器端脚本语言&#xff0c;其框架的选择对于项目的成功至关重要。PHP框架不仅能够提高开发效率&#xff0c;还能确保代码的质量和可维护性。本文将深入探讨Symfony框架&#xff0c;这是一个功能强大且灵活的PHP…

Teamcenter RAC开发,创建Item的两种方式

1、如果描述不必填&#xff0c;采用胖客户端的创建方式 newItem itemType.create(newItemId, "", targetTypeComp.getTypeName(), item_name, // "test1", null, null2、如果描述必填&#xff0c;则需要采用SOA的创…

C++11中的右值引用以及移动构造等

目录 一、右值引用 1.左值引用和右值引用 2.左值引用与右值引用比较 3.右值引用使用场景和意义 1️⃣ 传返回值 2️⃣ STL中的应用 4.完美转发 模板中的&& 万能引用&#xff08;引用折叠&#xff09; 二、 新的类功能 1.默认成员函数 2.类成员变量初始化 3.…

线程池学习(一)

1.线程池有什么作用 降低资源消耗&#xff1a;通过池化技术重复利⽤已创建的线程&#xff0c;降低线程创建和销毁造成的损耗。 提⾼响应速度&#xff1a;任务到达时&#xff0c;⽆需等待线程创建即可⽴即执⾏。 提⾼线程的可管理性&#xff1a;线程是稀缺资源&#xff0c;如果…

ProxmoxPVE虚拟化平台--安装PVE虚拟机

Proxmox 虚拟机 Proxmox是一个基于Debian Linux和KVM的虚拟化平台&#xff0c;‌它提供了虚拟化的环境&#xff0c;‌允许用户在同一台物理机上运行多个虚拟机。‌Proxmox虚拟环境&#xff08;‌PVE&#xff09;‌是一个开源项目&#xff0c;‌由Proxmox Server Solutions Gmb…

Power Tower

Problem - D - Codeforces 牛客和codeforce都有 递归处理l,r&#xff0c;终点是lr && mod1 用扩展欧拉定理 // Problem: D. Power Tower // Contest: Codeforces - Codeforces Round 454 (Div. 1, based on Technocup 2018 Elimination Round 4) // URL: https://c…

【Socket 编程】应用层自定义协议与序列化

文章目录 再谈协议序列化和反序列化理解 read、write、recv、send 和 tcp 为什么支持全双工自定义协议网络计算器序列化和反序列化 再谈协议 协议就是约定&#xff0c;协议的内容就是约定好的某种结构化数据。比如&#xff0c;我们要实现一个网络版的计算器&#xff0c;客户端…

关于P2P(点对点)

P2P 是一种客户端与客户端之间&#xff0c;点对点连接的技术&#xff0c;在早前的客户端都是公网IP&#xff0c;没有NAT的情况下&#xff0c;P2P是较为容易实现的。 但现在的P2P&#xff0c;实现上面会略微有一些复杂&#xff1a;需要采取UDP打洞的技术&#xff0c;但UDP打出来…

asp.net mvc 三层架构开发商城系统需要前台页面代完善

一般会后端开发&#xff0c;都不太想写前台界面&#xff0c;这套系统做完本来想开源&#xff0c;需要前台界面&#xff0c;后台已开发&#xff0c;有需求的朋友&#xff0c;可以开发个前端界面完善一下&#xff0c;有的话可以私聊发给我啊

Redis(三)

1. java连接redis java提高连接redis的方式jedis. 我们需要遵循jedis协议。 引入依赖 <!--引入java连接redis的驱动--><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>4.3.1</version&g…