Transformers documentation
Wav2Vec2
Эта модель была опубликована в HF papers 20 июня 2020 года и добавлена в Hugging Face Transformers 2 февраля 2021 года.
Wav2Vec2
Обзор
Модель 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, и мы его рассмотрим! В идеале ресурс должен демонстрировать что-то новое, а не дублировать уже существующие материалы.
- Ноутбук о том, как использовать предобученную модель Wav2Vec2 для классификации эмоций. 🌎
- Wav2Vec2ForCTC поддерживается в этом ноутбуке.
- Руководство по задаче классификации аудио
- Блог о ускорении Wav2Vec2 с помощью n-грамм в 🤗 Transformers.
- Блог о том, как дообучить Wav2Vec2 для английского ASR с помощью 🤗 Transformers.
- Блог о дообучении XLS-R для многоязычного ASR с помощью 🤗 Transformers.
- Ноутбук о том, как создать субтитры для YouTube из любого видео, транскрибируя аудио с помощью Wav2Vec2. 🌎
- Wav2Vec2ForCTC поддерживается в ноутбуках о том, как дообучить модель распознавания речи на английском языке и как дообучить модель распознавания речи на любом языке.
- Руководство по задаче автоматического распознавания речи
🚀 Развёртывание
- Блог о том, как развернуть Wav2Vec2 для автоматического распознавания речи с помощью Transformers от Hugging Face и Amazon SageMaker.
Wav2Vec2Config
класс transformers.Wav2Vec2Config
< source >( 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]orlist[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 ifapply_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 ifapply_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.configWav2Vec2CTCTokenizer
класс transformers.Wav2Vec2CTCTokenizer
< source >( 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__
< source >( 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.TensorPyTorch.'np': возвращает объекты Numpynp.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 со следующими полями:
-
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)
Основной метод для токенизации и подготовки одной или нескольких последовательностей или одной или нескольких пар последовательностей для модели.
decode
< source >( 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
< source >( 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.
Установите целевой язык вложенного многоязычного словаря
Wav2Vec2FeatureExtractor
класс transformers.Wav2Vec2FeatureExtractor
< source >( 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__
< source >( 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.TensorPyTorch.'np': возвращает объекты Numpynp.ndarray.
- sampling_rate (
int, необязательный) — Частота дискретизации, с которой была оцифрована входнаяraw_speech. Настоятельно рекомендуется передаватьsampling_rateпри вызове forward, чтобы избежать скрытых ошибок. - padding_value (
float, необязательный, по умолчанию 0.0) —
Основной метод для создания признаков и подготовки одной или нескольких последовательностей для модели.
Wav2Vec2Processor
класс transformers.Wav2Vec2Processor
< source >( feature_extractortokenizer )
Создаёт Wav2Vec2Processor, объединяющий feature extractor и tokenizer в единый processor.
Wav2Vec2Processor предоставляет все возможности Wav2Vec2FeatureExtractor и Wav2Vec2CTCTokenizer. Подробнее см. в ~Wav2Vec2FeatureExtractor и ~Wav2Vec2CTCTokenizer.
__call__
< source >( 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.TensorPyTorch.'np': возвращает объекты NumPynp.ndarray.
- **kwargs (ProcessingKwargs, optional) — Дополнительные параметры обработки для каждой модальности (текст, изображения, видео, аудио). Специфичные для модели параметры перечислены выше; полный список поддерживаемых аргументов см. в классе TypedDict.
pad
< source >( *args**kwargs )
Параметры
- input_features —
Если первый аргумент — словарь, содержащий батч тензоров, либо присутствует аргумент
input_features, он передаётся в Wav2Vec2FeatureExtractor.pad(). - labels —
Если присутствует аргумент
label, он передаётся в PreTrainedTokenizer.pad().
Этот метод работает с батчами извлечённых признаков и/или токенизированного текста. Он передаёт все аргументы в Wav2Vec2FeatureExtractor.pad() и/или PreTrainedTokenizer.pad() в зависимости от модальности входных данных и возвращает их результаты. Если переданы обе модальности, вызываются Wav2Vec2FeatureExtractor.pad() и PreTrainedTokenizer.pad().
from_pretrained
< source >( 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
< source >( 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() класса PreTrainedTokenizer. Подробности см. в docstring этого метода.
Этот метод передаёт все свои аргументы в decode() класса PreTrainedTokenizer. Подробности см. в docstring этого метода.
Wav2Vec2ProcessorWithLM
класс transformers.Wav2Vec2ProcessorWithLM
< source >( 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__
< source >( *args**kwargs )
Параметры
- return_tensors (
strили TensorType, необязательный) — Если задано, возвращает тензоры конкретного фреймворка. Допустимые значения:'pt': возвращает объектыtorch.TensorPyTorch.'np': возвращает объекты NumPynp.ndarray.
При использовании в обычном режиме этот метод передаёт все свои аргументы в ~FeatureExtractionMixin.pad экстрактора признаков и возвращает его результат. Если используется в контексте ~Wav2Vec2ProcessorWithLM.as_target_processor, этот метод передаёт все свои аргументы в pad() Wav2Vec2CTCTokenizer. Подробности см. в строках документации вышеуказанных двух методов.
from_pretrained
< source >( 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) методов, описанных выше.
batch_decode
< source >( 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
< source >( 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
< source >( 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
< source >( 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
< source >( 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
< source >( config: Wav2Vec2Config )
Параметры
- config (Wav2Vec2Config) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель Wav2Vec2 без специализированного верхнего слоя, выводящая необработанные скрытые состояния.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( 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
< source >( 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
< source >( 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
< source >( 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
< source >( config: Wav2Vec2Config )
Параметры
- config (Wav2Vec2Config) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель Wav2Vec2 с головой последовательной классификации (линейный слой поверх агрегированного вывода) для задач, таких как SUPERB Keyword Spotting.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( 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).lossWav2Vec2ForAudioFrameClassification
класс transformers.Wav2Vec2ForAudioFrameClassification
< source >( config: Wav2Vec2Config )
Параметры
- config (Wav2Vec2Config) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель Wav2Vec2 с головной частью для классификации кадров, предназначенной для таких задач, как диаризация говорящих.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( 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
< source >( config: Wav2Vec2Config )
Параметры
- config (Wav2Vec2Config) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель Wav2Vec2 с головой извлечения признаков XVector для задач, таких как верификация говорящего.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( 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
< source >( config: Wav2Vec2Config )
Параметры
- config (Wav2Vec2Config) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель Wav2Vec2 с квантизатором и головой VQ сверху.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( 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