SPEECHTOKENIZER: UNIFIED SPEECH TOKENIZER FOR SPEECH LANGUAGE MODELS翻译

摘要

当前的语音大语言模型建立在离散语音表示的基础上,可分为语义token和声学token。然而,现有的语音token并不是专门为语音语言建模而设计的。为了评估语音token是否适合构建语音语言模型,我们建立了第一个基准 SLMTokBench。我们的结果表明,语义token和声学token都不是理想的选择。因此,我们提出了 SpeechTokenizer,一种用于语音大语言模型的统一语音tokenizer。SpeechTokenizer 采用带有残差矢量量化 (RVQ) 的编码器-解码器架构。通过统一语义和声学token,SpeechTokenizer 可以在不同的 RVQ 层上分层解开语音信息的不同方面。此外,我们利用 SpeechTokenizer 构建了一个统一语音语言模型 (USLM)。实验表明,SpeechTokenizer 在语音重建方面的表现与 EnCodec 相当,并在 SLMTokBench 基准上表现出色。此外,USLM 在零样本文本转语音任务中的表现优于 VALL-E。代码和模型可在https://github.com/ZhangXInFD/SpeechTokenizer/获得。

1.INTRODUCTION

在这里插入图片描述
  大语言模型在各种自然语言处理任务中都表现出色。这启发了大量构建语音语言模型的研究,这些研究在各种语音处理任务中取得了重大突破。这些研究的一个关键共同点是利用离散语音表示。当前的离散语音表示可以分为两类:语义token和声学token。语义token通常来自以MASK语言建模为训练目标的自监督预训练模型。语义token是通过对来自特定中间层的表示进行 k 均值聚类得出的,被描绘为具有一维结构的序列。声学token可以从神经音频编解码器中提取,以重建为训练目标。利用带有分层量化器的残差矢量量化 (RVQ) 进行离散化,声学token被表示为由两个维度组成的矩阵:时间步长和量化器。
  基于这两个语音token,语音语言模型有三种建模方法,如表 1 所示:i)语义语言模型使用语义token构建,并使用外部单元声码器进行语音合成。虽然它们可以捕获语义上准确的内容,但语音生成质量较差,并且会丢失声学细节。ii)声学语言模型基于声学token构建。以 VALL-E 为例,尽管实现了令人印象深刻的零样本文本转语音 (TTS) 功能,但由于声学token中的信息复杂,它仍然存在内容不准确等问题。iii)分层语音语言模型包括语义token语言模型和声学token语言模型,分别捕获内容信息和声学细节。这种结构在内容和语音质量方面都表现出良好的效果,但多阶段建模方法更复杂,导致错误累积和处理速度较慢等几个缺点。此外,语义token和声学token之间存在显著的信息冗余,这带来了不必要的建模复杂性。理想的语音语言模型不仅要准确地建模内容,还要生成多样化、高质量的语音,同时保持优雅简洁的架构。相应地,理想的语音token应满足以下两个关键特征:i)与文本的强对齐性;ii)有效保留语音信息。
  然而,现有的语音token并不是专门为语音语言建模而设计的,也没有探索它们是否适用于构建语音语言模型。为了解决这个问题,我们建立了语音语言模型token基准,以评估语音token是否适用于构建语音语言模型。我们的评估表明,语义token与文本的对齐程度很高,但会丢失语音中的一些信息,比如音色。声学token在有效保留语音信息方面表现出色,但与文本的对齐程度不高。基于这些观察,我们旨在通过统一语义和声学token来构建专门为语音语言模型设计的语音token。具体而言,我们可以在声学token的 RVQ 结构中进行信息解藕,使得第一个 RVQ 量化器生成包含类似于语义token的内容信息,而后续量化器补充剩余的副语言信息,如图 1 所示。
  基于上述动机,我们提出了 SpeechTokenizer,一种用于语音大语言模型的统一语音tokenizer。SpeechTokenizer 采用带残差矢量量化的编码器-解码器架构。通过统一的语义和声学token,SpeechTokenizer 在不同的 RVQ 层上分层解开语音信息的不同方面。通过使用语义teacher来指导第一个 RVQ 量化器,第一层token可以有效地捕获内容信息。借助残差结构,后续量化器可以补充剩余的副语言信息。在 SpeechTokenizer 的基础上,我们构建了一个由自回归和非自回归模型组成的统一语音语言模型。实验结果表明,SpeechTokenizer 在语音重建方面的表现与 EnCodec 相当,并在 SLMTokBench 基准上表现出色。USLM 在零样本文本转语音 (TTS) 任务中的表现明显优于 VALL-E。
  我们的贡献包括:

  • 我们提出了 SpeechTokenizer,它是专为语音大语言模型设计的,通过分层解开语音信息的不同方面来统一语义和声学token。
  • 我们建立了 SLMTokBench,这是第一个评估语音token是否适合构建语音语言模型的基准。
  • 我们基于 SpeechTokenizer 构建了一个统一的语音语言模型,该模型在零样本 TTS 任务上的表现优于 VALL-E。

