Transformers documentation

Wav2Vec2

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.1).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

Эта модель была опубликована в HF papers 20 июня 2020 года и добавлена в Hugging Face Transformers 2 февраля 2021 года.

Wav2Vec2

FlashAttention SDPA

Обзор

Модель Wav2Vec2 была предложена в работе wav2vec 2.0: A Framework for Self-Supervised Learning of Speech Representations авторами Alexei Baevski, Henry Zhou, Abdelrahman Mohamed, Michael Auli.

Аннотация из статьи следующая:

Впервые показано, что обучение мощных представлений исключительно на основе аудиозаписей речи с последующей дообучением на транскрибированной речи позволяет превзойти лучшие полунезависимые методы, оставаясь при этом концептуально более простым. wav2vec 2.0 маскирует входной сигнал речи в латентном пространстве и решает контрастную задачу, определенную на квантованных латентных представлениях, которые обучаются совместно. Эксперименты с использованием всех размеченных данных Librispeech достигают 1,8/3,3 WER на тестовых наборах clean/other. При сокращении объема размеченных данных до одного часа wav2vec 2.0 превосходит предыдущий уровень на подмножестве в 100 часов, используя в 100 раз меньше размеченных данных. Использование всего десяти минут размеченных данных и предварительное обучение на 53 тысячах часов неразмеченных данных все еще позволяет достичь 4,8/8,2 WER. Это демонстрирует возможность распознавания речи при ограниченном количестве размеченных данных.

Эта модель была предоставлена пользователем patrickvonplaten.

Примечание: Meta (FAIR) выпустила новую версию Wav2Vec2-BERT 2.0 — она обучена на 4,5 млн часов аудио. Мы особенно рекомендуем использовать её для задач дообучения, например, согласно этому руководству.

Установите use_kernels=True в from_pretrained(), чтобы заменить поддерживаемые слои на оптимизированные ядра из Hub. Подробнее см. в разделе Загрузка ядер.

Советы по использованию

  • Wav2Vec2 — это модель для обработки речи, которая принимает массив float, соответствующий исходной волновой форме речевого сигнала.
  • Модель Wav2Vec2 обучалась с использованием connectionist temporal classification (CTC), поэтому выход модели необходимо декодировать с помощью Wav2Vec2CTCTokenizer.

Использование Flash Attention 2

Flash Attention 2 — это более быстрая и оптимизированная версия модели.

Установка

Сначала проверьте, совместимо ли ваше оборудование с Flash Attention 2. Актуальный список совместимого оборудования можно найти в официальной документации.

Далее установите последнюю версию Flash Attention 2:

pip install -U flash-attn --no-build-isolation

Использование

Чтобы загрузить модель с использованием Flash Attention 2, можно передать аргумент attn_implementation="flash_attention_2" в from_pretrained(). Также мы загрузим модель в половинной точности (например, torch.float16), так как это практически не влияет на качество аудио, но значительно снижает потребление памяти и ускоряет инференс:

from transformers import Wav2Vec2Model


model = Wav2Vec2Model.from_pretrained("facebook/wav2vec2-large-960h-lv60-self", attn_implementation="flash_attention_2", device_map="auto")
...

Ожидаемое ускорение

Ниже приведена диаграмма ожидаемого ускорения, сравнивающая время чистого вывода для нативной реализации в transformers модели facebook/wav2vec2-large-960h-lv60-self и версий flash-attention-2 и sdpa (scale-dot-product-attention). Мы показываем среднее ускорение, полученное на валидационной части librispeech_asr clean:

Ресурсы

Список официальных ресурсов Hugging Face и сообщества (отмечены значком 🌎), которые помогут вам начать работу с Wav2Vec2. Если вы хотите предложить ресурс для включения в этот список, пожалуйста, создайте Pull Request, и мы его рассмотрим! В идеале ресурс должен демонстрировать что-то новое, а не дублировать уже существующие материалы.

Audio Classification
Automatic Speech Recognition

🚀 Развёртывание

Wav2Vec2Config

класс transformers.Wav2Vec2Config

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int | None = 32hidden_size: int = 768num_hidden_layers: int = 12num_attention_heads: int = 12intermediate_size: int = 3072hidden_act: str = 'gelu'hidden_dropout: float | int = 0.1activation_dropout: float | int = 0.1attention_dropout: float | int = 0.1feat_proj_dropout: float | int = 0.0feat_quantizer_dropout: float | int = 0.0final_dropout: float | int = 0.1layerdrop: float | int = 0.1initializer_range: float = 0.02layer_norm_eps: float = 1e-05feat_extract_norm: str = 'group'feat_extract_activation: str = 'gelu'conv_dim: list[int] | tuple[int, ...] = (512, 512, 512, 512, 512, 512, 512)conv_stride: list[int] | tuple[int, ...] = (5, 2, 2, 2, 2, 2, 2)conv_kernel: list[int] | tuple[int, ...] = (10, 3, 3, 3, 3, 2, 2)conv_bias: bool = Falsenum_conv_pos_embeddings: int = 128num_conv_pos_embedding_groups: int = 16do_stable_layer_norm: bool = Falseapply_spec_augment: bool = Truemask_time_prob: float | int = 0.05mask_time_length: int = 10mask_time_min_masks: int = 2mask_feature_prob: float | int = 0.0mask_feature_length: int = 10mask_feature_min_masks: int = 0num_codevectors_per_group: int = 320num_codevector_groups: int = 2contrastive_logits_temperature: float = 0.1num_negatives: int = 100codevector_dim: int = 256proj_codevector_dim: int = 256diversity_loss_weight: float = 0.1ctc_loss_reduction: str = 'sum'ctc_zero_infinity: bool = Falseuse_weighted_layer_sum: bool = Falseclassifier_proj_size: int = 256tdnn_dim: list[int] | tuple[int, ...] = (512, 512, 512, 512, 1500)tdnn_kernel: list[int] | tuple[int, ...] = (5, 3, 3, 1, 1)tdnn_dilation: list[int] | tuple[int, ...] = (1, 2, 3, 1, 1)xvector_output_dim: int = 512pad_token_id: int | None = 0bos_token_id: int | None = 1eos_token_id: int | list[int] | None = 2add_adapter: bool = Falseadapter_kernel_size: int = 3adapter_stride: int = 2num_adapter_layers: int = 3output_hidden_size: int | None = Noneadapter_attn_dim: int | None = None )

