【S2ST】UnitY: Two-pass Direct Speech-to-speech Translation with Discrete Units

Abstract

Direct S2ST 由于简单的pipeline,从而实现了更快的推理速度,本文介绍了UnitY, 一个两阶段的方法。首先产生文本的表示,然后预测音频的离散序列。应用了subword prediction在第一阶段的decoder,新颖的第二阶段的decoder结构设计和搜索策略,从而实现了模型性能的提升。为了利用大量未标记的文本数据,本文基于自监督去噪自动编码任务预训练第一阶段文本解码器。在各种数据尺度上对基准数据集的实验评估表明,UnitY 比speech-to-unit翻译模型高出 2.5-4.2 ASR-BLEU,解码速度提高了 2.83×。我们表明,即使在第二阶段解码预测频谱图时,所提出的方法也能提高性能。然而,与这种情况相比,预测离散单元实现了 2.51× 的解码加速。

Introduction

传统的S2ST是级联的系统:ASR+MT+TTS。随着sequence-to-sequence模型的出现,可以实现直接的S2ST,相比级联系统,拥有简洁的pipeline和低延时。但是由于数据的稀缺,direct S2ST模型的效果离级联系统还有差距。在S2TT领域,数据稀缺可以通过leveraging pre-training, multi-task learning, pseudo labeling和knowledge distillation缓解。因此,直接 S2TT 模型的翻译质量接近级联 S2TT 模型的翻译质量。这些措施在S2ST任务中也取得了不错的效果。
最近的工作提出建模Hubert离散的单元,而不是连续的语音表示。S2UT缩短了target的长度,提高了训练和推理的速度。离散的unit可以接声码器,生成音频。另一方面,Translatotron2 明确地将目标表示分解为语言和声学表示。前者预测音素,后者以连续的linguistic 表示合成target的谱。
本文提出的方法,同时借鉴了S2UT model和Translatotron2的优点。与Translatotron2不同的是,UnitY建模subwords而不是phoneme,同时建模离散的声学单元。为了获得更好的翻译质量和解码效率,UnitY用一个比较深的text decoder, 一个浅层的unit decoder。我们进一步在两个解码器之间引入了一个文本到文本单元 (T2U) 编码器,以弥合文本和声学表示之间的差距。随着大规模预训练的成功,我们利用未标记的文本有效地预训练具有多语言 BART (mBART) 的first pass text encoder, 应用subword.
大量的实验表明UnitY的优越性,翻译质量:UnitY实现了4.2, 3.7,2.5的asr BLEU的提升(在the Fisher Es→En,CVSS-C, multi-domain En↔Es),其次,UnitY 与S2UT 和改进后的Translatotron2 的模型上实现了 2.83× 和 2.51× 的解码加速。

UnitY

X表示source speech输入,Y = (y1, . . . , yM ) and U = (u1, . . . , uL)表示相应的文本翻译和离散序列,注意U中不包含duration信息,以防导致坍塌。

Architecture

包括4个部分,speech encoder, first pass text encoder, text-to-unit encoder和second pass decoder. 相比tranlatotron2 我们做了5个结构的调整,1)生成subwords而不是phoneme,2)生成离散单元,而不是连续的谱,从而绕过duration的建模3)将BLSTM替换成Transformer,4)引入T2U模块,5)讲更多的模型容量分配给first-pass text decoder.

  • Speech encoder
    conformer based wav2vec/w2v-BERT
  • First pass text encoder
    基于speech encoder的输出,生成target speech的subwords,Loss如图
    在这里插入图片描述
    由于cross attention的作用,认为 D t e x t D^{text} Dtext除了包含内容信息以外,还包含了声学信息。用subwords替换phoneme有5个好处。
    1)序列长度变短了,训练和推理效率增加了
    2)使用大的词表,提升了翻译质量
    3)文本的输出帮助用户理解翻译内容
    4)可以扩展到更多的target language,不需要准备分别的G2P
    5)能直接产生可读的文本,而不需要经过WFST后处理
  • Text-to-unit encoder
    不改变序列长度,负责建模text->unit
  • Second pass decoder
    基于Text-to-unit encoder的输出,产生unit tokens, 后面再接unit vocoder.
    训练的Loss总的下来:
    在这里插入图片描述
    在这里插入图片描述

Text decoder pre-training

Speech encoder用wav2vec2.0, unit decoder 用mBART初始化。为了充分利用未标记的文本数据,我们使用未标记的文本数据预训练的基于文本的 mBART (t-mBART) 初始化 UnitY 的text decoder, unit decoder 用 mBART 初始化。

Search algorithm

两个beam search在first pass decoder 和 second pass decoder。第一阶段的beam size大一点会比较好。

Deep-shallow two-pass decoders

分配给First pass decoder更多的参数,second pass decoder更少的参数,这样的分配提升了翻译质量,和推理速度(因为第一阶段预测的序列比较短)。

Experimental setting

Data

在这里插入图片描述

Pre-processing

Speech

Target speech 22k, extract unit token in 16k, 应用了句子级别的cmvn

Discrete units

English用librispeech训的Hubert 100类, 其他的语言用multilingual hubert抽100类

Text

小写文本数据并删除除撇号之外的所有标点符号

Data filtering

去掉过度生成的样本

Pre-training

在这里插入图片描述

Baseline

两个级联 S2ST 系统和四个直接 S2ST 系统。
级联:ASR->MT->TTS, S2TT->TTS
直接:
在这里插入图片描述

Architecture
见附录G

Evaluation
ASR-BLEU

Experimental results
在这里插入图片描述

  • 21
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Unity中,代码是用来实现游戏逻辑和功能的关键部分。Unity支持使用C#或UnityScript(一种基于JavaScript的脚本语言)编写代码。 在Unity中,代码通常被组织在脚本文件中,这些脚本文件可以附加到游戏对象上。当游戏运行时,这些脚本将被执行,并且可以通过调用函数、访问变量等方式来实现游戏的各种功能。 以下是一些常见的Unity代码概念和功能: 1. MonoBehaviour:MonoBehaviour是Unity中所有脚本的基类,它提供了一些常用的函数,如Start()、Update()等。通过继承MonoBehaviour类,可以创建自定义的脚本,并将其附加到游戏对象上。 2. GameObject:GameObject是Unity中的基本对象,它代表了游戏场景中的一个实体。可以通过代码创建、修改和销毁游戏对象,以及访问其属性和组件。 3. 组件(Component):组件是附加到游戏对象上的模块化功能单元。例如,Transform组件用于控制游戏对象的位置、旋转和缩放;Rigidbody组件用于模拟物理行为;MeshRenderer组件用于渲染3D模型等。可以通过代码访问和操作组件。 4. 事件(Event):Unity中的事件系统允许在特定条件下触发代码。例如,当玩家点击按钮时,可以触发一个OnClick事件,然后执行相应的代码逻辑。 5. 协程(Coroutine):协程是一种特殊的函数,可以在一段时间内暂停和恢复执行。协程常用于处理复杂的异步操作,如延迟执行、动画序列等。 6. 资源管理:Unity提供了资源管理系统,可以加载、实例化和销毁各种资源,如模型、纹理、声音等。通过代码可以访问和操作这些资源。 关于Unity代码的更多详细信息和示例,请参考Unity官方文档和教程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值