2. SLMTOKBENCH: SPEECH LANGUAGE MODEL TOKEN BENCHMARK

为了构建强大的语音语言模型,离散语音表示应具备以下两个关键特征:i)与文本的强对齐性;ii)有效保留语音信息。在此前提下,我们建立了语音语言模型token基准(SLMTokBench)来评估语音token对于构建语音语言模型的适用性。

2.1 TEXT ALIGNMENT EVALUATION

我们通过估计语音token和文本之间的互信息来评估文本对齐的程度。符号表示为: X \textbf X X 表示离散语音表示; Y \textbf Y Y 表示文本; I ( X ; Y ) \mathcal I(\textbf X;\textbf Y) I(X;Y) 表示互信息;测试数据集表示为 D = { ( x i , y i ) } i = 1 N \mathcal D = \{(x_i, y_i)\}^N_{i=1} D={(xi,yi)}i=1N θ θ θ 表示下游模型。通过附录 A 中的推导,我们可以将 I ( X ; Y ) \mathcal I(\textbf X;\textbf Y) I(X;Y) 估计为:
I ^ ( X ; Y ) = 1 N 2 ∑ i = 1 N ∑ j = 1 N [ l o g   q θ ( y i ∣ x i ) − l o g   q θ ( y j ∣ x i ) ] \hat{\mathcal I}(\textbf X;\textbf Y)=\frac{1}{N^2}\sum^N_{i=1}\sum^N_{j=1}[log~q_{\theta}(y_i|x_i)-log~q_{\theta}(y_j|x_i)] I^(X;Y)=N21i=1Nj=1N[log qθ(yixi)log qθ(yjxi)]
其中 q θ ( Y ∣ X ) q_θ(\textbf Y|\textbf X) qθ(YX) 是变分分布,可以通过下游模型 θ θ θ 进行参数化。
  下游模型是一个普通的 2 层 1024 单元 BLSTM,通过字符 CTC 损失进行优化,并将语音token作为输入。具体而言,对于每个离散表示,我们首先建立一个嵌入矩阵,该矩阵可以随机初始化,也可以从离散化过程中获得的 k-means 质心矩阵或矢量量化码本中派生而来。我们使用嵌入矩阵嵌入离散表示并获得连续表示,然后将其输入到下游模型中。我们在 LibriSpeech train-clean100 子集上训练下游模型,并使用 dev-clean 子集来估计互信息。我们还计算了测试集上的字错误率 (WER)。对于下游模型训练,我们将训练设置配置为批次大小为 32、学习率为 1e-4,总共 200k 个全局步骤。

2.2 INFORMATION PRESERVATION EVALUATION

为了评估离散语音表示中语音信息的保存情况,我们将语音token转换回语音,并通过内容和音色的自动指标评估重新合成的语音。我们在 LibriSpeech 数据集上训练一个 unit-HiFIGAN,将 HuBERT 单元转换为波形。值得注意的是,为了避免其他信息的干扰,我们在训练期间不提供任何说话人信息。对于 Encodec 标记,我们使用 Encodec 解码器直接生成波形。通过使用 Whisper en-medium 模型转录重新合成的语音来计算 WER,可以评估内容保存情况。通过使用 WavLM-TDNN 计算合成语音和真实语音之间的说话人相似性来评估音色保存情况。我们从 LibriSpeech 测试集中随机抽取 300 个语音样本进行评估。

