【Pre-train】SpeechT5

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模型支持很丰富的任务。如下图所示:
【Pre-train】SpeechT5_第1张图片
为了将文本和音频信息映射到统一的语义空间,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的转换。
【Pre-train】SpeechT5_第2张图片

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=tMlogpf(ztX^,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=1nyixi1

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=1mlogpf(yty1:t1,X)

2.2.3 Joint Pre-training

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

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=K1k=1Kpklogpk
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

【Pre-train】SpeechT5_第4张图片

3.3.2 ASR

【Pre-train】SpeechT5_第5张图片

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

你可能感兴趣的:(TTS论文阅读,ASR论文阅读,语音识别,自然语言处理,人工智能)