Transformers documentation
WavLM
Эта модель была опубликована в HF papers 26.10.2021 и добавлена в Hugging Face Transformers 16.12.2021.
WavLM
Обзор
Модель WavLM была предложена в статье WavLM: Large-Scale Self-Supervised Pre-Training for Full Stack Speech Processing авторами Sanyuan Chen, Chengyi Wang, Zhengyang Chen, Yu Wu, Shujie Liu, Zhuo Chen, Jinyu Li, Naoyuki Kanda, Takuya Yoshioka, Xiong Xiao, Jian Wu, Long Zhou, Shuo Ren, Yanmin Qian, Yao Qian, Jian Wu, Michael Zeng, Furu Wei.
Аннотация из статьи следующая:
Самообучение (SSL) демонстрирует выдающиеся результаты в распознавании речи, тогда как для других задач обработки речи проведено лишь ограниченное количество исследований. Поскольку речевой сигнал содержит многоаспектную информацию, включая идентификатор говорящего, паралингвистические признаки, произносимое содержание и т. д., обучение универсальным представлениям для всех речевых задач является сложной задачей. В данной статье мы предлагаем новую предобученную модель WavLM для решения широкого спектра задач обработки речи. WavLM построена на основе архитектуры HuBERT с акцентом как на моделирование произносимого содержания, так и на сохранение идентификатора говорящего. Во-первых, мы оснащаем структуру Transformer механизмом относительного позиционного смещения с гейтингом, чтобы повысить её эффективность в задачах распознавания. Во-вторых, для улучшения различения говорящих мы предлагаем стратегию обучения с использованием смешивания реплик, в рамках которой без учителя создаются дополнительные перекрывающиеся реплики и включаются в процесс обучения модели. Наконец, мы масштабируем обучающий набор данных с 60 тыс. часов до 94 тыс. часов. WavLM Large демонстрирует наилучшие результаты на бенчмарке SUPERB и обеспечивает значительное улучшение показателей для различных задач обработки речи на их соответствующих бенчмарках.
Соответствующие контрольные точки можно найти по адресу https://huggingface.co/models?other=wavlm.
Эта модель была предоставлена пользователем patrickvonplaten. Код авторов можно найти здесь.
Советы по использованию
- WavLM — это модель для обработки речи, которая принимает массив float, соответствующий исходной волновой форме речевого сигнала. Для извлечения признаков используйте Wav2Vec2Processor.
- Модель WavLM можно дообучать с использованием connectionist temporal classification (CTC), поэтому вывод модели необходимо декодировать с помощью Wav2Vec2CTCTokenizer.
- WavLM демонстрирует особенно высокую эффективность в задачах верификации говорящего, идентификации говорящего и диаризации говорящих.
Ресурсы
WavLMConfig
класс transformers.WavLMConfig
< 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 = 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.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 = 16num_buckets: int = 320max_bucket_distance: int = 800do_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 = 10num_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 = 'mean'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 = 512num_ctc_classes: int = 80pad_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 = 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 для выхода кодировщика признаков. - final_dropout (
float, необязательный, по умолчанию 0.1) — Вероятность dropout для последнего проекционного слоя WavLMForCTC. - 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) — Количество групп слоя одномерных свёрточных позиционных эмбеддингов. - num_buckets (
int, необязательный, по умолчанию 320) — Количество бакетов, используемых для каждого слоя внимания - max_bucket_distance (
int, необязательный, по умолчанию 800) — Максимальное расстояние между бакетами - 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, необязательный, по умолчанию 0.05) — Вероятность того, что каждый вектор признаков вдоль временной оси будет выбран в качестве начала диапазона векторов, подлежащего маскировке. Вдоль временной оси будет замаскировано приблизительноmask_time_prob * sequence_length // mask_time_lengthвекторов признаков. Это имеет значение только в том случае, еслиapply_spec_augment is True. - mask_time_length (
int, необязательный, по умолчанию 10) — Длина векторного диапазона вдоль временной оси. - mask_time_min_masks (
int, необязательный, по умолчанию 2), — Минимальное количество масок длиныmask_feature_length, генерируемых вдоль временной оси, на каждом шаге времени, независимо отmask_feature_prob. Актуально только если ”mask_time_prob*len(time_axis)/mask_time_length < mask_time_min_masks” - mask_feature_prob (
float, необязательный, по умолчанию 0.0) — Вероятность того, что каждый вектор признаков вдоль оси признаков будет выбран в качестве начала диапазона векторов, подлежащего маскировке. Примерноmask_time_prob * hidden_size // mask_time_lengthвекторов признаков будут замаскированы вдоль оси времени. Это имеет значение только в том случае, еслиapply_spec_augment is True. - mask_feature_prob (
Union[float, int], необязательный, по умолчанию0.0) — Доля (от 0 до 1) всех векторов признаков вдоль оси признаков, которые будут замаскированы. Процедура маскирования генерируетmask_feature_prob*len(feature_axis)/mask_time_lengthнезависимых масок вдоль оси. Если рассуждать с точки зрения вероятности того, что каждый вектор признаков будет выбран в качестве начала векторного диапазона, подлежащего маскированию, то mask_feature_prob должно быть равноprob_vector_start*mask_feature_length. Обратите внимание, что перекрытия могут уменьшить фактическую долю замаскированных векторов. Это имеет значение только в том случае, еслиapply_spec_augmentравноTrue. - mask_feature_length (
int, необязательный, по умолчанию 10) — Длина векторного диапазона вдоль оси признаков. - 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, необязательный, по умолчаниюmean) — Определяет способ агрегации, применяемый к выходуtorch.nn.CTCLoss. Актуально только при обучении. - ctc_zero_infinity (
bool, необязательный, по умолчаниюFalse) — Определяет, следует ли обнулять бесконечные значения потерь и соответствующие градиентыtorch.nn.CTCLoss. Бесконечные потери возникают в основном, когда входные последовательности слишком короткие, чтобы их можно было выровнять по целевым. Параметр имеет значение только при обучении экземпляра WavLMForCTC. - use_weighted_layer_sum (
bool, необязательный, по умолчаниюFalse) — Использовать ли взвешенное среднее выходов слоёв с обучаемыми весами. Актуально только при использовании экземпляра WavLMForSequenceClassification. - 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. - num_ctc_classes (
int, необязательный, по умолчанию 80) — Указывает количество классов (токены фонем и токен пробела) для функции потерь CTC на уровне фонем. Актуально только при использовании экземпляра UniSpeechForPreTraining. - 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.
Это класс конфигурации для хранения настроек модели WavLMModel. Он используется для создания модели Wavlm в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации microsoft/wavlm-base
Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.
Пример:
>>> from transformers import WavLMConfig, WavLMModel
>>> # Initializing a WavLM facebook/wavlm-base-960h style configuration
>>> configuration = WavLMConfig()
>>> # Initializing a model (with random weights) from the facebook/wavlm-base-960h style configuration
>>> model = WavLMModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configWavLMModel
класс transformers.WavLMModel
< source >( config: WavLMConfig )
Параметры
- config (WavLMConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель Wavlm без дополнительных слоёв, выводящая необработанные скрытые состояния.
Эта модель наследуется от 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), содержащий различные
элементы в зависимости от конфигурации (WavLMConfig) и входных данных.
Метод forward модели WavLMModel переопределяет специальный метод __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 в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
WavLMForCTC
класс transformers.WavLMForCTC
< source >( config: WavLMConfigtarget_lang: str | None = None )
Параметры
- config (WavLMConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
- target_lang (
str, необязательный) — Идентификатор языка весов адаптера. Веса адаптера хранятся в формате adapter..safetensors или adapter. .bin. Актуально только при использовании экземпляра WavLMForCTC с адаптерами. По умолчанию используется ‘eng’.
Модель WavLM с головкой 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), содержащий различные
элементы в зависимости от конфигурации (WavLMConfig) и входных данных.
Метод WavLMForCTC forward переопределяет специальный метод __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, WavLMForCTC
>>> 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("microsoft/wavlm-base")
>>> model = WavLMForCTC.from_pretrained("microsoft/wavlm-base")
>>> # 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)
...WavLMForSequenceClassification
класс transformers.WavLMForSequenceClassification
< source >( config: WavLMConfig )
Параметры
- config (WavLMConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель WavLM с головой последовательной классификации (линейный слой поверх пуллинг-выхода) для таких задач, как 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. Подробности см. вWavLMProcessor.__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), содержащий различные
элементы в зависимости от конфигурации (WavLMConfig) и входных данных.
Метод WavLMForSequenceClassification forward переопределяет специальный метод __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, WavLMForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("microsoft/wavlm-base")
>>> model = WavLMForSequenceClassification.from_pretrained("microsoft/wavlm-base")
>>> 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 = WavLMForSequenceClassification.from_pretrained("microsoft/wavlm-base", num_labels=num_labels)
>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...Пример многоклассовой классификации:
>>> import torch
>>> from transformers import AutoTokenizer, WavLMForSequenceClassification
>>> tokenizer = AutoTokenizer.from_pretrained("microsoft/wavlm-base")
>>> model = WavLMForSequenceClassification.from_pretrained("microsoft/wavlm-base", 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 = WavLMForSequenceClassification.from_pretrained(
... "microsoft/wavlm-base", 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).lossWavLMForAudioFrameClassification
класс transformers.WavLMForAudioFrameClassification
< source >( config: WavLMConfig )
Параметры
- config (WavLMConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель Wavlm с головкой классификации кадров для задач, таких как диаризация говорящих.
Эта модель наследуется от 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. Подробности см. вWavLMProcessor.__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), содержащий различные
элементы в зависимости от конфигурации (WavLMConfig) и входных данных.
Метод forward класса WavLMForAudioFrameClassification переопределяет специальный метод __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, WavLMForAudioFrameClassification
>>> 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("microsoft/wavlm-base")
>>> model = WavLMForAudioFrameClassification.from_pretrained("microsoft/wavlm-base")
>>> # 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()
...WavLMForXVector
класс transformers.WavLMForXVector
< source >( config: WavLMConfig )
Параметры
- config (WavLMConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель WavLM с головой извлечения признаков 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. Подробности см. вWavLMProcessor.__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), содержащий различные
элементы в зависимости от конфигурации (WavLMConfig) и входных данных.
Метод forward класса WavLMForXVector переопределяет специальный метод __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, WavLMForXVector
>>> 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("microsoft/wavlm-base")
>>> model = WavLMForXVector.from_pretrained("microsoft/wavlm-base")
>>> # 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)
...