论文阅读_字节的语音生成模型_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 的两项语音编辑任务:内容编辑和语速编辑。

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

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

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

  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是利用Edge TTS写一个离线TTS语音的程序的步骤: 1. 安装 Edge TTS 首先需要安装 Edge TTS,可以通过以下命令在终端中进行安装: ``` pip install edge-tts ``` 2. 导入 Edge TTS 在 Python 代码中,需要导入 Edge TTS 库: ```python from edge_tts import EdgeTTS ``` 3. 初始化 Edge TTS 在使用 Edge TTS 之前,需要先进行初始化。初始化时需要指定语音模型的路径和配置文件的路径。例如: ```python tts = EdgeTTS("path/to/model", "path/to/config") ``` 其中,`"path/to/model"` 是语音模型的路径,`"path/to/config"` 是配置文件的路径。 4. 将文本转换为语音 使用 Edge TTS 将文本转换为语音的方法是 `synthesize(text)`。例如: ```python audio = tts.synthesize("Hello, world!") ``` 其中,`"Hello, world!"` 是要转换为语音的文本。 5. 保存语音文件 可以使用 Python 的 `wave` 库将语音文件保存为 WAV 格式。例如: ```python import wave with wave.open("output.wav", "wb") as f: f.setnchannels(1) f.setsampwidth(2) f.setframerate(24000) f.writeframes(audio) ``` 其中,`"output.wav"` 是保存的文件名,`"wb"` 表示以二进制写入模式打开文件;`setnchannels(1)` 表示单声道,`setsampwidth(2)` 表示采样位宽为 2 字节,`setframerate(24000)` 表示采样率为 24000 Hz。 完整的代码如下: ```python from edge_tts import EdgeTTS import wave tts = EdgeTTS("path/to/model", "path/to/config") audio = tts.synthesize("Hello, world!") with wave.open("output.wav", "wb") as f: f.setnchannels(1) f.setsampwidth(2) f.setframerate(24000) f.writeframes(audio) ``` 注意:在使用 Edge TTS 进行离线语音合成时,需要使用较高配置的硬件。如果硬件配置较低,可能会出现卡顿等问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值