语音识别预训练wav2vec 2.0

1.简介

本文根据2020年《wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations》翻译总结的。

是Facebook AI继wav2vec 、VQ-WAV2VEC后的创作。wav2vec 2.0采用了预训练、fine-tune思路。
在这里插入图片描述

如上图所示,将语音x通过一个多层卷积神经网络进行encode成z,然后对z进行mask,如同BERT中的mask。然后输入到transformer网络构建c构建c是基于连续语音表示,而不是离散的。而量化q主要用到了对比学习损失函数里,不像VQ-WAV2VEC是量化后才输入到BERT。

在预训练后,模型可以在标签数据上使用Connectionist Temporal Classification (CTC) loss进行fine-tune,应用于下游语音识别任务。

2.模型

1)Encoder:X->Z。 还是卷积网络。
2)Contextualized representations with Transformers:context网络采用transformer结构,而不是卷积网络了。
3)量化模块Quantization module:
对于自监督学习,我们将encoder的输出z进行离散化,凭借product quantization离散到一个有限的集合。相当于从多个码书(codebook)中选择离散化表示,然后连接它们。

在这里插入图片描述

3.训练

3.1.Mask

我们将encoder输出的一部分进行mask,然后输入到context 网络。对于量化模型的输入,不进行mask。

3.2.目标函数

在这里插入图片描述
在这里插入图片描述

3.3.Fine-tuning

可以在预训练模型的context 网络顶部添加一个随机初始化的线性映射层,来表示下游任务的C个词汇类别。

4.结果

如下表,我们的方法(红色)就使用1个小时数据的fine-tune,就好于以前100h(蓝色)的效果。
在这里插入图片描述

### Wav2Vec2.0 深度学习语音模型使用指南 #### 一、简介 Wav2Vec2.0 是一种先进的自监督学习方法,专为处理音频信号而设计。该模型能够从未标注的大量原始波形数据中自动提取有用的表征,在各种下游任务如语音识别方面表现出色[^1]。 #### 二、安装依赖库 为了方便地获取并运行 Wav2Vec2.0 ,推荐先设置好 Python 环境,并通过 pip 安装必要的软件包: ```bash pip install torch torchaudio transformers datasets ``` 上述命令会下载 PyTorch 及其配套工具 `torchaudio` 和 Hugging Face 的 Transformer 库以及 Datasets 工具,这些都是加载和微调 Wav2Vec2.0 所必需的组件[^3]。 #### 三、加载预训练模型 Hugging Face 提供了一个简单易用的方式来访问已经过大规模语料库预先训练好的 Wav2Vec2.0 版本之一——例如 "facebook/wav2vec2-base-960h" 或者其他变体。下面是如何实例化一个特定版本的例子: ```python from transformers import Wav2Vec2ForCTC, Wav2Vec2Processor processor = Wav2Vec2Processor.from_pretrained("facebook/wav2vec2-large-lv60-self") model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-large-lv60-self") ``` 这段代码片段展示了如何利用官方支持的方式快速初始化处理器对象(processor)与模型(model),以便后续操作。 #### 四、准备输入数据 为了让模型接受新的声音样本作为输入,通常需要对其进行标准化处理,比如调整采样率至统一标准(通常是16kHz), 并转换成适合传递给神经网络的形式。这里给出一段简单的示范程序说明这一过程: ```python import soundfile as sf import librosa audio_input, sample_rate = sf.read("path_to_your_audio_file.wav") if sample_rate != 16_000: audio_input = librosa.resample(audio_input.T, orig_sr=sample_rate, target_sr=16_000).T input_values = processor(audio_input, sampling_rate=16_000, return_tensors="pt").input_values ``` 此部分实现了读取本地文件中的 PCM 数据流,并确保它们符合预期规格;之后再经过 Processor 对象进一步加工成为可供 Model 接收的数据结构。 #### 五、执行推理预测 当一切准备工作完成后就可以让模型开始工作啦!只需要把之前得到的结果送进去就好: ```python with torch.no_grad(): logits = model(input_values).logits predicted_ids = torch.argmax(logits, dim=-1) transcription = processor.decode(predicted_ids[0]) print(f"Transcribed text: {transcription}") ``` 以上就是整个流程中最核心的部分:将处理后的音频特征向量传送给已加载完毕的 Wav2Vec2.0 进行解码运算得出最终的文字描述。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值