
Transformers 中的 XLS-R 模型全解析从 wav2vec 2.0 架构到跨语言语音识别实战【免费下载链接】transformers Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and training.项目地址: https://gitcode.com/GitHub_Trending/tra/transformersXLS-R 是 Meta AI 提出的基于 wav2vec 2.0 的大规模自监督跨语言语音表示学习模型在 Transformers 仓库中通过复用 Wav2Vec2 的完整架构与 API 对外提供。本文以官方模型文档为核心结合 xls_r.md 及仓库源码modeling_wav2vec2.py、测试用例等系统讲解 XLS-R 的论文背景、与 Wav2Vec2 的继承关系、CTC 解码要点以及可直接运行的语音识别代码。读完本文你将掌握如何加载 XLS-R 权重、正确预处理 16kHz 原始波形并通过Wav2Vec2CTCTokenizer/Wav2Vec2Processor完成从音频到文本的完整推理链路。认识 XLS-R大规模跨语言语音表示学习论文背景与发布时间线根据 xls_r.mdXLS-R 模型发表于论文XLS-R: Self-supervised Cross-lingual Speech Representation Learning at Scale作者包括 Arun Babu、Changhan Wang、Andros Tjandra、Kushal Lakhotia、Qiantong Xu、Naman Goyal、Kritika Singh、Patrick von Platen、Yatharth Saraf、Juan Pino、Alexei Baevski、Alexis Conneau、Michael Auli。该模型在 Hugging Face Papers 上的发布记录为2021-11-17并于2023-06-20正式合入 Hugging Face Transformers 仓库。需要说明的是XLS-R 在仓库中没有独立的xls_r模型目录而是作为 Wav2Vec2 体系中的官方权重系列存在。从文档与代码的结构看可以推断其 API 完全建立在 Wav2Vec2 的实现之上这正是理解 XLS-R 使用方式的钥匙。论文声称的核心规模与效果事实来自论文摘要论文摘要给出了 XLS-R 的核心数据这些是理解该模型定位的第一手材料参数量预训练模型规模最大达 2B 参数训练数据在约 50 万小时、覆盖128 种语言的公开语音音频上训练公开数据量比当时已知的最大同类工作高出一个数量级评测覆盖面涵盖多种任务、领域、数据规模和语言既包括高资源语言也包括低资源语言主要结果在 CoVoST-2 语音翻译基准上面向英语的 21 个翻译方向上平均提升7.4 BLEU在语音识别任务上相比 BABEL、MLS、CommonVoice 与 VoxPopuli 上的已知最优工作平均相对错误率降低14%–34%在 VoxLingua107 语种识别上取得新的最优结果论文还发现在足够大的模型规模下跨语言预训练在将英语语音翻译成其他语言这一通常利于单语预训练的场景中也能胜过纯英语预训练。说明以上量化数据均引自论文摘要xls_r.md 中完整转载作为研究背景呈现不属于本文对仓库实现的评价。在 Hugging Face Hub 上可以通过标签xls_r检索到与该论文相关的全部官方与社区权重这些权重与官方 fairseq 原始实现一一对应可在 fairseq 的 wav2vec 目录找到原始训练代码该链接为论文中给出的原始实现出处此处仅作背景陈述。架构继承关系XLS-R Wav2Vec2 架构 跨语言预训练权重文档在 Usage tips 之后的 Tip 提示框中明确给出了一句关键结论XLS-R 的架构基于 Wav2Vec2 模型其 API 参考请见 Wav2Vec2 的文档页面。这句话意味着你不需要学习一套新的 API 就能使用 XLS-R。加载权重、前向推理、CTC 解码、接入pipeline乃至下游微调全部走 wav2vec2.md 中记录的既有路径。XLS-R 与 Wav2Vec2 的关系可以类比为同一个神经网络骨架、不同数据与规模训练出的权重。从源码看这一点体现得尤为直接仓库中 XLS-R 的加载、推理、导出等能力全部复用src/transformers/models/wav2vec2/目录下的实现包括configuration_wav2vec2.py网络结构超参特征编码器卷积层维度、Transformer 层数、注意力头数、激活函数等feature_extraction_wav2vec2.py把原始波形归一化并切分为帧特征tokenization_wav2vec2.py提供 CTC 解码用的Wav2Vec2CTCTokenizer等processing_wav2vec2.py将特征提取器与分词器组合成统一的Wav2Vec2Processormodeling_wav2vec2.py全部神经网络层与任务头实现。从源码结构看 XLS-R 背后的组件在 modeling_wav2vec2.py 中XLS-R 继承的完整组件链条清晰可见主要包括特征前端Wav2Vec2FeatureEncoder多层卷积下采样、Wav2Vec2FeatureProjection、Wav2Vec2PositionalConvEmbeddingTransformer 编码器Wav2Vec2Encoder、Wav2Vec2EncoderLayer、Wav2Vec2Attention、Wav2Vec2FeedForward并提供StableLayerNorm变体自监督预训练组件Wav2Vec2GumbelVectorQuantizerGumbel 量化器对应论文中的 product quantization 与 diversity loss、Wav2Vec2ForPreTraining下游适配层Wav2Vec2Adapter/Wav2Vec2AttnAdapterLayer可选的轻量任务适配器各类预训练入口Wav2Vec2PreTrainedModel作为基类。任务头方面文档中特别强调 XLS-R基于 CTC 训练这正是语音识别场景下最常用的入口 Wav2Vec2ForCTC。同文件还提供了 Wav2Vec2ForSequenceClassification、Wav2Vec2ForAudioFrameClassification、Wav2Vec2ForXVector 等任务头——它们同样适用于从 XLS-R 预训练权重出发的语种识别、说话人验证等下游任务。使用要点输入波形与 CTC 解码xls_r.md 的 Usage tips 部分给出了两条必须遵守的使用约束它们是所有 XLS-R 代码示例的出发点XLS-R 是语音模型直接接受原始语音波形的浮点数组作为输入。与文本模型需要 tokenize、图像模型需要像素值不同XLS-R 的输入是 16kHz 采样率下的一维波形对应特征提取器中sampling_rate的默认约定。加载音频后通常需要用Wav2Vec2Processor的 feature extractor 做归一化与分帧而不要自己手动切帧。XLS-R 使用连接时序分类CTC训练因此模型输出必须用Wav2Vec2CTCTokenizer解码。模型的logits维度为(batch_size, time_steps, vocab_size)其中每个时间步对应一个字符/子词的概率分布。CTC 训练决定了输出与输入时间步并不严格对齐需要先对每个时间步取 argmax或用束搜索等更精细的策略再去除重复帧与空白符blank token得到最终转录文本——这一去重 去空白 映射到字符的过程由Wav2Vec2CTCTokenizer完成。实战加载 XLS-R 权重完成语音识别推理结合上述两条要点一个最小可运行的 XLS-R 推理代码示例如下API 完全与 Wav2Vec2 一致import torch from transformers import Wav2Vec2Processor, Wav2Vec2ForCTC # 以 XLS-R 300M 为例同理可替换为 1B / 2B 等以 xls_r 为标签的权重 model_id facebook/wav2vec2-xls-r-300m processor Wav2Vec2Processor.from_pretrained(model_id) model Wav2Vec2ForCTC.from_pretrained(model_id) model.eval() # speech_array 为一维浮点 numpy 数组代表 16kHz 采样率下的原始语音波形 # speech_array load_audio(audio.flac, sampling_rate16_000) inputs processor( speech_array, sampling_rate16_000, return_tensorspt, paddingTrue, ) with torch.no_grad(): logits model(**inputs).logits # CTC 解码先取每个时间步的最优 token再交给 Wav2Vec2CTCTokenizer 去重并映射为文本 predicted_ids torch.argmax(logits, dim-1) transcription processor.batch_decode(predicted_ids) print(transcription)其中processor内部将 feature_extraction_wav2vec2.py波形归一化、按 16kHz 约定采样与Wav2Vec2CTCTokenizerCTC 解码封装为统一接口processor.batch_decode(predicted_ids)即对应文档要求的用Wav2Vec2CTCTokenizer解码模型输出。如果希望省去手工拼接也可以直接借助 Transformers 的语音识别pipeline把加载、前向与解码一并封装好from transformers import pipeline asr pipeline( automatic-speech-recognition, modelfacebook/wav2vec2-xls-r-300m, feature_extractorfacebook/wav2vec2-xls-r-300m, tokenizerfacebook/wav2vec2-xls-r-300m, ) result asr(speech_array, sampling_rate16_000) print(result[text])需要提醒的是XLS-R 的大尺寸权重1B/2B在 CPU 上推理较慢建议在 GPU 上运行若输入为超长录音还可能涉及分块chunked推理与attention_mask配合使用这与 Wav2Vec2 系的通用处理方式一致。仓库内的验证证据测试如何覆盖 XLS-R / XLSR 系模型源码与测试提供了 XLS-R 使用方式的旁证。在 test_modeling_wav2vec2.py 中可以看到与 XLSR 系语音模型同源的加载范式通过Wav2Vec2ForCTC.from_pretrained(...)与Wav2Vec2ProcessorWithLM.from_pretrained(...)成对加载 CTC 模型与带语言模型的分词器用于端到端 ASR 测试。例如其中多次使用patrickvonplaten/wav2vec2-large-xlsr-53-spanish-with-lm这一含外部语言模型KenLM/Wav2Vec2ProcessorWithLM的西班牙语权重进行测试。这验证了两点以 wav2vec2 架构为基础训练的多语言语音识别模型在 Transformers 中的标准用法就是CTC 模型 Processor可选用ProcessorWithLM引入语言模型做束搜索解码Wav2Vec2ForCTC与Wav2Vec2Processor/Wav2Vec2ProcessorWithLM的组合在仓库测试中被反复演练属于成熟稳定的调用路径。若需将 XLS-R 用于需要外部语言模型参与的更高质量解码可以在 processing_wav2vec2.py 与 tokenization_wav2vec2.py 中找到Wav2Vec2ProcessorWithLM等实现细节。总结围绕 xls_r.md 这份模型文档可以归纳出使用 XLS-R 的三条核心结论定位XLS-R 是基于 wav2vec 2.0 的大规模跨语言语音表示模型最大 2B 参数、128 种语言预训练论文数据表明其在语音识别、语音翻译与语种识别上均有显著效果架构与 APIXLS-R没有独立的实现代码完整复用 wav2vec2 的架构、配置与任务头具体入口见 modeling_wav2vec2.py使用纪律输入必须是 16kHz 原始波形浮点数组由于采用 CTC 训练模型输出必须经Wav2Vec2CTCTokenizer或封装它的Wav2Vec2Processor解码。沿着 wav2vec2.md 与 speech-encoder-decoder.md 继续深入还能进一步了解基于 XLS-R 构建语音翻译如将 XLS-R 权重作为编码器接入 seq2seq 结构仓库中 modeling_speech_encoder_decoder.py 与对应转换脚本即含此类整合逻辑等更复杂的用法——这正与论文中 CoVoST-2 语音翻译评测的方向相呼应。【免费下载链接】transformers Transformers: the model-definition framework for state-of-the-art machine learning models in text, vision, audio, and multimodal models, for both inference and training.项目地址: https://gitcode.com/GitHub_Trending/tra/transformers创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考