2.3 COMPARING SEMANTIC & ACOUSTIC TOKENS

在这里插入图片描述
  我们使用 HuBERT L9 单元表示语义token,使用 EnCodec code表示声学token。如表 3 所示,语义token与文本实现了较高的互信息,但其重新合成的语音具有较低的说话人相似度。声学token在重新合成的语音中实现了较低的 WER 和较高的说话人相似度,但与文本的互信息较低。

3.SPEECHTOKENIZER

3.1 MODEL STRUCTURE

在这里插入图片描述
  我们的模型建立在 RVQ-GAN 框架上,遵循与 SoundStream 和 EnCodec 相同的模式。如图 2 所示,我们的模型使用 EnCodec 的基于卷积的编码器-解码器网络,该网络使用选定的步幅因子执行时间降采样。值得注意的是,我们用两层 BiLSTM 替换了原来跟随 EnCodec 编码器中的卷积块的两层 LSTM,以增强语义建模能力。我们在附录 B 中对模型结构进行了消融研究。我们使用残差矢量量化 (RVQ) 量化编码器输出,这种方法可以使用不同的码本在初始量化步骤之后量化残差。模型结构的更多细节可以在附录 D 中找到。在训练期间,语义teacher提供语义表示来指导残差量化过程。

3.2 SEMANTIC DISTILLATION

为了实现跨不同 RVQ 层的各种信息的分层建模,我们对第一个量化器采用语义指导,使其能够捕获内容信息。利用残差结构,后续量化器可以补充剩余的副语言信息。
  在本研究中,我们使用 HuBERT 作为语义teacher,因为 HuBERT 被证明包含大量内容信息。我们引入了两种类型的蒸馏:连续表示蒸馏和伪标签预测。
  对于连续表示蒸馏,我们采用第 9 层 HuBERT 表示或所有 HuBERT 层的平均表示作为语义teacher。训练目标是在所有时间步长中最大化 RVQ 第一层输出与语义teacher表示之间维度级别的余弦相似度。正式来说,连续蒸馏损失为:
