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

news2024/11/18 12:24:48
英文名称: 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.coloradmin.cn/o/1955585.html

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

相关文章

shell-awk命令详解

目录 一.概述 二.工作原理 三.工作流程 1.运行模式 2.运行流程 四.基本语法 1.命令格式 2.常用变量  五.变量类型 1.内建变量 2.内置变量 3.BEGIN END运算  4.awk高级用法 5.awk if语句 6.BEGIN END循环 一.概述 AWK是一种处理文本文件的语言,是一…

深入分析 Android ContentProvider (六)

文章目录 深入分析 Android ContentProvider (六)ContentProvider 的性能优化和实践案例(续)1. 性能优化技巧(续)1.6. 使用批量插入优化性能示例:批量插入实现 1.7. 使用 Projections 优化查询示例:使用 Pr…

Webpack 从入门到精通

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 一、Webpack 简介 二、Webpack 的核心概念 三、Webpack 的安装与配置 安装 Node.js 安装 Webpack 初始…

【Linux C | 网络编程】进程池退出的实现详解(五)

上一篇中讲解了在进程池文件传输的过程如何实现零拷贝,具体的方法包括使用mmap,sendfile,splice等等。 【Linux C | 网络编程】进程池零拷贝传输的实现详解(四) 这篇内容主要讲解进程池如何退出。 1.进程池的简单退…

超越基础功能:项目进度管理工具深度评测

国内外主流的10款项目进度管理网站对比:PingCode、Worktile、滴答清单(TickTick)、Todoist、NarTick、Teambition、Monday.com、Asana、ClickUp、Trello。 在选择合适的项目进度管理工具时,许多项目经理面临着如何找到既能满足团队…

二十二、作业

目录 1.求代码结果 2.求代码结果 3.使用指针打印数组内容 4.字符串逆序 5.计算求和 6.打印水仙花数 7.打印菱形 8.喝汽水问题 1.求代码结果 输出为00345 2.求代码结果 任何一个变量/表达式,都有2个属性,值属性和类型属性 int a 3;…

Python及Jupyter-Notebook安装

来源: “码农不会写诗”公众号 链接:Python及Jupyter-Notebook安装 文章目录 01 Python安装1.1 下载安装包1.2 双击安装包,开始安装1.3 选择安装配置1.4 选择需要安装的Optional Feature,点击Next1.5 选择需要安装的Advanced Feat…

matplotlib的科研绘图辅助

matplotlib的科研绘图辅助 趁着暑假,与和鲸科技合作了一个python绘图的教程,作为暑期夏令营的一小部分,主要内容是介绍如何使用matplotlib、pandas、seaborn和plotnine进行医学科研绘图,感兴趣的可以通过如下地址进行访问&#x…

Unity XR Interaction Toolkit设置或监听手柄按键事件(三)

提示:文章有错误的地方,还望诸位大神不吝指教! 文章目录 前言一、XRI Default Input Actions1.导入官方案例2.设置控制器绑定,如手柄、主/辅助按钮、操纵杆等1.要设置控制器绑定,如左右手 手柄、主/辅助按钮、操纵杆等…

添加sidecar容器并输出日志

添加一个sidecar容器(使用busybox 镜像)到已有的pod 11-factor-app中,确保sidecar容器能够输出/var/log/11-factor-app.log的信息,使用volume挂载/var/log目录,确保sidecar能访问11-factor-app.log 文件 # 准备工作 创建一个 pod 11-factor-appapiVersion: v1 kind: Pod metada…

【研路导航】保研英语面试高分攻略,助你一路过关斩将

面试攻略之 千锤百炼英语口语 写在前面 在保研面试中,英语口语往往是让许多同学感到头疼的一部分。如何在面试中展现出自信和流利的英语表达能力,是我们今天要探讨的主题。以下是一些有效的英语口语练习方法和常见题型解析,帮助你在保研面试…

GUI - Tkinter - MVC

【python】 property属性详解_python property-CSDN博客Tkinter MVC (pythontutorial.net)GUI架构演进之MVC(一) - frydsh - 博客园 (cnblogs.com)MVC 模式 | 菜鸟教程 (runoob.com)MVC 架构详解 (freecodecamp.org)Python之MVC - chenbiao - SegmentFau…

灵活数据流处理:NeuronEX 支持 JavaScript 自定义函数

随着数据要素逐渐成为帮助工业企业提升智能化水平的重要助力,如何灵活采集和处理工业数据,并满足用户定制化的数据需求,成为企业数字化建设的焦点之一。 NeuronEX 是一款专为工业场景设计的边缘网关软件,具备工业设备数据采集、工…

@JSONField(format = “yyyyMMddHH“)的作用和使用

JySellerItqrdDataDO对象中的字段为: private Date crdat; 2.数据库中的相应字段为: crdat datetime DEFAULT NULL COMMENT 创建时间,2. 打印出的结果为: “crdat”:“2024072718” 年月日时分秒 3. 可以调整format的格式 4. 这样就把Date类…

信息搜集——小米

小米 主域名:www.miui.com 备案网站:27个 备案APP:21个 备案小程序:13个 备案公众号:23个 备案微博:43个 IP 域名 端口 状态码 Ping 网址 多地ping 网站名称 网址 域名 网站备案/许可证号 公 司名…

手撕数据结构---------顺序表和链表

1.线性表 线性表(linear list)是n个具有相同特性的数据元素的有限序列。 线性表是⼀种在实际中⼴泛使 ⽤的数据结构,常⻅的线性表:顺序表、链表、栈、队列、字符串… 线性表在逻辑上是线性结构,也就说是连续的⼀条直…

java实战项目--拼图小游戏(附带全套源代码)

个人主页VON 所属专栏java实战项目游戏参考黑马程序员 一、效果展示 二、功能介绍 游戏中所有的图片以及代码均已打包,玩家直接安装游戏即可,不用idea也可以畅玩。 游戏功能比较单一,只有简单的拼图功能。 a:展示原图重新游戏&a…

初涉JVM

JVM 字节码、类的生命周期、内存区域、垃圾回收 JVM主要功能: 解释运行(翻译字节码)内存管理(GC)即使编译(Just - In - Time, JIT) 将短时间内常使用到的字节码翻译成机器码存储在内…

whaler_通过镜像导出dockerfile

1、Whaler简介 Whaler:从镜像导出Dockerfile,whaler英文释义捕鲸船。 2、下载安装 # wget -cO /usr/local/bin/whaler https://github.com/P3GLEG/Whaler/releases/download/1.0/Whaler_linux_amd64 3、赋予可执行权限 [rootlocalhost ~]# chmod x /usr/local/…

Android OTA刷机包制作学习笔记

前言 OTA是一个再常见不过的需求,Android提供了recovery用于完成相关操作。 常规OTA包制作有两种: 有项目的完整AOSP源码,可以在成构建产物zip包后利用官方脚本制作。具体参阅:Office OTA假设你没有1的条件那么可以利用官方非A/…