Параметры

  • vocab_size (int, необязательный, по умолчанию 32) — Размер словаря модели. Определяет количество различных токенов, которые могут быть представлены в input_ids.
  • hidden_size (int, необязательный, по умолчанию 768) — Размерность скрытых представлений.
  • num_hidden_layers (int, необязательный, по умолчанию 12) — Количество скрытых слоев в декодере Transformer.
  • num_attention_heads (int, необязательный, по умолчанию 12) — Количество головок внимания в каждом слое внимания декодера Transformer.
  • intermediate_size (int, необязательный, по умолчанию 3072) — Размерность представлений MLP.
  • hidden_act (str, необязательный, по умолчанию gelu) — Нелинейная функция активации (функция или строка) в декодере. Например, "gelu", "relu", "silu" и т. д.
  • hidden_dropout (Union[float, int], необязательный, по умолчанию 0.1) — Вероятность dropout для всех полносвязных слоёв в эмбеддингах, энкодере и пуллере.
  • activation_dropout (Union[float, int], необязательный, по умолчанию 0.1) — Коэффициент dropout для активаций внутри полносвязного слоя.
  • attention_dropout (Union[float, int], необязательный, по умолчанию 0.1) — Коэффициент dropout для вероятностей внимания.
  • feat_proj_dropout (float, необязательный, по умолчанию 0.0) — Вероятность dropout для выхода кодировщика признаков.
  • feat_quantizer_dropout (float, необязательный, по умолчанию 0.0) — Вероятность dropout для выхода кодировщика признаков, используемого квантизатором.
  • final_dropout (float, необязательный, по умолчанию 0.1) — Вероятность dropout для последнего проекционного слоя Wav2Vec2ForCTC.
  • layerdrop (Union[float, int], необязательный, по умолчанию 0.1) — Вероятность LayerDrop. Подробности — в [статье о LayerDrop](см. https://huggingface.co/papers/1909.11556).
  • initializer_range (float, необязательный, по умолчанию 0.02) — Стандартное отклонение truncated_normal_initializer, используемое для инициализации всех матриц весов.
  • layer_norm_eps (float, необязательный, по умолчанию 1e-05) — Значение epsilon, используемое слоями нормализации.
  • feat_extract_norm (str, необязательный, по умолчанию "group") — Тип нормализации, применяемой к одномерным свёрточным слоям в кодере признаков. Допустимые значения: "group" — групповая нормализация только для первого одномерного свёрточного слоя, или "layer" — нормализация по слоям для всех одномерных свёрточных слоев.
  • feat_extract_activation (str, optional, defaults to “gelu”) -- The non-linear activation function (function or string) in the 1D convolutional layers of the feature extractor. If string, “gelu”, “relu”, “selu”and“gelu_new”` are supported.
  • conv_dim (tuple[int] или list[int], необязательный, по умолчанию (512, 512, 512, 512, 512, 512, 512)) — Кортеж целых чисел, определяющий количество входных и выходных каналов каждого слоя одномерной свёртки в кодировщике признаков. Длина conv_dim определяет количество одномерных свёрточных слоёв.
  • conv_stride (tuple[int] or list[int], необязательный, по умолчанию (5, 2, 2, 2, 2, 2, 2)) — Кортеж целых чисел, определяющий шаг каждого одномерного свёрточного слоя в кодере признаков. Длина conv_stride определяет количество свёрточных слоёв и должна совпадать с длиной conv_dim.
  • conv_kernel (tuple[int] или list[int], необязательный, по умолчанию (10, 3, 3, 3, 3, 3, 3)) — Кортеж целых чисел, определяющий размер ядра каждого одномерного свёрточного слоя в кодере признаков. Длина conv_kernel определяет количество свёрточных слоев и должна совпадать с длиной conv_dim.
  • conv_bias (bool, необязательный, по умолчанию False) — Указывает, имеют ли одномерные свёрточные слои смещение (bias).
  • num_conv_pos_embeddings (int, необязательный, по умолчанию 128) — Количество сверточных позиционных эмбеддингов. Определяет размер ядра слоя 1D сверточных позиционных эмбеддингов.
  • num_conv_pos_embedding_groups (int, необязательный, по умолчанию 16) — Количество групп слоя одномерных свёрточных позиционных эмбеддингов.
  • do_stable_layer_norm (bool, необязательный, по умолчанию False) — Определяет, следует ли применять архитектуру стабильного layer norm в кодере Transformer. Если do_stable_layer_norm is True, layer norm применяется перед слоем внимания, а если do_stable_layer_norm is False — после слоя внимания.
  • apply_spec_augment (bool, необязательный, по умолчанию True) — Указывает, следует ли применять аугментацию данных SpecAugment к выходным данным кодировщика признаков. Для справки см. SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition.
  • mask_time_prob (float, optional, defaults to 0.05) — Percentage (between 0 and 1) of all feature vectors along the time axis which will be masked. The masking procedure generates ”mask_time_problen(time_axis)/mask_time_length” independent masks over the axis. If reasoning from the probability of each feature vector to be chosen as the start of the vector span to be masked, mask_time_prob should be `prob_vector_startmask_time_length. Note that overlap may decrease the actual percentage of masked vectors. This is only relevant if apply_spec_augment is True`.
  • mask_time_length (int, необязательный, по умолчанию 10) — Длина векторного диапазона вдоль временной оси.
  • mask_time_min_masks (int, необязательный, по умолчанию 2), — Минимальное количество масок длины mask_feature_length, генерируемых вдоль временной оси, на каждом шаге времени, независимо от mask_feature_prob. Актуально только если ”mask_time_prob*len(time_axis)/mask_time_length < mask_time_min_masks”
  • mask_feature_prob (float, optional, defaults to 0.0) — Percentage (between 0 and 1) of all feature vectors along the feature axis which will be masked. The masking procedure generates ”mask_feature_problen(feature_axis)/mask_time_length” independent masks over the axis. If reasoning from the probability of each feature vector to be chosen as the start of the vector span to be masked, mask_feature_prob should be `prob_vector_startmask_feature_length. Note that overlap may decrease the actual percentage of masked vectors. This is only relevant if apply_spec_augment is True`.
  • mask_feature_prob (Union[float, int], необязательный, по умолчанию 0.0) — Доля (от 0 до 1) всех векторов признаков вдоль оси признаков, которые будут замаскированы. Процедура маскирования генерирует mask_feature_prob*len(feature_axis)/mask_time_length независимых масок вдоль оси. Если рассуждать с точки зрения вероятности того, что каждый вектор признаков будет выбран в качестве начала векторного диапазона, подлежащего маскированию, то mask_feature_prob должно быть равно prob_vector_start*mask_feature_length. Обратите внимание, что перекрытия могут уменьшить фактическую долю замаскированных векторов. Это имеет значение только в том случае, если apply_spec_augment равно True.
  • mask_feature_length (int, необязательный, по умолчанию 10) — Длина векторного диапазона вдоль оси признаков.
  • mask_feature_min_masks (int, необязательный, по умолчанию 0), — Минимальное количество масок длины mask_feature_length, генерируемых вдоль оси признаков на каждом шаге, независимо от значения mask_feature_prob. Актуально только в том случае, если ”mask_feature_prob*len(feature_axis)/mask_feature_length < mask_feature_min_masks”
  • num_codevectors_per_group (int, необязательный, по умолчанию 320) — Количество записей в каждом квантованном кодеке (группе).
  • num_codevectors_per_group (int, необязательный, по умолчанию 320) — Количество записей в каждом квантованном кодеке (группе).
  • num_codevector_groups (int, необязательный, по умолчанию 2) — Количество групп кодовекторов для квантования с использованием произвольных кодовекторов.
  • contrastive_logits_temperature (float, необязательный, по умолчанию 0.1) — Температура kappa в контрастивной функции потерь.
  • num_negatives (int, необязательный, по умолчанию 100) — Количество отрицательных выборок для контрастивной функции потерь.
  • codevector_dim (int, необязательный, по умолчанию 256) — Размерность квантованных векторов признаков.
  • proj_codevector_dim (int, необязательный, по умолчанию 256) — Размерность финальной проекции как квантованных, так и трансформерных признаков.
  • diversity_loss_weight (int, необязательный, по умолчанию 0.1) — Вес компонента потерь разнообразия кодовой книги.
  • ctc_loss_reduction (str, необязательный, по умолчанию "sum") — Определяет способ агрегации (reduction) для вывода torch.nn.CTCLoss. Актуально только при обучении экземпляра Wav2Vec2ForCTC.
  • ctc_zero_infinity (bool, необязательный, по умолчанию False) — Определяет, следует ли обнулять бесконечные значения потерь и соответствующие градиенты torch.nn.CTCLoss. Бесконечные потери возникают в основном, когда входные последовательности слишком короткие для выравнивания с целевыми. Параметр актуален только при обучении экземпляра Wav2Vec2ForCTC.
  • use_weighted_layer_sum (bool, необязательный, по умолчанию False) — Использовать ли взвешенное среднее выходов слоев с обучаемыми весами. Актуально только при использовании экземпляра Wav2Vec2ForSequenceClassification.
  • classifier_proj_size (int, необязательный, по умолчанию 256) — Размерность проекции перед усреднением токенов для классификации.
  • tdnn_dim (tuple[int] или list[int], необязательный, по умолчанию (512, 512, 512, 512, 1500)) — Кортеж целых чисел, определяющий количество выходных каналов каждого одномерного свёрточного слоя в модуле TDNN модели XVector. Длина tdnn_dim определяет количество слоёв TDNN.
  • tdnn_kernel (tuple[int] или list[int], необязательный, по умолчанию (5, 3, 3, 1, 1)) — Кортеж целых чисел, определяющий размер ядра каждого одномерного свёрточного слоя в модуле TDNN модели XVector. Длина tdnn_kernel должна совпадать с длиной tdnn_dim.
  • tdnn_dilation (tuple[int] или list[int], необязательный, по умолчанию (1, 2, 3, 1, 1)) — Кортеж целых чисел, определяющий коэффициент дилатации каждого одномерного свёрточного слоя в модуле TDNN модели XVector. Длина tdnn_dilation должна совпадать с длиной tdnn_dim.
  • xvector_output_dim (int, необязательный, по умолчанию 512) — Размерность векторов встраивания XVector.
  • pad_token_id (int, необязательный, по умолчанию 0) — Идентификатор токена, используемого для дополнения (padding) в словаре.
  • bos_token_id (int, необязательный, по умолчанию 1) — Идентификатор токена, используемого для обозначения начала потока в словаре.
  • eos_token_id (Union[int, list[int]], необязательный, по умолчанию 2) — Идентификатор токена, используемого для обозначения конца потока в словаре.
  • add_adapter (bool, необязательный, по умолчанию False) — Указывает, следует ли добавлять свёрточную сеть поверх энкодера Wav2Vec2. Может быть очень полезно для инициализации Wav2Vec2 для моделей SpeechEncoderDecoder.
  • adapter_kernel_size (int, необязательный, по умолчанию 3) — Размер ядра свёрточных слоёв в адаптерной сети. Актуально только если add_adapter is True.
  • adapter_stride (int, необязательный, по умолчанию 2) — Шаг свёрточных слоёв в адаптерной сети. Актуально только если add_adapter is True.
  • num_adapter_layers (int, необязательный, по умолчанию 3) — Количество свёрточных слоёв, которые должны использоваться в сети адаптера. Актуально только если add_adapter is True.
  • output_hidden_size (int, необязательный) — Размерность выходного слоя энкодера. Если не задано, по умолчанию используется hidden-size. Актуально только если add_adapter is True.
  • adapter_attn_dim (int, необязательный) — Размерность весов адаптера внимания, используемых в каждом блоке внимания. Примером модели, использующей адаптеры внимания, является facebook/mms-1b-all.

Это класс конфигурации для хранения настроек модели Wav2Vec2Model. Он используется для создания модели Wav2Vec2 в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации facebook/wav2vec2-base-960h

Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.

Пример:

>>> from transformers import Wav2Vec2Config, Wav2Vec2Model

>>> # Initializing a Wav2Vec2 facebook/wav2vec2-base-960h style configuration
>>> configuration = Wav2Vec2Config()

>>> # Initializing a model (with random weights) from the facebook/wav2vec2-base-960h style configuration
>>> model = Wav2Vec2Model(configuration)

>>> # Accessing the model configuration
>>> configuration = model.config

Wav2Vec2CTCTokenizer

класс transformers.Wav2Vec2CTCTokenizer

< >

( vocab_filebos_token = '<s>'eos_token = '</s>'unk_token = '<unk>'pad_token = '<pad>'word_delimiter_token = '|'replace_word_delimiter_char = ' 'do_lower_case = Falsetarget_lang = None**kwargs )

Параметры

  • vocab_file (str) — Файл, содержащий словарь.
  • bos_token (str, необязательный, по умолчанию "<s>") — Токен начала предложения.
  • eos_token (str, необязательный, по умолчанию "</s>") — Токен конца предложения.
  • unk_token (str, необязательный, по умолчанию "<unk>") — Токен неизвестного слова. Токен, отсутствующий в словаре, не может быть преобразован в ID, поэтому вместо него используется этот токен.
  • pad_token (str, необязательный, по умолчанию "<pad>") — Токен, используемый для выравнивания, например, при пакетной обработке последовательностей разной длины.
  • word_delimiter_token (str, необязательный, по умолчанию "|") — Токен, используемый для определения конца слова.
  • do_lower_case (bool, необязательный, по умолчанию False) — Определяет, следует ли принимать входные данные в нижнем регистре и приводить вывод к нижнему регистру при декодировании.
  • target_lang (str, необязательный) — Целевой язык, который токенизатор должен устанавливать по умолчанию. target_lang необходимо определить для многоязычных вложенных словарей, таких как facebook/mms-1b-all.
  • **kwargs — Дополнительные именованные аргументы, передаваемые в PreTrainedTokenizer

Создаёт токенизатор Wav2Vec2CTC.

Этот токенизатор наследуется от PreTrainedTokenizer, который содержит некоторые основные методы. За дополнительной информацией о таких методах следует обращаться к суперклассу.

__call__

< >

( text: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Nonetext_pair_target: TextInput | PreTokenizedInput | list[TextInput] | list[PreTokenizedInput] | None = Noneadd_special_tokens: bool = Truepadding: bool | str | PaddingStrategy = Falsetruncation: bool | str | TruncationStrategy | None = Nonemax_length: int | None = Nonestride: int = 0is_split_into_words: bool = Falsepad_to_multiple_of: int | None = Nonepadding_side: str | None = Nonereturn_tensors: str | TensorType | None = Nonereturn_token_type_ids: bool | None = Nonereturn_attention_mask: bool | None = Nonereturn_overflowing_tokens: bool = Falsereturn_special_tokens_mask: bool = Falsereturn_offsets_mapping: bool = Falsereturn_length: bool = Falseverbose: bool = Truetokenizer_kwargs: dict[str, Any] | None = None**kwargs ) → BatchEncoding

Параметры

  • text (str, list[str], list[list[str]], необязательный) — Последовательность или батч последовательностей для кодирования. Каждая последовательность может быть строкой или списком строк (предварительно токенизированная строка). Если последовательности предоставлены в виде списка строк (предварительно токенизированных), необходимо установить is_split_into_words=True (чтобы устранить неоднозначность с батчем последовательностей).
  • text_pair (str, list[str], list[list[str]], необязательный) — Последовательность или батч последовательностей для кодирования. Каждая последовательность может быть строкой или списком строк (предварительно токенизированная строка). Если последовательности предоставлены в виде списка строк (предварительно токенизированных), необходимо установить is_split_into_words=True (чтобы устранить неоднозначность с батчем последовательностей).
  • text_target (str, list[str], list[list[str]], необязательный) — Последовательность или батч последовательностей, которые будут закодированы как целевые тексты. Каждая последовательность может быть строкой или списком строк (предтокенизированная строка). Если последовательности предоставлены в виде списка строк (предтокенизированных), необходимо установить is_split_into_words=True (чтобы устранить неоднозначность с батчем последовательностей).
  • text_pair_target (str, list[str], list[list[str]], необязательный) — Последовательность или батч последовательностей, которые будут закодированы как целевые тексты. Каждая последовательность может быть строкой или списком строк (предтокенизированная строка). Если последовательности предоставлены в виде списка строк (предтокенизированных), необходимо установить is_split_into_words=True (чтобы устранить неоднозначность с батчем последовательностей).
  • tokenizer_kwargs (dict[str, Any], необязательный) — Дополнительные kwargs для передачи в токенизатор. Они будут объединены с явными параметрами и другими kwargs, при этом явные параметры имеют приоритет.
  • add_special_tokens (bool, необязательный, по умолчанию True) — Указывает, следует ли добавлять специальные токены при кодировании последовательностей. Для этого используется базовая функция PretrainedTokenizerBase.build_inputs_with_special_tokens, которая определяет, какие токены автоматически добавляются к входным идентификаторам. Это полезно, если вы хотите автоматически добавлять токены bos или eos.
  • padding (bool, str или PaddingStrategy, необязательный, по умолчанию False) — Включает и управляет выравниванием. Принимает следующие значения:
    • True или 'longest': дополнить до самой длинной последовательности в батче (или не дополнять, если предоставлена только одна последовательность).
    • 'max_length': Дополнить до максимальной длины, указанной аргументом max_length, или до максимально допустимой длины входных данных для модели, если этот аргумент не указан.
    • False или 'do_not_pad' (по умолчанию): без дополнения нулями (т. е. может выводить батч с последовательностями разной длины).
  • truncation (bool, str или TruncationStrategy, необязательный, по умолчанию False) — Включает и управляет усечением. Принимает следующие значения:
    • True или 'longest_first': обрезка до максимальной длины, заданной аргументом max_length, или до максимально допустимой длины входа для модели, если этот аргумент не указан. Обрезка выполняется посимвольно: если предоставлена пара последовательностей (или батч пар), то токен удаляется из самой длинной последовательности в паре.
    • 'only_first': Обрезка до максимальной длины, указанной аргументом max_length, или до максимально допустимой длины входа для модели, если этот аргумент не задан. Если предоставлена пара последовательностей (или батч пар), будет обрезана только первая последовательность пары.
    • 'only_second': Обрезка до максимальной длины, указанной аргументом max_length, или до максимальной допустимой длины входа для модели, если этот аргумент не задан. Это приводит к обрезке только второй последовательности в паре, если предоставлена пара последовательностей (или батч пар).
    • False или 'do_not_truncate' (по умолчанию): без усечения (т.е. может выдать батч с длиной последовательности, превышающей максимальный допустимый размер входа модели).
  • max_length (int, необязательный) — Управляет максимальной длиной, используемой одним из параметров усечения/дополнения.

    Если параметр не задан или установлен в None, будет использована предопределённая максимальная длина модели, если одна из параметров усечения/дополнения требует указания максимальной длины. Если у модели нет конкретной максимальной длины входных данных (как у XLNet), усечение/дополнение до максимальной длины будет отключено.

  • stride (int, необязательный, по умолчанию 0) — Если задано число вместе с max_length, то переполненные токены, возвращаемые при return_overflowing_tokens=True, будут содержать некоторые токены из конца усечённой последовательности, чтобы обеспечить перекрытие между усечённой и переполненной последовательностями. Значение этого аргумента определяет количество перекрывающихся токенов.
  • is_split_into_words (bool, необязательный, по умолчанию False) — Указывает, является ли вход уже предтокенизированным (например, разбитым на слова). Если установлено в True, токенизатор предполагает, что вход уже разбит на слова (например, по пробелам), и токенизирует их. Это полезно для NER или классификации токенов.
  • pad_to_multiple_of (int, необязательный) — Если задано, последовательность будет дополнена до кратного указанного значения. Требуется, чтобы padding был активирован. Это особенно полезно для использования Tensor Cores на оборудовании NVIDIA с вычислительной способностью >= 7.5 (Volta).
  • padding_side (str, необязательный) — Сторона, на которой модель должна применять отступы. Следует выбрать одно из значений [‘right’, ‘left’]. Значение по умолчанию выбирается из атрибута класса с тем же именем.
  • return_tensors (str или TensorType, необязательный) — Если задано, возвращает тензоры вместо списка целых чисел Python. Допустимые значения:
    • 'pt': возвращает объекты torch.Tensor PyTorch.
    • 'np': возвращает объекты Numpy np.ndarray.
  • return_token_type_ids (bool, необязательный) — Возвращать ли идентификаторы типов токенов. Если значение не указано, идентификаторы типов токенов будут возвращены в соответствии со значением по умолчанию для конкретного токенизатора, заданным атрибутом return_outputs .

    Что такое идентификаторы типов токенов?

  • return_attention_mask (bool, необязательный) — Возвращать ли маску внимания. Если значение не указано, маска внимания будет возвращена в соответствии со значением по умолчанию для конкретного токенизатора, определяемым атрибутом return_outputs .

    Что такое маски внимания?

  • return_overflowing_tokens (bool, необязательный, по умолчанию False) — Возвращать ли последовательности токенов, выходящие за пределы длины. Если передается пара последовательностей входных идентификаторов (или батч пар) с truncation_strategy = longest_first или True, вместо возврата переполненных токенов будет выброшена ошибка.
  • return_special_tokens_mask (bool, необязательный, по умолчанию False) — Возвращать ли информацию о маске специальных токенов.
  • return_offsets_mapping (bool, необязательный, по умолчанию False) — Возвращать ли (char_start, char_end) для каждого токена.

    Это доступно только для быстрых токенизаторов, наследующих от PreTrainedTokenizerFast. Если используется токенизатор на Python, этот метод вызовет NotImplementedError.

  • return_length (bool, необязательный, по умолчанию False) — Возвращать ли длины закодированных входных данных.
  • verbose (bool, необязательный, по умолчанию True) — Выводить ли дополнительную информацию и предупреждения.
  • **kwargs — передаются в метод self.tokenize()

Возвращает

BatchEncoding

BatchEncoding со следующими полями:

  • input_ids — список идентификаторов токенов, которые передаются в модель.

    Что такое входные идентификаторы?

  • token_type_ids — список идентификаторов типов токенов, передаваемых в модель (если return_token_type_ids=True или если “token_type_ids” входит в self.model_input_names).

    Что такое идентификаторы типов токенов?

  • attention_mask — список индексов, указывающих, на какие токены модель должна обращать внимание (когда return_attention_mask=True или если “attention_mask” входит в self.model_input_names).

    Что такое маски внимания?

  • overflowing_tokens — список переполненных последовательностей токенов (если указано max_length и return_overflowing_tokens=True).

  • num_truncated_tokens — количество отсечённых токенов (если указано max_length и return_overflowing_tokens=True).

  • special_tokens_mask — список нулей и единиц, где 1 указывает на добавленные специальные токены, а 0 — на обычные токены последовательности (когда add_special_tokens=True и return_special_tokens_mask=True).

  • length — длина входных данных (когда return_length=True)

Основной метод для токенизации и подготовки одной или нескольких последовательностей или одной или нескольких пар последовательностей для модели.

save_vocabulary

< >

( save_directory: strfilename_prefix: str | None = None )

decode

< >

( token_ids: typing.Union[int, list[int], numpy.ndarray, ForwardRef('torch.Tensor')]skip_special_tokens: bool = Falseclean_up_tokenization_spaces: bool | None = Noneoutput_char_offsets: bool = Falseoutput_word_offsets: bool = False**kwargs ) → str or Wav2Vec2CTCTokenizerOutput

Параметры

  • token_ids (Union[int, list[int], np.ndarray, torch.Tensor]) — Список идентификаторов токенов входных данных. Может быть получен с помощью метода __call__.
  • skip_special_tokens (bool, необязательный, по умолчанию False) — Удалять ли специальные токены при декодировании.
  • clean_up_tokenization_spaces (bool, необязательный) — Указывает, следует ли очищать пробелы в токенизации.
  • output_char_offsets (bool, необязательный, по умолчанию False) — Указывает, следует ли выводить смещения символов. Смещения символов можно использовать вместе с частотой выборки и коэффициентом понижающей дискретизации модели для вычисления временных меток распознанных символов.

    Обратите внимание на пример ниже, чтобы лучше понять, как использовать output_char_offsets.

  • output_word_offsets (bool, необязательный, по умолчанию False) — Указывает, следует ли выводить смещения слов. Смещения слов можно использовать вместе с частотой дискретизации и коэффициентом понижающей дискретизации модели для вычисления временных меток распознанных слов.

    Обратите внимание на пример ниже, чтобы лучше понять, как использовать output_word_offsets.

  • kwargs (дополнительные именованные аргументы, необязательный) — Будут переданы в метод декодирования, специфичный для базовой модели.

Возвращает

str или Wav2Vec2CTCTokenizerOutput

Список декодированных предложений. Будет иметь тип Wav2Vec2CTCTokenizerOutput, если output_char_offsets == True или output_word_offsets == True.

Преобразует последовательность идентификаторов в строку, используя токенизатор и словарь, с опциями для удаления специальных токенов и очистки пробелов токенизации.

Аналогично выполнению self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids)).

Пример:

>>> # Let's see how to retrieve time steps for a model
>>> from transformers import AutoTokenizer, AutoFeatureExtractor, AutoModelForCTC
>>> from datasets import load_dataset
>>> import datasets
>>> import torch

>>> # import model, feature extractor, tokenizer
>>> model = AutoModelForCTC.from_pretrained("facebook/wav2vec2-base-960h")
>>> tokenizer = AutoTokenizer.from_pretrained("facebook/wav2vec2-base-960h")
>>> feature_extractor = AutoFeatureExtractor.from_pretrained("facebook/wav2vec2-base-960h")

>>> # load first sample of English common_voice
>>> dataset = load_dataset("mozilla-foundation/common_voice_11_0", "en", split="train", streaming=True)
>>> dataset = dataset.cast_column("audio", datasets.Audio(sampling_rate=16_000))
>>> dataset_iter = iter(dataset)
>>> sample = next(dataset_iter)

>>> # forward sample through model to get greedily predicted transcription ids
>>> input_values = feature_extractor(sample["audio"]["array"], return_tensors="pt").input_values
>>> logits = model(input_values).logits[0]
>>> pred_ids = torch.argmax(logits, axis=-1)

>>> # retrieve word stamps (analogous commands for `output_char_offsets`)
>>> outputs = tokenizer.decode(pred_ids, output_word_offsets=True)
>>> # compute `time_offset` in seconds as product of downsampling ratio and sampling_rate
>>> time_offset = model.config.inputs_to_logits_ratio / feature_extractor.sampling_rate

>>> word_offsets = [
...     {
...         "word": d["word"],
...         "start_time": round(d["start_offset"] * time_offset, 2),
...         "end_time": round(d["end_offset"] * time_offset, 2),
...     }
...     for d in outputs.word_offsets
... ]
>>> # compare word offsets with audio `en_train_0/common_voice_en_19121553.mp3` online on the dataset viewer:
>>> # https://huggingface.co/datasets/mozilla-foundation/common_voice_11_0/viewer/en
>>> word_offsets[:3]
[{'word': 'THE', 'start_time': 0.7, 'end_time': 0.78}, {'word': 'TRICK', 'start_time': 0.88, 'end_time': 1.08}, {'word': 'APPEARS', 'start_time': 1.2, 'end_time': 1.64}]

batch_decode

< >

( sequences: typing.Union[list[int], list[list[int]], numpy.ndarray, ForwardRef('torch.Tensor')]skip_special_tokens: bool = Falseclean_up_tokenization_spaces: bool | None = Noneoutput_char_offsets: bool = Falseoutput_word_offsets: bool = False**kwargs ) → list[str] or Wav2Vec2CTCTokenizerOutput

Параметры

  • sequences (Union[list[int], list[list[int]], np.ndarray, torch.Tensor]) — Список токенизированных входных идентификаторов. Может быть получен с помощью метода __call__.
  • skip_special_tokens (bool, необязательный, по умолчанию False) — Удалять ли специальные токены при декодировании.
  • clean_up_tokenization_spaces (bool, необязательный) — Указывает, следует ли очищать пробелы в токенизации.
  • output_char_offsets (bool, необязательный, по умолчанию False) — Указывает, следует ли выводить смещения символов. Смещения символов можно использовать вместе с частотой выборки и коэффициентом понижающей дискретизации модели для вычисления временных меток распознанных символов.

    Обратите внимание на пример использования decode(), чтобы лучше понять, как применять output_char_offsets. batch_decode() работает аналогично, но с пакетным выводом.

  • output_word_offsets (bool, необязательный, по умолчанию False) — Включает или отключает вывод смещений слов. Смещения слов можно использовать вместе с частотой дискретизации и коэффициентом понижающей дискретизации модели для вычисления временных меток распознанных слов.

    Обратите внимание на пример decode(), чтобы лучше понять, как использовать output_word_offsets. batch_decode() работает аналогично, но с пакетным выводом.

  • kwargs (дополнительные именованные аргументы, необязательный) — Будут переданы в метод декодирования, специфичный для базовой модели.

Возвращает

list[str] или Wav2Vec2CTCTokenizerOutput

Список декодированных предложений. Будет иметь тип Wav2Vec2CTCTokenizerOutput, если output_char_offsets == True или output_word_offsets == True.

Преобразуйте список списков идентификаторов токенов в список строк, вызвав decode.

set_target_lang

< >

( target_lang: str )

Установите целевой язык вложенного многоязычного словаря

Wav2Vec2FeatureExtractor

класс transformers.Wav2Vec2FeatureExtractor

< >

( feature_size = 1sampling_rate = 16000padding_value = 0.0return_attention_mask = Falsedo_normalize = True**kwargs )

Параметры

  • feature_size (int, необязательный, по умолчанию 1) — Размерность признаков извлечённых признаков.
  • sampling_rate (int, необязательный, по умолчанию 16000) — Частота дискретизации, с которой аудиофайлы должны быть оцифрованы, выраженная в герцах (Гц).
  • padding_value (float, необязательный, по умолчанию 0.0) — Значение, используемое для заполнения позиций, отведённых под padding.
  • do_normalize (bool, необязательный, по умолчанию True) — Определяет, следует ли нормализовать входные данные до нулевого среднего и единичной дисперсии. Нормализация может значительно улучшить производительность некоторых моделей, например, wav2vec2-lv60.
  • return_attention_mask (bool, необязательный, по умолчанию False) — должен ли вызов() возвращать attention_mask.

    Модели Wav2Vec2, у которых установлено config.feat_extract_norm == "group", например wav2vec2-base, не обучались с использованием attention_mask. Для таких моделей input_values следует просто дополнять нулями, а attention_mask передавать не нужно.

    Для моделей Wav2Vec2, у которых установлено config.feat_extract_norm == "layer", например wav2vec2-lv60, параметр attention_mask необходимо передавать при пакетном выводе.

Создаёт экстрактор признаков Wav2Vec2.

Этот экстрактор признаков наследуется от SequenceFeatureExtractor, который содержит большинство основных методов. За дополнительной информацией о них следует обращаться к этому суперклассу.

__call__

< >

( raw_speech: numpy.ndarray | list[float] | list[numpy.ndarray] | list[list[float]]padding: bool | str | transformers.utils.generic.PaddingStrategy = Falsemax_length: int | None = Nonetruncation: bool = Falsepad_to_multiple_of: int | None = Nonereturn_attention_mask: bool | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonesampling_rate: int | None = None**kwargs )

Параметры

  • raw_speech (np.ndarray, list[float], list[np.ndarray], list[list[float]]) — Последовательность или батч последовательностей, для которых требуется выравнивание. Каждая последовательность может быть массивом numpy, списком значений float, списком массивов numpy или списком списков значений float. Аудио должно быть моноканальным, а не стерео, то есть одно значение float на каждый момент времени.
  • padding (bool, str или PaddingStrategy, необязательный, по умолчанию False) — Выберите стратегию дополнения возвращаемых последовательностей (с учётом стороны дополнения модели и индекса дополнения) из следующих вариантов:
    • True или 'longest': дополнить до самой длинной последовательности в батче (или не дополнять, если предоставлена только одна последовательность).
    • 'max_length': Дополнить до максимальной длины, указанной аргументом max_length, или до максимально допустимой длины входных данных для модели, если этот аргумент не указан.
    • False или 'do_not_pad' (по умолчанию): без дополнения нулями (т. е. может выводить батч с последовательностями разной длины).
  • max_length (int, необязательный) — Максимальная длина возвращаемого списка и, при необходимости, длина отступов (см. выше).
  • truncation (bool) — Включает усечение, чтобы обрезать входные последовательности длиннее max_length до max_length.
  • pad_to_multiple_of (int, необязательный) — Если задано, последовательность будет дополнена до кратного указанного значения.

    Это особенно полезно для использования Tensor Cores на аппаратных средствах NVIDIA с вычислительной способностью >= 7.5 (Volta) или на TPU, где производительность повышается при длине последовательности, кратной 128.

  • return_attention_mask (bool, необязательный) — Указывает, следует ли возвращать attention mask. Если значение не задано, attention mask будет возвращена в соответствии со значением по умолчанию конкретного feature_extractor.

    Что такое маски внимания?

    Модели Wav2Vec2, у которых установлено config.feat_extract_norm == "group", например wav2vec2-base, не обучались с использованием attention_mask. Для таких моделей input_values следует просто дополнять нулями, а attention_mask передавать не нужно.

    Для моделей Wav2Vec2, у которых установлено config.feat_extract_norm == "layer", например wav2vec2-lv60, параметр attention_mask следует передавать при пакетном выводе.

  • return_tensors (str или TensorType, необязательный) — Если задано, возвращает тензоры вместо списка целых чисел Python. Допустимые значения:
    • 'pt': возвращает объекты torch.Tensor PyTorch.
    • 'np': возвращает объекты Numpy np.ndarray.
  • sampling_rate (int, необязательный) — Частота дискретизации, с которой была оцифрована входная raw_speech. Настоятельно рекомендуется передавать sampling_rate при вызове forward, чтобы избежать скрытых ошибок.
  • padding_value (float, необязательный, по умолчанию 0.0) —

Основной метод для создания признаков и подготовки одной или нескольких последовательностей для модели.

Wav2Vec2Processor

класс transformers.Wav2Vec2Processor

< >

( feature_extractortokenizer )

Параметры

  • feature_extractor (Wav2Vec2FeatureExtractor) — Извлекатель признаков является обязательным входным параметром.
  • tokenizer (Wav2Vec2CTCTokenizer) — Токенизатор является обязательным входным параметром.

Создаёт Wav2Vec2Processor, объединяющий feature extractor и tokenizer в единый processor.

Wav2Vec2Processor предоставляет все возможности Wav2Vec2FeatureExtractor и Wav2Vec2CTCTokenizer. Подробнее см. в ~Wav2Vec2FeatureExtractor и ~Wav2Vec2CTCTokenizer.

__call__

< >

( audio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), list[numpy.ndarray], list['torch.Tensor'], NoneType] = Nonetext: str | list[str] | None = None**kwargs: *<class 'transformers.models.wav2vec2.processing_wav2vec2.Wav2Vec2ProcessorKwargs'> )

Параметры

  • audio (Union[numpy.ndarray, torch.Tensor, list[numpy.ndarray], list[torch.Tensor]], необязательный) — Аудио или пакет аудио, подлежащий подготовке. Каждое аудио может быть массивом NumPy или тензором PyTorch. В случае массива NumPy/тензора PyTorch каждое аудио должно иметь форму (C, T), где C — количество каналов, а T — длина выборки аудио.
  • text (Union[str, list[str]], необязательный) — Последовательность или пакет последовательностей для кодирования. Каждая последовательность может быть строкой или списком строк (предварительно токенизированная строка). Если вы передаете предварительно токенизированный вход, установите is_split_into_words=True, чтобы избежать неоднозначности с пакетным вводом.
  • return_tensors (str или TensorType, необязательный) — Если задано, возвращает тензоры конкретного фреймворка. Допустимые значения:
    • 'pt': возвращает объекты torch.Tensor PyTorch.
    • 'np': возвращает объекты NumPy np.ndarray.
  • **kwargs (ProcessingKwargs, optional) — Дополнительные параметры обработки для каждой модальности (текст, изображения, видео, аудио). Специфичные для модели параметры перечислены выше; полный список поддерживаемых аргументов см. в классе TypedDict.

pad

< >

( *args**kwargs )

Параметры

  • input_features — Если первый аргумент — словарь, содержащий батч тензоров, либо присутствует аргумент input_features, он передаётся в Wav2Vec2FeatureExtractor.pad().
  • labels — Если присутствует аргумент label, он передаётся в PreTrainedTokenizer.pad().

Этот метод работает с батчами извлечённых признаков и/или токенизированного текста. Он передаёт все аргументы в Wav2Vec2FeatureExtractor.pad() и/или PreTrainedTokenizer.pad() в зависимости от модальности входных данных и возвращает их результаты. Если переданы обе модальности, вызываются Wav2Vec2FeatureExtractor.pad() и PreTrainedTokenizer.pad().

from_pretrained

< >

( pretrained_model_name_or_path: str | os.PathLikecache_dir: str | os.PathLike | None = Noneforce_download: bool = Falselocal_files_only: bool = Falsetoken: str | bool | None = Nonerevision: str = 'main'**kwargs )

Параметры

  • pretrained_model_name_or_path (str или os.PathLike) — Это может быть:
    • строка, model id предобученного feature_extractor, размещенного в репозитории модели на huggingface.co.
    • путь к каталогу, содержащему файл feature extractor, сохранённый с помощью метода save_pretrained(), например, ./my_model_directory/.
    • путь к сохранённому JSON-файлу экстрактора признаков, например, ./my_model_directory/preprocessor_config.json.
  • **kwargs — Дополнительные именованные аргументы, передаваемые как в from_pretrained(), так и в ~tokenization_utils_base.PreTrainedTokenizer.from_pretrained.

Создайте экземпляр процессора, связанного с предобученной моделью.

Этот метод класса просто вызывает метод from_pretrained() экстрактора признаков, метод ImageProcessingMixin процессора изображений и метод ~tokenization_utils_base.PreTrainedTokenizer.from_pretrained токенизатора. Подробности см. в строках документации указанных методов.

save_pretrained

< >

( save_directorypush_to_hub: bool = False**kwargs )

Параметры

  • save_directory (str или os.PathLike) — Каталог, в котором будут сохранены JSON-файл feature extractor и файлы токенизатора (каталог будет создан, если он не существует).
  • push_to_hub (bool, необязательный, по умолчанию False) — Указывает, следует ли после сохранения отправить вашу модель в Hugging Face model hub. С помощью repo_id можно указать репозиторий, в который нужно отправить модель (по умолчанию используется имя save_directory в вашем пространстве имён).
  • kwargs (dict[str, Any], необязательный) — Дополнительные именованные аргументы, передаваемые в метод push_to_hub().

Сохраняет атрибуты этого процессора (извлекатель признаков, токенизатор…) в указанную директорию, чтобы его можно было загрузить повторно с помощью метода from_pretrained().

Этот метод класса просто вызывает save_pretrained() и save_pretrained(). Подробности см. в строках документации методов, описанных выше.

batch_decode

< >

( *args**kwargs )

Этот метод передаёт все свои аргументы в batch_decode() класса PreTrainedTokenizer. Подробности см. в docstring этого метода.

decode

< >

( *args**kwargs )

Этот метод передаёт все свои аргументы в decode() класса PreTrainedTokenizer. Подробности см. в docstring этого метода.

Wav2Vec2ProcessorWithLM

класс transformers.Wav2Vec2ProcessorWithLM

< >

( feature_extractor: FeatureExtractionMixintokenizer: PreTrainedTokenizerBasedecoder: BeamSearchDecoderCTC )

Параметры

  • feature_extractor (feature_extractor_class) — Обязательный входной параметр: экстрактор признаков.
  • tokenizer (tokenizer_class) — Токенизатор является обязательным входным параметром.
  • decoder (BeamSearchDecoderCTC) — экземпляр pyctcdecode.BeamSearchDecoderCTC. Декодер является обязательным входным параметром.

Создаёт Wav2Vec2ProcessorWithLM, который объединяет экстрактор признаков и токенизатор в единый процессор.

Wav2Vec2ProcessorWithLM предоставляет все возможности feature_extractor_class и tokenizer_class. Подробнее см. в ~feature_extractor_class и ~tokenizer_class.

__call__

< >

( *args**kwargs )

Параметры

  • return_tensors (str или TensorType, необязательный) — Если задано, возвращает тензоры конкретного фреймворка. Допустимые значения:
    • 'pt': возвращает объекты torch.Tensor PyTorch.
    • 'np': возвращает объекты NumPy np.ndarray.

pad

< >

( *args**kwargs )

При использовании в обычном режиме этот метод передаёт все свои аргументы в ~FeatureExtractionMixin.pad экстрактора признаков и возвращает его результат. Если используется в контексте ~Wav2Vec2ProcessorWithLM.as_target_processor, этот метод передаёт все свои аргументы в pad() Wav2Vec2CTCTokenizer. Подробности см. в строках документации вышеуказанных двух методов.

from_pretrained

< >

( pretrained_model_name_or_path**kwargs )

Параметры

  • pretrained_model_name_or_path (str или os.PathLike) — Это может быть:
    • строка, model id предобученного feature_extractor, размещенного в репозитории модели на huggingface.co.
    • путь к каталогу, содержащему файл feature extractor, сохранённый с помощью метода save_pretrained(), например, ./my_model_directory/.
    • путь к сохранённому JSON-файлу экстрактора признаков, например, ./my_model_directory/preprocessor_config.json.
  • **kwargs — Дополнительные именованные аргументы, передаваемые как в SequenceFeatureExtractor, так и в PreTrainedTokenizer

Создайте экземпляр Wav2Vec2ProcessorWithLM на основе предобученного процессора Wav2Vec2.

This class method is simply calling the feature extractor’s from_pretrained(), Wav2Vec2CTCTokenizer’s from_pretrained(), and pyctcdecode.BeamSearchDecoderCTC.load_from_hf_hub.

Подробнее смотрите в строках документации (docstrings) методов, описанных выше.

save_pretrained

< >

( save_directory )

batch_decode

< >

( logits: ndarraypool: multiprocessing.pool.Pool | None = Nonenum_processes: int | None = Nonebeam_width: int | None = Nonebeam_prune_logp: float | None = Nonetoken_min_logp: float | None = Nonehotwords: collections.abc.Iterable[str] | None = Nonehotword_weight: float | None = Nonealpha: float | None = Nonebeta: float | None = Noneunk_score_offset: float | None = Nonelm_score_boundary: bool | None = Noneoutput_word_offsets: bool = Falsen_best: int = 1 )

Параметры

  • logits (np.ndarray) — Вектор logits на выходе модели, представляющий логарифмические вероятности для каждого токена.
  • pool (multiprocessing.Pool, необязательный) — Необязательный пул, управляемый пользователем. Если не задан, будет автоматически создан и закрыт. Пул должен быть создан после Wav2Vec2ProcessorWithLM. В противном случае LM не будет доступен для дочерних процессов пула.

    В настоящее время можно использовать только пулы, созданные с контекстом ‘fork’. Если будет передан пул ‘spawn’, он будет проигнорирован, а вместо него будет использовано последовательное декодирование.

  • num_processes (int, необязательный) — Если pool не задан, количество процессов, на которых функция должна выполняться параллельно. По умолчанию равно числу доступных CPU.
  • beam_width (int, необязательный) — Максимальное количество лучей на каждом шаге декодирования. По умолчанию используется DEFAULT_BEAM_WIDTH из pyctcdecode.
  • beam_prune_logp (int, необязательный) — Лучи, значительно хуже лучшего луча, будут отброшены. По умолчанию используется DEFAULT_PRUNE_LOGP из pyctcdecode.
  • token_min_logp (int, необязательный) — Токены с logp ниже этого значения пропускаются, если они не являются argmax кадра. По умолчанию используется DEFAULT_MIN_TOKEN_LOGP из pyctcdecode.
  • hotwords (list[str], необязательный) — Список слов с повышенным приоритетом, которые могут отсутствовать в словаре LM
  • hotword_weight (int, необязательный) — Коэффициент важности для горячих слов. По умолчанию используется DEFAULT_HOTWORD_WEIGHT из pyctcdecode.
  • alpha (float, необязательный) — Вес для языковой модели при поверхностном слиянии
  • beta (float, необязательный) — Вес для корректировки оценки длины при подсчёте
  • unk_score_offset (float, необязательный) — Величина смещения лог-оценки для неизвестных токенов
  • lm_score_boundary (bool, необязательный) — Указывает, следует ли kenlm учитывать границы при оценке
  • output_word_offsets (bool, необязательный, по умолчанию False) — Указывает, следует ли выводить смещения слов. Смещения слов можно использовать вместе с частотой выборки и коэффициентом понижающей дискретизации модели для вычисления временных меток распознанных слов.
  • n_best (int, необязательный, по умолчанию 1) — Количество лучших гипотез, которые нужно вернуть. Если n_best больше 1, возвращаемое значение text будет списком списков строк, logit_score будет списком списков чисел с плавающей точкой, а lm_score будет списком списков чисел с плавающей точкой, где длина внешнего списка соответствует размеру батча, а длина внутреннего списка — количеству возвращаемых гипотез. Значение должно быть >= 1.

    Обратите внимание на пример использования decode(), чтобы лучше понять, как применять output_word_offsets. batch_decode() работает аналогично, но с пакетным выводом.

Декодирование батча выходных логитов в аудиотранскрипцию с поддержкой языковой модели.

Эта функция использует модуль multiprocessing Python. В настоящее время multiprocessing доступен только в системах Unix (см. эту проблему).

Если вы декодируете несколько батчей, рассмотрите возможность создания Pool и передачи его в batch_decode. В противном случае batch_decode будет работать очень медленно, так как при каждом вызове будет создаваться новый Pool. Пример использования приведён ниже.

Пример: См. Декодирование нескольких аудиозаписей.

decode

< >

( logits: ndarraybeam_width: int | None = Nonebeam_prune_logp: float | None = Nonetoken_min_logp: float | None = Nonehotwords: collections.abc.Iterable[str] | None = Nonehotword_weight: float | None = Nonealpha: float | None = Nonebeta: float | None = Noneunk_score_offset: float | None = Nonelm_score_boundary: bool | None = Noneoutput_word_offsets: bool = Falsen_best: int = 1 )

Параметры

  • logits (np.ndarray) — Вектор logits на выходе модели, представляющий логарифмические вероятности для каждого токена.
  • beam_width (int, необязательный) — Максимальное количество лучей на каждом шаге декодирования. По умолчанию используется DEFAULT_BEAM_WIDTH из pyctcdecode.
  • beam_prune_logp (int, необязательный) — Порог для отсечения лучей, у которых log-prob меньше, чем best_beam_logp + beam_prune_logp. Значение должно быть <= 0. По умолчанию используется DEFAULT_PRUNE_LOGP из pyctcdecode.
  • token_min_logp (int, необязательный) — Токены с log-prob ниже token_min_logp пропускаются, если они не имеют максимального log-prob для высказывания. По умолчанию используется DEFAULT_MIN_TOKEN_LOGP из pyctcdecode.
  • hotwords (list[str], необязательный) — Список слов, имеющих особое значение и отсутствующих в словаре LM, например [“huggingface”]
  • hotword_weight (int, необязательный) — Множитель веса, повышающий оценки для ключевых слов. По умолчанию используется DEFAULT_HOTWORD_WEIGHT из pyctcdecode.
  • alpha (float, необязательный) — Вес для языковой модели при поверхностном слиянии
  • beta (float, необязательный) — Вес для корректировки оценки длины при подсчёте
  • unk_score_offset (float, необязательный) — Величина смещения лог-оценки для неизвестных токенов
  • lm_score_boundary (bool, необязательный) — Указывает, следует ли kenlm учитывать границы при оценке
  • output_word_offsets (bool, необязательный, по умолчанию False) — Указывает, следует ли выводить смещения слов. Смещения слов можно использовать вместе с частотой выборки и коэффициентом понижающей дискретизации модели для вычисления временных меток распознанных слов.
  • n_best (int, необязательный, по умолчанию 1) — Количество лучших гипотез, которые нужно вернуть. Если n_best больше 1, возвращаемое значение text будет списком строк, logit_score будет списком чисел с плавающей точкой, а lm_score будет списком чисел с плавающей точкой, где длина этих списков соответствует количеству возвращаемых гипотез. Значение должно быть >= 1.

    Обратите внимание на пример ниже, чтобы лучше понять, как использовать output_word_offsets.

Декодирование выходных логитов в аудиотранскрипцию с поддержкой языковой модели.

Пример:

>>> # Let's see how to retrieve time steps for a model
>>> from transformers import AutoTokenizer, AutoProcessor, AutoModelForCTC
>>> from datasets import load_dataset
>>> import datasets
>>> import torch

>>> # import model, feature extractor, tokenizer
>>> model = AutoModelForCTC.from_pretrained("patrickvonplaten/wav2vec2-base-100h-with-lm")
>>> processor = AutoProcessor.from_pretrained("patrickvonplaten/wav2vec2-base-100h-with-lm")

>>> # load first sample of English common_voice
>>> dataset = load_dataset("mozilla-foundation/common_voice_11_0", "en", split="train", streaming=True)
>>> dataset = dataset.cast_column("audio", datasets.Audio(sampling_rate=16_000))
>>> dataset_iter = iter(dataset)
>>> sample = next(dataset_iter)

>>> # forward sample through model to get greedily predicted transcription ids
>>> input_values = processor(sample["audio"]["array"], return_tensors="pt").input_values
>>> with torch.no_grad():
...     logits = model(input_values).logits[0].cpu().numpy()

>>> # retrieve word stamps (analogous commands for `output_char_offsets`)
>>> outputs = processor.decode(logits, output_word_offsets=True)
>>> # compute `time_offset` in seconds as product of downsampling ratio and sampling_rate
>>> time_offset = model.config.inputs_to_logits_ratio / processor.feature_extractor.sampling_rate

>>> word_offsets = [
...     {
...         "word": d["word"],
...         "start_time": round(d["start_offset"] * time_offset, 2),
...         "end_time": round(d["end_offset"] * time_offset, 2),
...     }
...     for d in outputs.word_offsets
... ]
>>> # compare word offsets with audio `en_train_0/common_voice_en_19121553.mp3` online on the dataset viewer:
>>> # https://huggingface.co/datasets/mozilla-foundation/common_voice_11_0/viewer/en
>>> word_offsets[:4]
[{'word': 'THE', 'start_time': 0.68, 'end_time': 0.78}, {'word': 'TRACK', 'start_time': 0.88, 'end_time': 1.1}, {'word': 'APPEARS', 'start_time': 1.18, 'end_time': 1.66}, {'word': 'ON', 'start_time': 1.86, 'end_time': 1.92}]

Декодирование нескольких аудиозаписей

Если вы планируете декодировать несколько батчей аудио, следует рассмотреть использование batch_decode() и передать в него созданный экземпляр multiprocessing.Pool. В противном случае производительность batch_decode() будет ниже, чем при вызове decode() для каждого аудио по отдельности, так как внутри для каждого вызова создаётся новый экземпляр Pool. См. пример ниже:

# Let's see how to use a user-managed pool for batch decoding multiple audios
from multiprocessing import get_context

import datasets
import torch
from datasets import load_dataset

from transformers import AutoModelForCTC, AutoProcessor


# import model, feature extractor, tokenizer
model = AutoModelForCTC.from_pretrained("patrickvonplaten/wav2vec2-base-100h-with-lm", device_map="auto")
processor = AutoProcessor.from_pretrained("patrickvonplaten/wav2vec2-base-100h-with-lm")

# load example dataset
dataset = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
dataset = dataset.cast_column("audio", datasets.Audio(sampling_rate=16_000))


def map_to_array(example):
    example["speech"] = example["audio"]["array"]
    return example


# prepare speech data for batch inference
dataset = dataset.map(map_to_array, remove_columns=["audio"])


def map_to_pred(batch, pool):
    inputs = processor(batch["speech"], sampling_rate=16_000, padding=True, return_tensors="pt").to(model.device)
    inputs = {k: v.to(model.device) for k, v in inputs.items()}

    with torch.no_grad():
        logits = model(**inputs).logits

    transcription = processor.batch_decode(logits.cpu().numpy(), pool).text
    batch["transcription"] = transcription
    return batch


# note: pool should be instantiated *after* `Wav2Vec2ProcessorWithLM`.
#       otherwise, the LM won't be available to the pool's sub-processes
# select number of processes and batch_size based on number of CPU cores available and on dataset size
with get_context("fork").Pool(processes=2) as pool:
    result = dataset.map(
        map_to_pred, batched=True, batch_size=2, fn_kwargs={"pool": pool}, remove_columns=["speech"]
    )

result["transcription"][:2]
['MISTER QUILTER IS THE APOSTLE OF THE MIDDLE CLASSES AND WE ARE GLAD TO WELCOME HIS GOSPEL', "NOR IS MISTER COULTER'S MANNER LESS INTERESTING THAN HIS MATTER"]

Специфические для Wav2Vec2 выходные данные

класс transformers.models.wav2vec2_with_lm.processing_wav2vec2_with_lm.Wav2Vec2DecoderWithLMOutput

< >

( text: list[list[str]] | list[str] | strlogit_score: list[list[float]] | list[float] | float = Nonelm_score: list[list[float]] | list[float] | float = Noneword_offsets: list[list[list[dict[str, int | str]]]] | list[list[dict[str, int | str]]] | list[dict[str, int | str]] = None )

Параметры

  • text (список str или str) — Декодированные логиты в текстовом формате. Обычно это расшифровка речи.
  • logit_score (список float или float) — Суммарная логит-оценка лучей, связанных с сгенерированным текстом.
  • lm_score (список float) — Суммарный lm_score для лучей, связанных с сгенерированным текстом.
  • word_offsets (список list[dict[str, Union[int, str]]] или list[dict[str, Union[int, str]]]) — Смещения декодированных слов. В сочетании с частотой дискретизации и коэффициентом понижающей дискретизации модели смещения слов можно использовать для вычисления временных меток для каждого слова.

Тип выходных данных Wav2Vec2DecoderWithLM, с транскрипцией.

класс transformers.modeling_outputs.Wav2Vec2BaseModelOutput

< >

( last_hidden_state: typing.Optional[torch.Tensor] = Noneextract_features: typing.Optional[torch.Tensor] = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = None )

Параметры

  • last_hidden_state (torch.Tensor формы (batch_size, sequence_length, hidden_size)) — Последовательность скрытых состояний на выходе последнего слоя модели.
  • extract_features (torch.Tensor формы (batch_size, sequence_length, conv_dim[-1])) — Последовательность извлечённых векторов признаков последнего свёрточного слоя модели.
  • hidden_states (tuple(torch.Tensor), необязательный, возвращается, если output_hidden_states=True передан или если config.output_hidden_states=True) — Кортеж torch.Tensor (с формой (batch_size, sequence_length, hidden_size).

    Скрытые состояния модели на выходе каждого слоя, а также выходные значения начального слоя встраиваний.

  • attentions (tuple(torch.Tensor), необязательный, возвращается, если передано output_attentions=True или если config.output_attentions=True) — Кортеж torch.Tensor (по одному для каждого слоя) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

Базовый класс для моделей, обученных с использованием функции потерь Wav2Vec2.

класс transformers.models.wav2vec2.modeling_wav2vec2.Wav2Vec2ForPreTrainingOutput

< >

( loss: typing.Optional[torch.Tensor] = Noneprojected_states: typing.Optional[torch.Tensor] = Noneprojected_quantized_states: typing.Optional[torch.Tensor] = Nonecodevector_perplexity: typing.Optional[torch.Tensor] = Nonehidden_states: tuple[torch.Tensor] | None = Noneattentions: tuple[torch.Tensor] | None = Nonecontrastive_loss: typing.Optional[torch.Tensor] = Nonediversity_loss: typing.Optional[torch.Tensor] = None )

Параметры

  • loss (*optional*, возвращается при передаче sample_negative_indices, torch.Tensor формы (1,)) — Суммарная потеря, равная сумме контрастивной потери (L_m) и потери разнообразия (L_d), как указано в официальной статье.
  • projected_states (torch.Tensor формы (batch_size, sequence_length, config.proj_codevector_dim)) — Скрытые состояния модели, спроецированные в config.proj_codevector_dim, которые можно использовать для предсказания замаскированных спроецированных квантованных состояний.
  • projected_quantized_states (torch.Tensor формы (batch_size, sequence_length, config.proj_codevector_dim)) — Квантованные извлечённые векторы признаков, спроецированные в config.proj_codevector_dim, представляющие положительные целевые векторы для контрастного потерь.
  • codevector_perplexity (torch.Tensor формы (1,)) — Переплексия распределения codevector, используемая для измерения разнообразия кодовой книги.
  • hidden_states (tuple[torch.Tensor], необязательный, возвращается, если output_hidden_states=True передан или если config.output_hidden_states=True) — кортеж torch.Tensor (по одному для вывода слоя встраиваний, если модель имеет слой встраиваний, + по одному для вывода каждого слоя) формы (batch_size, sequence_length, hidden_size).

    Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.

  • attentions (tuple[torch.Tensor], необязательный, возвращается, если output_attentions=True передан или если config.output_attentions=True) — Кортеж torch.Tensor (по одному для каждого слоя) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

  • contrastive_loss (*optional*, возвращается при передаче sample_negative_indices, torch.Tensor формы (1,)) — Контрастивная функция потерь (L_m), как описано в официальной статье.
  • diversity_loss (*optional*, возвращается при передаче sample_negative_indices, torch.Tensor формы (1,)) — Потери разнообразия (L_d), как описано в официальной статье.

Тип выходных данных Wav2Vec2ForPreTraining, с возможными скрытыми состояниями и вниманиями.

Wav2Vec2Model

класс transformers.Wav2Vec2Model

< >

( config: Wav2Vec2Config )

Параметры

  • config (Wav2Vec2Config) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.

Модель Wav2Vec2 без специализированного верхнего слоя, выводящая необработанные скрытые состояния.

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

forward

< >

( input_values: typing.Optional[torch.Tensor]attention_mask: typing.Optional[torch.Tensor] = Nonemask_time_indices: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Wav2Vec2BaseModelOutput or tuple(torch.Tensor)

Параметры

  • input_values (torch.Tensor формы (batch_size, sequence_length), необязательный) — Значения типа float для входной необработанной звуковой волны. Значения можно получить, загрузив аудиофайл .flac или .wav в массив типа list[float], numpy.ndarray или torch.Tensor, например, с помощью библиотеки torchcodec (pip install torchcodec) или библиотеки soundfile (pip install soundfile). Для подготовки массива в input_values следует использовать AutoProcessor для выравнивания (padding) и преобразования в тензор типа torch.Tensor. Подробности см. в Wav2Vec2Processor.call().
  • attention_mask (torch.Tensor формы (batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

    Что такое маски внимания?

  • mask_time_indices (torch.BoolTensor формы (batch_size, sequence_length), необязательный) — Индексы для маскирования извлечённых признаков для контрастивной функции потерь. В режиме обучения модель учится предсказывать маскированные извлечённые признаки в пространстве config.proj_codevector_dim.

Возвращает

Wav2Vec2BaseModelOutput или tuple(torch.Tensor)

Объект Wav2Vec2BaseModelOutput или кортеж torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (Wav2Vec2Config) и входных данных.

Метод forward модели Wav2Vec2Model переопределяет специальный метод __call__.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.

  • last_hidden_state (torch.Tensor формы (batch_size, sequence_length, hidden_size)) — Последовательность скрытых состояний на выходе последнего слоя модели.

  • extract_features (torch.Tensor формы (batch_size, sequence_length, conv_dim[-1])) — Последовательность векторов признаков, извлечённых из последнего свёрточного слоя модели.

  • hidden_states (tuple(torch.Tensor), необязательный, возвращается при передаче output_hidden_states=True или когда config.output_hidden_states=True) — кортеж из torch.Tensor (один для вывода эмбеддингов + один для вывода каждого слоя) с формой (batch_size, sequence_length, hidden_size).

    Скрытые состояния модели на выходе каждого слоя, а также выходные значения начального слоя встраиваний.

  • attentions (tuple(torch.Tensor), необязательный, возвращается при передаче output_attentions=True или при config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

Wav2Vec2ForCTC

класс transformers.Wav2Vec2ForCTC

< >

( config: Wav2Vec2Configtarget_lang: str | None = None )

Параметры

  • config (Wav2Vec2Config) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
  • target_lang (str, необязательный) — Идентификатор языка весов адаптера. Веса адаптера хранятся в формате adapter..safetensors или adapter..bin. Актуально только при использовании экземпляра Wav2Vec2ForCTC с адаптерами. По умолчанию используется ‘eng’.

Модель Wav2Vec2 с головкой language modeling для Connectionist Temporal Classification (CTC).

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

forward

< >

( input_values: typing.Optional[torch.Tensor]attention_mask: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → CausalLMOutput or tuple(torch.Tensor)

Параметры

  • input_values (torch.Tensor формы (batch_size, sequence_length), необязательный) — Значения типа float для входной необработанной звуковой волны. Значения можно получить, загрузив аудиофайл .flac или .wav в массив типа list[float], numpy.ndarray или torch.Tensor, например, с помощью библиотеки torchcodec (pip install torchcodec) или библиотеки soundfile (pip install soundfile). Для подготовки массива в input_values следует использовать AutoProcessor для выравнивания (padding) и преобразования в тензор типа torch.Tensor. Подробности см. в Wav2Vec2Processor.call().
  • attention_mask (torch.Tensor формы (batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

    Что такое маски внимания?

  • labels (torch.LongTensor формы (batch_size, target_length), необязательный) — Метки для связного временного классификации (CTC). Обратите внимание, что target_length должен быть меньше или равен длине последовательности выходных логитов. Индексы выбираются из диапазона [-100, 0, ..., config.vocab_size - 1]. Все метки, установленные в -100, игнорируются (маскируются); функция потерь вычисляется только для меток из диапазона [0, ..., config.vocab_size - 1].

Возвращает

CausalLMOutput или tuple(torch.Tensor)

Объект CausalLMOutput или кортеж из torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (Wav2Vec2Config) и входных данных.

Метод forward класса Wav2Vec2ForCTC переопределяет специальный метод __call__.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.

  • loss (torch.Tensor формы (1,), необязательный, возвращается, если задан labels) — Потери языковой модели (для предсказания следующего токена).

  • logits (torch.Tensor формы (batch_size, sequence_length, config.vocab_size)) — Оценки предсказаний языковой модели (оценки для каждого токена словаря до применения SoftMax).

  • hidden_states (tuple(torch.Tensor), optional, возвращается, если передано output_hidden_states=True или если config.output_hidden_states=True) — кортеж из torch.Tensor (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы (batch_size, sequence_length, hidden_size).

    Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.

  • attentions (tuple(torch.Tensor), необязательный, возвращается при передаче output_attentions=True или при config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

Пример:

>>> from transformers import AutoProcessor, Wav2Vec2ForCTC
>>> from datasets import load_dataset
>>> import torch

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate

>>> processor = AutoProcessor.from_pretrained("facebook/wav2vec2-base-960h")
>>> model = Wav2Vec2ForCTC.from_pretrained("facebook/wav2vec2-base-960h")

>>> # audio file is decoded on the fly
>>> inputs = processor(dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")
>>> with torch.no_grad():
...     logits = model(**inputs).logits
>>> predicted_ids = torch.argmax(logits, dim=-1)

>>> # transcribe speech
>>> transcription = processor.batch_decode(predicted_ids)
>>> transcription[0]
...

>>> inputs["labels"] = processor(text=dataset[0]["text"], return_tensors="pt").input_ids

>>> # compute loss
>>> loss = model(**inputs).loss
>>> round(loss.item(), 2)
...

load_adapter

< >

( target_lang: strforce_load = True**kwargs )

Параметры

  • target_lang (str) — Должно быть идентификатором языка существующих весов адаптера. Веса адаптера хранятся в формате adapter..safetensors или adapter..bin
  • force_load (bool, по умолчанию True) — Загружать ли веса, даже если target_lang совпадает с self.target_lang.
  • cache_dir (Union[str, os.PathLike], необязательный) — Путь к каталогу, в котором следует кэшировать загруженную конфигурацию предобученной модели, если стандартный кэш не используется.
  • force_download (bool, необязательный, по умолчанию False) — Следует ли принудительно (пере)скачивать веса модели и файлы конфигурации, игнорируя кэшированные версии, если они существуют.
  • proxies (dict[str, str], необязательный) — Словарь прокси-серверов, используемых по протоколу или конечной точке, например, {'http': 'foo.bar:3128', 'http://hostname': 'foo.bar:4012'}. Прокси применяются при каждом запросе.
  • local_files_only(bool, optional, по умолчанию False) — Определяет, следует ли использовать только локальные файлы (то есть не пытаться скачать модель).
  • token (str или bool, необязательный) — Токен, используемый в качестве HTTP bearer-авторизации для удалённых файлов. Если указано True или параметр не задан, будет использован токен, сгенерированный при выполнении hf auth login (хранится в ~/.huggingface).
  • revision (str, необязательный, по умолчанию "main") — Конкретная версия модели, которую нужно использовать. Это может быть имя ветки, имя тега или идентификатор коммита, так как для хранения моделей и других артефактов на huggingface.co используется система на базе git, поэтому revision может быть любым идентификатором, разрешенным git.

    Чтобы протестировать pull request, который вы создали на Hub, вы можете передать revision="refs/pr/<pr_number>".

  • mirror (str, необязательный) — Источник-зеркало для ускорения загрузок в Китае. Если вы находитесь в Китае и испытываете проблемы с доступом, вы можете установить этот параметр для их решения. Обратите внимание, что мы не гарантируем актуальность или безопасность. Подробности см. на сайте зеркала.

Загрузите модель языкового адаптера из предварительно обученной модели адаптера.

Активируйте специальный режим “offline-mode”, чтобы использовать этот метод в среде с файрволом.

Примеры:

>>> from transformers import Wav2Vec2ForCTC, AutoProcessor

>>> ckpt = "facebook/mms-1b-all"
>>> processor = AutoProcessor.from_pretrained(ckpt)
>>> model = Wav2Vec2ForCTC.from_pretrained(ckpt, target_lang="eng")
>>> # set specific language
>>> processor.tokenizer.set_target_lang("spa")
>>> model.load_adapter("spa")

Wav2Vec2ForSequenceClassification

класс transformers.Wav2Vec2ForSequenceClassification

< >

( config: Wav2Vec2Config )

Параметры

  • config (Wav2Vec2Config) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.

Модель Wav2Vec2 с головой последовательной классификации (линейный слой поверх агрегированного вывода) для задач, таких как SUPERB Keyword Spotting.

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

forward

< >

( input_values: typing.Optional[torch.Tensor]attention_mask: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → SequenceClassifierOutput or tuple(torch.Tensor)

Параметры

  • input_values (torch.Tensor формы (batch_size, sequence_length)) — Значения типа float для входной необработанной звуковой волны. Значения можно получить, загрузив аудиофайл .flac или .wav в массив типа list[float], numpy.ndarray или torch.Tensor, например, с помощью библиотеки torchcodec (pip install torchcodec) или библиотеки soundfile (pip install soundfile). Чтобы подготовить массив для input_values, следует использовать AutoProcessor для выравнивания (padding) и преобразования в тензор типа torch.Tensor. Подробности см. в Wav2Vec2Processor.call().
  • attention_mask (torch.Tensor формы (batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

    Что такое маски внимания?

  • labels (torch.LongTensor формы (batch_size,), необязательный) — Метки для вычисления функции потерь классификации/регрессии последовательности. Индексы должны находиться в диапазоне [0, ..., config.num_labels - 1]. Если config.num_labels == 1, вычисляется функция потерь регрессии (среднеквадратичная ошибка), если config.num_labels > 1, вычисляется функция потерь классификации (кросс-энтропия).

Возвращает

SequenceClassifierOutput или tuple(torch.Tensor)

Объект SequenceClassifierOutput или кортеж из torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (Wav2Vec2Config) и входных данных.

Метод forward класса Wav2Vec2ForSequenceClassification переопределяет специальный метод __call__.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.

  • loss (torch.Tensor формы (1,), необязательный, возвращается, если задан labels) — Потери классификации (или регрессии, если config.num_labels==1).

  • logits (torch.Tensor формы (batch_size, config.num_labels)) — Оценки для классификации (или регрессии, если config.num_labels==1) до применения SoftMax.

  • hidden_states (tuple(torch.Tensor), optional, возвращается, если передано output_hidden_states=True или если config.output_hidden_states=True) — кортеж из torch.Tensor (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы (batch_size, sequence_length, hidden_size).

    Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.

  • attentions (tuple(torch.Tensor), необязательный, возвращается при передаче output_attentions=True или при config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

Пример классификации с одной меткой:

>>> import torch
>>> from transformers import AutoTokenizer, Wav2Vec2ForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/wav2vec2-base-960h")
>>> model = Wav2Vec2ForSequenceClassification.from_pretrained("facebook/wav2vec2-base-960h")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_id = logits.argmax().item()
>>> model.config.id2label[predicted_class_id]
...

>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = Wav2Vec2ForSequenceClassification.from_pretrained("facebook/wav2vec2-base-960h", num_labels=num_labels)

>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...

Пример многоклассовой классификации:

>>> import torch
>>> from transformers import AutoTokenizer, Wav2Vec2ForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/wav2vec2-base-960h")
>>> model = Wav2Vec2ForSequenceClassification.from_pretrained("facebook/wav2vec2-base-960h", problem_type="multi_label_classification")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_ids = torch.arange(0, logits.shape[-1])[torch.sigmoid(logits).squeeze(dim=0) > 0.5]

>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = Wav2Vec2ForSequenceClassification.from_pretrained(
...     "facebook/wav2vec2-base-960h", num_labels=num_labels, problem_type="multi_label_classification"
... )

>>> labels = torch.sum(
...     torch.nn.functional.one_hot(predicted_class_ids[None, :].clone(), num_classes=num_labels), dim=1
... ).to(torch.float)
>>> loss = model(**inputs, labels=labels).loss

Wav2Vec2ForAudioFrameClassification

класс transformers.Wav2Vec2ForAudioFrameClassification

< >

( config: Wav2Vec2Config )

Параметры

  • config (Wav2Vec2Config) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.

Модель Wav2Vec2 с головной частью для классификации кадров, предназначенной для таких задач, как диаризация говорящих.

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

forward

< >

( input_values: typing.Optional[torch.Tensor]attention_mask: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → TokenClassifierOutput or tuple(torch.Tensor)

Параметры

  • input_values (torch.Tensor формы (batch_size, sequence_length)) — Значения типа float для входной необработанной звуковой волны. Значения можно получить, загрузив аудиофайл .flac или .wav в массив типа list[float], numpy.ndarray или torch.Tensor, например, с помощью библиотеки torchcodec (pip install torchcodec) или библиотеки soundfile (pip install soundfile). Чтобы подготовить массив для input_values, следует использовать AutoProcessor для выравнивания (padding) и преобразования в тензор типа torch.Tensor. Подробности см. в Wav2Vec2Processor.call().
  • attention_mask (torch.Tensor формы (batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

    Что такое маски внимания?

  • labels (torch.LongTensor формы (batch_size,), необязательный) — Метки для вычисления функции потерь классификации/регрессии последовательности. Индексы должны находиться в диапазоне [0, ..., config.num_labels - 1]. Если config.num_labels == 1, вычисляется функция потерь регрессии (среднеквадратичная ошибка), если config.num_labels > 1, вычисляется функция потерь классификации (кросс-энтропия).

Возвращает

TokenClassifierOutput или tuple(torch.Tensor)

Объект TokenClassifierOutput или кортеж из torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (Wav2Vec2Config) и входных данных.

Метод forward класса Wav2Vec2ForAudioFrameClassification переопределяет специальный метод __call__.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.

  • loss (torch.Tensor формы (1,), необязательный, возвращается, если задан labels) — Потери классификации.

  • logits (torch.Tensor формы (batch_size, sequence_length, config.num_labels)) — Оценки классификации (до SoftMax).

  • hidden_states (tuple(torch.Tensor), optional, возвращается, если передано output_hidden_states=True или если config.output_hidden_states=True) — кортеж из torch.Tensor (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы (batch_size, sequence_length, hidden_size).

    Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.

  • attentions (tuple(torch.Tensor), необязательный, возвращается при передаче output_attentions=True или при config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

Пример:

>>> from transformers import AutoFeatureExtractor, Wav2Vec2ForAudioFrameClassification
>>> from datasets import load_dataset
>>> import torch

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate

>>> feature_extractor = AutoFeatureExtractor.from_pretrained("facebook/wav2vec2-base-960h")
>>> model = Wav2Vec2ForAudioFrameClassification.from_pretrained("facebook/wav2vec2-base-960h")

>>> # audio file is decoded on the fly
>>> inputs = feature_extractor(dataset[0]["audio"]["array"], return_tensors="pt", sampling_rate=sampling_rate)
>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> probabilities = torch.sigmoid(logits[0])
>>> # labels is a one-hot array of shape (num_frames, num_speakers)
>>> labels = (probabilities > 0.5).long()
>>> labels[0].tolist()
...

Wav2Vec2ForXVector

класс transformers.Wav2Vec2ForXVector

< >

( config: Wav2Vec2Config )

Параметры

  • config (Wav2Vec2Config) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.

Модель Wav2Vec2 с головой извлечения признаков XVector для задач, таких как верификация говорящего.

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

forward

< >

( input_values: typing.Optional[torch.Tensor]attention_mask: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → XVectorOutput or tuple(torch.Tensor)

Параметры

  • input_values (torch.Tensor формы (batch_size, sequence_length)) — Значения типа float для входной необработанной звуковой волны. Значения можно получить, загрузив аудиофайл .flac или .wav в массив типа list[float], numpy.ndarray или torch.Tensor, например, с помощью библиотеки torchcodec (pip install torchcodec) или библиотеки soundfile (pip install soundfile). Чтобы подготовить массив для input_values, следует использовать AutoProcessor для выравнивания (padding) и преобразования в тензор типа torch.Tensor. Подробности см. в Wav2Vec2Processor.call().
  • attention_mask (torch.Tensor формы (batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

    Что такое маски внимания?

  • labels (torch.LongTensor формы (batch_size,), необязательный) — Метки для вычисления функции потерь классификации/регрессии последовательности. Индексы должны находиться в диапазоне [0, ..., config.num_labels - 1]. Если config.num_labels == 1, вычисляется функция потерь регрессии (среднеквадратичная ошибка), если config.num_labels > 1, вычисляется функция потерь классификации (кросс-энтропия).

Возвращает

XVectorOutput или tuple(torch.Tensor)

Объект XVectorOutput или кортеж torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (Wav2Vec2Config) и входных данных.

Метод Wav2Vec2ForXVector forward переопределяет специальный метод __call__.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.

  • loss (torch.Tensor формы (1,), необязательный, возвращается, если задан labels) — Потери классификации.

  • logits (torch.Tensor формы (batch_size, config.xvector_output_dim)) — Скрытые состояния классификации до AMSoftmax.

  • embeddings (torch.Tensor формы (batch_size, config.xvector_output_dim)) — Векторные представления реплик, используемые для поиска на основе векторного сходства.

  • hidden_states (tuple(torch.Tensor), необязательный, возвращается при передаче output_hidden_states=True или когда config.output_hidden_states=True) — кортеж из torch.Tensor (один для вывода эмбеддингов + один для вывода каждого слоя) с формой (batch_size, sequence_length, hidden_size).

    Скрытые состояния модели на выходе каждого слоя, а также выходные значения начального слоя встраиваний.

  • attentions (tuple(torch.Tensor), необязательный, возвращается при передаче output_attentions=True или при config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

Пример:

>>> from transformers import AutoFeatureExtractor, Wav2Vec2ForXVector
>>> from datasets import load_dataset
>>> import torch

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate

>>> feature_extractor = AutoFeatureExtractor.from_pretrained("facebook/wav2vec2-base-960h")
>>> model = Wav2Vec2ForXVector.from_pretrained("facebook/wav2vec2-base-960h")

>>> # audio file is decoded on the fly
>>> inputs = feature_extractor(
...     [d["array"] for d in dataset[:2]["audio"]], sampling_rate=sampling_rate, return_tensors="pt", padding=True
... )
>>> with torch.no_grad():
...     embeddings = model(**inputs).embeddings

>>> embeddings = torch.nn.functional.normalize(embeddings, dim=-1).cpu()

>>> # the resulting embeddings can be used for cosine similarity-based retrieval
>>> cosine_sim = torch.nn.CosineSimilarity(dim=-1)
>>> similarity = cosine_sim(embeddings[0], embeddings[1])
>>> threshold = 0.7  # the optimal threshold is dataset-dependent
>>> if similarity < threshold:
...     print("Speakers are not the same!")
>>> round(similarity.item(), 2)
...

Wav2Vec2ForPreTraining

класс transformers.Wav2Vec2ForPreTraining

< >

( config: Wav2Vec2Config )

Параметры

  • config (Wav2Vec2Config) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.

Модель Wav2Vec2 с квантизатором и головой VQ сверху.

Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)

Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.

forward

< >

( input_values: typing.Optional[torch.Tensor]attention_mask: typing.Optional[torch.Tensor] = Nonemask_time_indices: typing.Optional[torch.BoolTensor] = Nonesampled_negative_indices: typing.Optional[torch.BoolTensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Wav2Vec2ForPreTrainingOutput or tuple(torch.Tensor)

Параметры

  • input_values (torch.Tensor формы (batch_size, sequence_length), необязательный) — Значения типа float для входной необработанной звуковой волны. Значения можно получить, загрузив аудиофайл .flac или .wav в массив типа list[float], numpy.ndarray или torch.Tensor, например, с помощью библиотеки torchcodec (pip install torchcodec) или библиотеки soundfile (pip install soundfile). Для подготовки массива в input_values следует использовать AutoProcessor для выравнивания (padding) и преобразования в тензор типа torch.Tensor. Подробности см. в Wav2Vec2Processor.call().
  • attention_mask (torch.Tensor формы (batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

    Что такое маски внимания?

  • mask_time_indices (torch.BoolTensor формы (batch_size, sequence_length), необязательный) — Индексы для маскирования извлечённых признаков для контрастивной функции потерь. В режиме обучения модель учится предсказывать маскированные извлечённые признаки в пространстве config.proj_codevector_dim.
  • sampled_negative_indices (torch.BoolTensor формы (batch_size, sequence_length, num_negatives), необязательный) — Индексы, указывающие, какие квантованные целевые векторы используются в качестве отрицательных выбранных векторов в контрастивной функции потерь. Обязательный вход для предварительного обучения.

Возвращает

Wav2Vec2ForPreTrainingOutput или tuple(torch.Tensor)

Объект Wav2Vec2ForPreTrainingOutput или кортеж torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные элементы в зависимости от конфигурации (Wav2Vec2Config) и входных данных.

Метод forward класса Wav2Vec2ForPreTraining переопределяет специальный метод __call__.

Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.

  • loss (*optional*, возвращается при передаче sample_negative_indices, torch.Tensor формы (1,)) — Суммарная потеря, равная сумме контрастивной потери (L_m) и потери разнообразия (L_d), как описано в официальной статье.

  • projected_states (torch.Tensor формы (batch_size, sequence_length, config.proj_codevector_dim)) — Скрытые состояния модели, спроецированные в config.proj_codevector_dim, которые можно использовать для предсказания замаскированных спроецированных квантованных состояний.

  • projected_quantized_states (torch.Tensor формы (batch_size, sequence_length, config.proj_codevector_dim)) — Квантованные извлечённые векторы признаков, спроецированные в config.proj_codevector_dim, представляющие положительные целевые векторы для контрастного потерь.

  • codevector_perplexity (torch.Tensor формы (1,)) — Переплексность распределения codevector, используемая для измерения разнообразия кодовой книги.

  • hidden_states (tuple[torch.Tensor], необязательный, возвращается при передаче output_hidden_states=True или когда config.output_hidden_states=True) — Кортеж из torch.Tensor (один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы (batch_size, sequence_length, hidden_size).

    Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.

  • attentions (tuple[torch.Tensor], необязательный, возвращается при передаче output_attentions=True или когда config.output_attentions=True) — Кортеж torch.Tensor (по одному на каждый слой) формы (batch_size, num_heads, sequence_length, sequence_length).

    Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

  • contrastive_loss (*optional*, возвращается при передаче sample_negative_indices, torch.Tensor формы (1,)) — контрастивная потеря (L_m), как описано в официальной статье.

  • diversity_loss (*optional*, возвращается при передаче sample_negative_indices, torch.Tensor формы (1,)) — Потеря разнообразия (L_d), как описано в официальной статье.

Пример:

>>> import torch
>>> from transformers import AutoFeatureExtractor, Wav2Vec2ForPreTraining
>>> from transformers.models.wav2vec2.modeling_wav2vec2 import _compute_mask_indices, _sample_negative_indices
>>> from datasets import load_dataset

>>> feature_extractor = AutoFeatureExtractor.from_pretrained("facebook/wav2vec2-base")
>>> model = Wav2Vec2ForPreTraining.from_pretrained("facebook/wav2vec2-base")

>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> input_values = feature_extractor(ds[0]["audio"]["array"], return_tensors="pt").input_values  # Batch size 1

>>> # compute masked indices
>>> batch_size, raw_sequence_length = input_values.shape
>>> sequence_length = model._get_feat_extract_output_lengths(raw_sequence_length).item()
>>> mask_time_indices = _compute_mask_indices(
...     shape=(batch_size, sequence_length), mask_prob=0.2, mask_length=2
... )
>>> sampled_negative_indices = _sample_negative_indices(
...     features_shape=(batch_size, sequence_length),
...     num_negatives=model.config.num_negatives,
...     mask_time_indices=mask_time_indices,
... )
>>> mask_time_indices = torch.tensor(data=mask_time_indices, device=input_values.device, dtype=torch.long)
>>> sampled_negative_indices = torch.tensor(
...     data=sampled_negative_indices, device=input_values.device, dtype=torch.long
... )

>>> with torch.no_grad():
...     outputs = model(input_values, mask_time_indices=mask_time_indices)

>>> # compute cosine similarity between predicted (=projected_states) and target (=projected_quantized_states)
>>> cosine_sim = torch.cosine_similarity(outputs.projected_states, outputs.projected_quantized_states, dim=-1)

>>> # show that cosine similarity is much higher than random
>>> cosine_sim[mask_time_indices.to(torch.bool)].mean() > 0.5
tensor(True)

>>> # for contrastive loss training model should be put into train mode
>>> model = model.train()
>>> loss = model(
...     input_values, mask_time_indices=mask_time_indices, sampled_negative_indices=sampled_negative_indices
... ).loss
Update on GitHub