L d i s t i l l = − 1 D ∑ d = 1 D l o g σ ( c o s ( A Q 1 ( : , d ) , S ( : , d ) ) , \mathcal L_{distill}=-\frac{1}{D}\sum^D_{d=1}log\sigma(cos(\textbf A\textbf Q^{(:,d)}_1,\textbf S^{(:,d)}), Ldistill=D1d=1Dlogσ(cos(AQ1(:,d),S(:,d)),
其中 Q 1 \textbf Q_1 Q1 S \textbf S S 分别表示 RVQ 第一层和语义teacher表示的量化输出。 A \textbf A A 表示投影矩阵, D D D 表示语义teacher表示的维度。上标 ( : , d ) (:, d) (:,d) 表示包含维度 d d d 上所有时间步长的值的向量。 c o s ( ⋅ ) cos(·) cos() 表示余弦相似度, σ ( ⋅ ) σ(·) σ() 表示 sigmoid 激活。这种连续蒸馏损失函数偏离了常用的方法,后者根据student和teacher模型在同一时刻输出的表示来计算损失。附录 C 提供了这两种方法的比较分析。
  对于伪标签预测,我们采用 HuBERT 单元作为目标标签。训练目标构造如下:
L d i s t i l l = − 1 T ∑ t = 1 T u t l o g ( S o f t m a x ( A q 1 t ) ) \mathcal L_{distill}=-\frac{1}{T}\sum^T_{t=1}\textbf u^tlog(Softmax(\textbf A\textbf q^t_1)) Ldistill=T1t=1Tutlog(Softmax(Aq1t))
其中 q 1 t \textbf q^t_1 q1t u t \textbf u^t ut 分别表示第一个 VQ 层和 HuBERT 单元在时刻 t t t 的量化输出。 T T T 表示时间步数, A \textbf A A 是投影矩阵。

3.3 TRAINING OBJECTIVE

我们的训练方法包括重建任务和语义蒸馏任务。在重建任务中,我们采用 GAN 目标,优化重建项、判别损失项和 RVQ 承诺损失的组合。在语义蒸馏任务中,训练目标涉及语义蒸馏损失项。在下文中, x \textbf x x 表示语音信号, x ^ \hat {\textbf x} x^ 表示由神经网络重建的信号。
  Reconstruction Loss。重构损失包括时域损失和频域损失。对于时域,我们最小化 x \textbf x x x ^ \hat {\textbf x} x^ 之间的 L1 距离,即 L t = ∣ ∣ x − x ^ ∣ ∣ 1 \mathcal L_t =||\textbf x−\hat{\textbf x}||_1 Lt=∣∣xx^1。对于频域,我们使用几个时间尺度在梅尔谱图上线性组合 L1 和 L2 损失。形式上, L f = ∑ i ∈ e ∣ ∣ S i ( x ) − S i ( x ^ ) ∣ 1 + ∣ ∣ S i ( x ) − S i ( x ^ ) ∣ ∣ 2 \mathcal L_f=\sum_{i∈e}||\mathcal S_i(\textbf x)−\mathcal S_i(\hat{\textbf x})|_1 +||\mathcal S_i(\textbf x)− S_i(\hat{\textbf x})||_2 Lf=ie∣∣Si(x)Si(x^)1+∣∣Si(x)Si(x^)2,其中 S i \mathcal S_i Si 是使用窗口大小为 2 i 2^i 2i 且跳跃长度为 2 i / 4 2^i/4 2i/4 的归一化 STFT 的 64 维梅尔谱图, e = 5 , ⋅ ⋅ ⋅ , 11 e = 5,···,11 e=5,⋅⋅⋅,11 是尺度集。
  Discriminative Loss。我们使用与 HiFi-Codec 相同的判别器,该判别器由三个判别器组成:基于多尺度 STFT (MS-STFT) 的判别器;多周期判别器 (MPD) 和多尺度判别器 (MSD)。有关判别器的更多详细信息,请参见附录 D。对抗损失用于提升感知质量,它被定义为判别器logits的铰链损失,在多个判别器和时间上取平均值。令 K K K 表示判别器的数量,生成器的对抗损失 L g \mathcal L_g Lg构造如下, L g = 1 K ∑ k = 1 K m a x ( 1 − D k ( x ^ ) , 0 ) \mathcal L_g =\frac{1}{K}\sum^K_{k=1} max(1 − D_k(\hat{\textbf x}), 0) Lg=K1k=1Kmax(1Dk(x^),0)。对于判别器 L D \mathcal L_D LD 则定义为:
L D = 1 K ∑ k = 1 K m a x ( 1 − D k ( x ) , 0 ) + m a x ( 1 + D k ( x ^ ) , 0 ) , \mathcal L_D=\frac{1}{K}\sum^K_{k=1} max(1 − D_k(\textbf x), 0)+max(1+D_k(\hat {\textbf x}),0), LD=K1k=1Kmax(1Dk(x),0)+max(1+Dk(x^),0),
  此外,生成器的特征匹配损失计算如下:
L f e a t = 1 K L ∑ k = 1 K ∑ l = 1 L ∣ ∣ D k l ( x ) − D k l ( x ^ ) ∣ ∣ 1 m e a n ( ∣ ∣ D k l ( x ) ∣ ∣ 1 ) , \mathcal L_{feat}=\frac{1}{KL}\sum^K_{k=1}\sum^L_{l=1}\frac{||D^l_k(x)-D^l_k(\hat{\textbf x})||_1}{mean(||D^l_k(\textbf x)||_1)}, Lfeat=KL1k=1Kl=1Lmean(∣∣Dkl(x)1)∣∣Dkl(x)Dkl(x^)1,
其中均值是在所有维度上计算的, L L L 是判断器的层数。
在这里插入图片描述

3.4 UNIFIED SPEECH LANGUAGE MODEL

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值