speechbrain.lobes.models.wav2vec 模块
构建wav2vec 2.0架构所需的组件,遵循原始论文:https://arxiv.org/abs/2006.11477。
作者 * Rudolf A Braun 2022 * Guillermo Cambara 2022 * Titouan Parcollet 2022
摘要
类:
一个包装器,用于添加位置信息,屏蔽输入,然后运行潜在编码器。 |
|
基于卷积的原始音频特征提取器。 |
|
封装了 |
函数:
这将为目标形状创建布尔掩码,该掩码尊重样本长度,并且大约有一半的 |
|
从目标张量 y 中采样负样本。 |
|
这将从样本列表中创建一个批次,并创建布尔掩码,该掩码将用于屏蔽潜在编码器的输入。 |
参考
- class speechbrain.lobes.models.wav2vec.W2VLatentExtractor(out_channels=[512, 512, 512, 512, 512, 512, 512], kernel_sizes=[11, 3, 3, 3, 3, 3, 3], strides=[5, 2, 2, 2, 2, 2, 2], dropout=0.0, conv_init='kaiming')[source]
基础:
Module基于卷积的原始音频特征提取器。 通道数的增加基于 https://arxiv.org/abs/2109.06870
- Parameters:
Example
>>> extractor = W2VLatentExtractor() >>> inputs = torch.rand(10, 5000) >>> outputs = extractor(inputs) >>> outputs.shape torch.Size([10, 14, 512])
- class speechbrain.lobes.models.wav2vec.W2VTargetQuantiser(in_dim=512, out_dim=256, quantiser=<class 'speechbrain.nnet.quantisers.GumbelVectorQuantizer'>, num_vars=320, temperature_decay=(2.0, 0.25, 0.999995))[source]
基础:
Module包装
nnet.quantiser.GumbelVectorQuantizer,有关参数的文档请参见。- Parameters:
Example
>>> quantiser = W2VTargetQuantiser() >>> inputs = torch.rand(10, 12, 512) >>> output, meta = quantiser(inputs) >>> output.shape torch.Size([10, 12, 256])
- class speechbrain.lobes.models.wav2vec.EncoderWrapper(in_dim, embedding_dim, latent_encoder, positional_encoding=<class 'speechbrain.lobes.models.transformer.Transformer.PositionalEncoding'>, dropout_encoder_input=0.05)[source]
基础:
Module一个包装器,用于添加位置信息,屏蔽输入,然后运行潜在编码器。
- Parameters:
Example
>>> from speechbrain.lobes.models.transformer.Transformer import TransformerEncoder >>> encoder = TransformerEncoder(d_model=768, num_layers=4, nhead=4, d_ffn=1024) >>> wrapper = EncoderWrapper(1024, 768, encoder) >>> inputs = torch.rand(10, 12, 1024) >>> outputs = wrapper(inputs) >>> outputs["embeddings"].shape torch.Size([10, 12, 768])
- forward(latents, wav_lens=None, padding_mask=None, mask=None)[source]
- Parameters:
latents (torch.Tensor, shape (B, T, C)) – 从潜在提取器输出的潜在表示(也称为帧)的批次。
wav_lens (torch.Tensor, shape (B,)) – 批次中每个样本的实际(未填充的)相对长度(0
padding_mask (torch.Tensor, shape (B, T,)) – 可以代替 wav_lens 提供。
mask (torch.Tensor, shape (B, T)) – 布尔掩码,用于决定哪些潜在帧将被掩码。
- Returns:
结果 –
- 包含以下术语:
”num_masked” : 被屏蔽的术语数量 “ratio_masked” : 被屏蔽的术语比例 “embeddings” : 特征
- Return type:
- speechbrain.lobes.models.wav2vec.compute_mask(shape, sample_lens, mask_prob, mask_length)[source]
这将为目标形状创建一个布尔掩码,该掩码尊重样本长度,并且大约有一半的条目设置为
mask_prob为True。- Parameters:
- Returns:
mask – 布尔掩码,形状与输入参数
shape相同。- Return type:
- speechbrain.lobes.models.wav2vec.sample_negatives(y, num_neg)[source]
从目标张量 y 中采样负样本。
- Parameters:
y (torch.Tensor) – 形状为 (B, T, C) 的张量
num_neg (int) – 要采样的负样本数量。
- Returns:
negs – 形状中的负值 (N, B, T, C)
- Return type:
torch.Tensor
- speechbrain.lobes.models.wav2vec.w2v_mask_collate_fn(samples_lst, get_out_len_fn, mask_prob, mask_length)[source]
这将从样本列表中创建一个批次,并创建将用于屏蔽潜在编码器输入的布尔掩码。为了创建掩码,我们需要知道潜在提取器之后的输出形状,因此需要参数
get_out_len_fn。也可以在加载音频文件时为每个样本创建掩码,然后将它们整理在一起,但在那时我们不知道批次中最短样本的长度(这决定了掩码帧的数量),所以这种方式更好。- Parameters:
- Returns:
wavs_padded (torch.Tensor, shape (B, T)) – 带有右侧填充的音频数组。
wav_lens (torch.Tensor, shape (B,)) – 对于每个样本,数组中非填充部分的百分比。
mask (torch.Tensor, shape (B, T)) – 用于屏蔽帧的布尔掩码。