尽管复杂的声学和语言模型构成了现代ASR系统的主要部分,但它们的表现高度依赖于大量准确标注的语音数据集的获取。创建此类数据集成本高昂且耗时,特别是在特定方面或使用较少语言时。这种数据瓶颈促使人们采用无监督和半监督学习方法,使我们能够使用大量现成的未标注音频数据。ASR中的数据难题考虑一下每天产生的音频数据的庞大数量:播客、视频通话、广播、个人录音。这些数据大部分缺少相应的文本转录。传统的ASR监督学习方法无法直接使用这些未标注数据。无监督和半监督方法弥补了这一不足,使模型能够直接从音频中学习,明显提升了表现,特别是在资源较少的情况下。无监督预训练:仅从音频中学习无监督预训练侧重于学习有意义的表示,直接从原始音频波形或派生特征中获取,无需任何转录。核心思想是仅使用未标注音频,针对一项预设任务来训练一个强大的神经网络(通常是Transformer或CNN/Transformer混合体)。一旦预训练完成,该网络,特别是其作为特征提取器的较低层,可以在小得多的标注数据集上进行微调,以完成实际的ASR任务(例如,预测字符或音素)。常见的预训练策略包括:对比学习: 像对比预测编码(CPC)这样的方法训练模型来区分真实的未来音频片段与随机采样的负样本片段,在给定过去上下文的情况下。这使得模型必须学习能够捕捉语音信号时序关联和基本特点的表示。目标函数通常旨在最大化上下文和未来片段之间的互信息。掩码预测: 受NLP中BERT的启发,像wav2vec 2.0和HuBERT这样的模型对语音预训练进行了改进。wav2vec 2.0: 该模型首先使用矢量量化模块将原始音频波形量化为一系列离散的潜在语音单元。然后,它掩盖输入特征序列(由CNN从原始音频中获得)的一部分,并训练一个Transformer网络来预测与掩盖区域对应的量化潜在单元。使用对比损失来识别干扰项中的正确量化单元。HuBERT(隐藏单元BERT): HuBERT通过对离线生成的目标标签执行掩码预测来简化此过程,这些标签通常通过对现有声学模型(如基于MFCC的k均值聚类或HuBERT自身早期迭代)的特征进行聚类获得。它掩盖输入特征并预测掩盖帧的聚类归属。这种迭代优化过程通常会带来高质量的表示。digraph G { rankdir=LR; node [shape=box, style=filled, fontname="sans-serif", fillcolor="#a5d8ff"]; edge [fontname="sans-serif"]; subgraph cluster_pretrain { label = "无监督预训练阶段"; bgcolor="#e9ecef"; style=filled; UnlabeledAudio [label="大量未标注\n音频数据集", shape=cylinder, fillcolor="#ffd8a8"]; PretrainModel [label="语音模型\n(例如,wav2vec 2.0, HuBERT)", fillcolor="#bac8ff"]; PretextTask [label="预设任务\n(掩码预测,\n对比损失)", fillcolor="#ffc9c9"]; UnlabeledAudio -> PretrainModel -> PretextTask; } subgraph cluster_finetune { label = "监督微调阶段"; bgcolor="#e9ecef"; style=filled; LabeledAudio [label="少量标注\n音频 + 文本数据集", shape=cylinder, fillcolor="#b2f2bb"]; FinetuneModel [label="微调后的ASR模型\n(从预训练模型初始化)", fillcolor="#d0bfff"]; ASRObjective [label="ASR目标\n(例如,CTC损失)", fillcolor="#fcc2d7"]; LabeledAudio -> FinetuneModel -> ASRObjective; } PretrainModel -> FinetuneModel [label="初始化权重", style=dashed, color="#495057"]; FinetuneModel -> Output [label="转录", shape=note, fillcolor="#ced4da"]; }ASR中无监督预训练后接监督微调的流程。预训练的主要益处是模型能从多种音频数据中学习通用特征。微调时,即使只有有限的标注样本,它也能迅速适应并获得明显更好的准确性和泛化能力,与仅在小量标注集上从头开始训练相比。半监督学习:结合标注和未标注数据半监督学习方法在ASR模型训练或适应过程中,将未标注数据直接与标注数据结合使用。自训练(伪标注): 这是一种普遍且有效的迭代方法:步骤1: 使用可用的标注数据 $(X_L, Y_L)$ 训练一个初始ASR模型。步骤2: 使用该模型为未标注音频数据 $X_U$ 生成转录(伪标签 $\hat{Y}_U$)。步骤3: 根据一些置信度衡量(例如,预测概率、束搜索分数方差)过滤伪标注数据 $(X_U, \hat{Y}_U)$。只保留高置信度的对。步骤4: 将原始标注数据与高置信度伪标注数据结合,并重新训练ASR模型。步骤5: 重复步骤2-4数次。尽管强大,自训练需要谨慎处理。嘈杂或不正确的伪标签可能导致确认偏误,使模型强化自身的错误。置信度估计和过滤策略是重要的组成部分。通常,步骤1从一个强大的预训练模型(如上所述)开始会带来最佳结果。一致性正则化: 这些方法在损失函数中增加了一个正则化项,鼓励模型为相同未标注输入的扰动版本生成一致的预测。例如,您可以将一个未标注音频片段和略微增强的版本(例如,添加噪声或应用SpecAugment)输入模型,并惩罚它们输出分布的差异。这促使模型学习对微小、不相关输入变化不变的表示。实际考量数据规模: 无监督预训练通常需要非常大量的未标注音频(数千或数万小时)才能发挥最大效用。半监督方法可以从较少量的未标注数据中受益,但仍需谨慎实施。计算资源: 预训练wav2vec 2.0或HuBERT等模型对计算要求较高,通常需要多GPU配置以及数天或数周的训练时间。幸运的是,许多预训练模型检查点可通过工具包公开获取。工具包和框架: Hugging Face transformers、NVIDIA NeMo、ESPnet和Fairseq等库提供了wav2vec 2.0和HuBERT等模型的实现和预训练权重,以及微调和有时自训练流程的方案。这大大降低了使用这些高级方法的门槛。{"data": [{"x": ["仅监督(10小时)", "仅监督(100小时)", "预训练 + 微调(10小时)", "预训练 + 微调(100小时)", "自训练(10小时标注 + 1000小时未标注)"], "y": [35.2, 15.8, 12.5, 8.1, 10.2], "type": "bar", "marker": {"color": ["#ffc9c9", "#ff8787", "#a5d8ff", "#4dabf7", "#96f2d7"]}}], "layout": {"title": {"text": "未标注数据对WER (%) 提升的示例"}, "xaxis": {"title": {"text": "训练情境"}}, "yaxis": {"title": {"text": "词错误率(WER %)"}, "range": [0, 40]}, "margin": {"l": 60, "r": 20, "t": 40, "b": 120}}}词错误率(WER)示例,显示了使用未标注数据进行预训练和自训练如何能够大幅提高ASR的表现,与仅使用有限标注数据相比。WER越低越好。(数值为示意性)。通过有效利用预训练或半监督方法中的未标注音频,我们能够构建更准确的ASR系统,克服了转录数据可得性带来的限制,并推动了语音识别在不同语言和方面的表现进步。这些方法通常是先进ASR流程中的重要组成部分。