SpeechT5: Unified-Modal Encoder-Decoder Pre-training for Spoken Language Processing code

Abstract

本文提出了一种基于encoder-decoder结构的speech/text pre-training的方法,SpeechT5。SpeechT5包括一个共享的encoder-decoder结构,以及六种模态相关的prenet/postnet。为了align text和speech的表示,本文提出了一个交叉模态向量量化(cross-modal vector quantization method)的方法。大量的评测任务说明了SpeechT5的优越性,如语音转换,自动语音识别,语音合成,说话人识别。

Introduction

pre-trained models在很多人任务上能够带来显著的性能提升,如自然语言处理,图像识别,语音处理等任务。通过自监督预训练得到通用的表示,再用于下游任务似乎成为了新的范式。“Text-To-Text Transfer Transformer”(T5)利用了一个通用的text-to-text架构实现了多个NLP任务的最好效果,包括机器翻译,问答,情感分类等。T5的基本想法是将每个NLP任务描述为text-to-text问题,然后应用迁移学习,提升下游任务的性能。 在同一时期,自监督的语音表示学习也获得了很好的进展,如wav2vec2, APC, Hubert。另一类任务试图应用语音和语言的联合与训练提升口语的理解。然而大部分的工作与BERT相似,只有encoder结构,以及特定下游任务的模块。如何设计一个encoder-decoder结构的模型从而利用未标注的speech和text预训练帮助提取语音/文本的表示还没有人探索过。受启发于T5,语言处理任务可以刻画成speech/text to speech/text的任务,因此可以用相同的pre-trained模型支持很丰富的任务。如下图所示: 为了将文本和音频信息映射到统一的语义空间,SpeechT5将text和speech表示映射到一个共享的量化向量空间,随机地混合量化的隐式表达,使得显式地使得量化器学到交叉模态的信息。在不同的下游任务上得到了state-of-the-art效果。贡献:

统一的encoder-decoder架构解决text/speech问题交叉模态pre-training,学到text与speech之间潜在的对齐关系大量的下游任务实验验证SpeechT5的有效性和优越性

2. SpeechT5

2.1 Model Architecture

SpeechT5包含一个共享的encoder-decoder模块,和6个特定模态的pre/postnet,把不同的信号映射到一个统一的空间,共享的encoder-decoder建模了sequence-to-sequence的转换。

2.1.1 Input/Output Representations

语音作为输入时,输入为80-dim的mel,作为输出时,直接输出是mel,外接一个声码器,得到音频。 文本应用unigram语言模型split成tokens序列。

2.1.2 Encoder-Decoder

与transformer的原始paper结构一致,在self-attention应用了relative position embedding。

2.1.3 Speech Pre/Post Net

speech-encoder pre-net与speechdecoder pre-net有些不同。speech-encoder pre-net应用了两层卷积,下采样。speech-decoder pre-net则是3层全连接。为了支持多说话人的TTS和VC,说话人向量concat到speech-decoder pre-net。speech-decoder post network应用两层线性层预测log-mel 和stop token,接着5层一维卷积学习log-mel的卷积。

2.1.4 Text Pre/Post Net

text encoder pre-net和decoder pre/post networks共享参数,pre-net将token index映射到embedding vector,post-net将隐状态映射到token分布的后验概率。

2.2 Pre-training

应用大量的未标注的音频和文本语料可以先单模态训练,然后应用文本和音频的成对的数据进行联合训练。

2.2.1 Speech Learning

语音学习的目标是利用无标记的语音数据来学习一般的语音表示,用于语音理解和生成任务。因此SpeechT5训练encoder-decoder结构应用两个task:bidirectional masked prediction and sequence-to-sequence generation。

预测mask掉位置的kmeans类

L

m

l

m

s

=

t

M

log

p

f

(

z

t

X

^

,

t

)

\mathcal{L}_{m l m}^s=\sum_{t \in M} \log p_f\left(z_t \mid \hat{X}, t\right)

Lmlms​=∑t∈M​logpf​(zt​∣X^,t)计算sequence2sequence的mel loss,以及stop token的binary cross-entropy loss

L

b

c

e

s

\mathcal{L}_{b c e}^s

Lbces​

L

1

s

=

i

=

1

n

y

i

x

i

1

\mathcal{L}_1^s=\sum_{i=1}^n\left\|y_i-x_i\right\|_1

L1s​=∑i=1n​∥yi​−xi​∥1​

2.2.2 Text Learning

语言模块旨在提供上下文理解和生成。对于没有标注的文本,SpeechT5用masked span给文本加噪声,尝试恢复mask的文本以及原始的文本。两种style: BART-style,尝试恢复原始的文本,T5-style,尝试恢复mask掉的文本。

L

m

l

e

t

=

t

=

1

m

log

p

f

(

y

t

y

1

:

t

1

,

X

)

\mathcal{L}_{m l e}^t=\sum_{t=1}^m \log p_f\left(y_t \mid y_{1: t-1}, X\right)

Lmlet​=∑t=1m​logpf​(yt​∣y1:t−1​,X)

2.2.3 Joint Pre-training

上述方法都只用了单模态的数据,但是一些任务是跨模态的,如ASR/TTS。因此预训练中学得text和音频的对齐,将对下游任务有利。本文用量化的vector,即codebook作为speech representations 与 text representations的桥梁。

L

d

=

1

K

k

=

1

K

p

k

log

p

k

\mathcal{L}_d=\frac{1}{K} \sum_{k=1}^K p_k \log p_k

Ld​=K1​∑k=1K​pk​logpk​

L

=

L

m

l

m

s

+

L

1

s

+

L

bce 

s

+

L

m

l

e

t

+

L

d

\mathcal{L}=\mathcal{L}_{m l m}^s+\mathcal{L}_1^s+\mathcal{L}_{\text {bce }}^s+\mathcal{L}_{m l e}^t+\mathcal{L}_d

L=Lmlms​+L1s​+Lbce s​+Lmlet​+Ld​

2.3 Fine-tuning

用下游任务的loss fine-tuning。

3. Experiments

3.1 Dataset and Evaluation Metrics

无监督预训练用librispeech数据集。下游任务:ASR->Librispeech->WER, TTS->LibriTTS->WER, VC->CMU Arctic->MCD+WER, SID->VoxCeleb1->Accuracy

3.2 Implementation Details

具体见paper。

3.3 Main Results

3.3.1 VC

3.3.2 ASR

3.3.3 TTS

1.49% WER and 3.65 MOS; relative reduction of 13.37% in WER and an gain of 0.2 in MOS

3.3.4 SID

achieves the state-of-the-art performance of 90.97% accuracy

参考文章

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。