Transformers documentation

Whisper

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

and get access to the augmented documentation experience

to get started

Эта модель была опубликована в HF papers 06.12.2022 и добавлена в Hugging Face Transformers 05.10.2022.

FlashAttention SDPA

Whisper

Whisper — это трансформер с архитектурой «кодировщик-декодер» (sequence-to-sequence), предварительно обученный на 680 000 часов размеченных аудиоданных. Такой объём данных для предварительного обучения обеспечивает работу в режиме zero-shot на задачах обработки аудио на английском и многих других языках. Декодер позволяет Whisper преобразовывать представления речи, полученные кодировщиком, в полезные результаты, например текст, без дополнительного дообучения. Whisper готов к работе сразу после установки.

Все исходные контрольные точки Whisper можно найти в коллекции Whisper.

Щёлкните по моделям Whisper в боковой панели справа, чтобы увидеть больше примеров применения Whisper к различным задачам обработки аудио.

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

Приведённый ниже пример показывает, как автоматически преобразовать речь в текст с помощью Pipeline или класса AutoModel.

Пайплайн
AutoModel
from transformers import pipeline


pipeline = pipeline(
    task="automatic-speech-recognition",
    model="openai/whisper-large-v3-turbo",
    device=0
)
pipeline("https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/mlk.flac")

Примечания

  • Whisper использует собственный generate для инференса, обязательно ознакомьтесь с документацией ниже.
  • Объект WhisperProcessor используется для подготовки аудио и декодирования предсказанных идентификаторов обратно в текст.

WhisperConfig

класс transformers.WhisperConfig

< >

( 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 = 0id2label: 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 = Noneis_encoder_decoder: bool = Truevocab_size: int = 51865num_mel_bins: int = 80encoder_layers: int = 4encoder_attention_heads: int = 6decoder_layers: int = 4decoder_attention_heads: int = 6decoder_ffn_dim: int = 1536encoder_ffn_dim: int = 1536encoder_layerdrop: float | int = 0.0decoder_layerdrop: float | int = 0.0decoder_start_token_id: int = 50257use_cache: bool = Trueactivation_function: str = 'gelu'd_model: int = 384dropout: float | int = 0.0attention_dropout: float | int = 0.0activation_dropout: float | int = 0.0init_std: float = 0.02scale_embedding: bool = Falsemax_source_positions: int = 1500max_target_positions: int = 448pad_token_id: int | None = 50256bos_token_id: int | None = 50256eos_token_id: int | list[int] | None = 50256suppress_tokens: list | None = Nonebegin_suppress_tokens: list[int] | tuple[int, ...] | None = (220, 50256)use_weighted_layer_sum: bool = Falseclassifier_proj_size: int = 256apply_spec_augment: bool = Falsemask_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 = 0median_filter_width: int = 7tie_word_embeddings: bool = True )

Параметры

  • is_encoder_decoder (bool, необязательный, по умолчанию True) — Указывает, используется ли модель в качестве энкодера/декодера.
  • vocab_size (int, необязательный, по умолчанию 51865) — Размер словаря модели. Определяет количество различных токенов, которые могут быть представлены в input_ids.
  • num_mel_bins (int, необязательный, по умолчанию 80) — Количество mel-признаков, используемых на входной кадр. Должно соответствовать значению, применяемому в классе AutoFeatureExtractor.
  • encoder_layers (int, необязательный, по умолчанию 4) — Количество скрытых слоев в кодере Transformer. Если не задано, используется то же значение, что и у num_layers.
  • encoder_attention_heads (int, необязательный, по умолчанию 6) — Количество головок внимания в каждом слое внимания кодировщика Transformer.
  • decoder_layers (int, необязательный, по умолчанию 4) — Количество скрытых слоев в декодере Transformer. Если не задано, используется то же значение, что и у num_layers.
  • decoder_attention_heads (int, необязательный, по умолчанию 6) — Количество головок внимания в каждом слое внимания декодера Transformer.
  • decoder_ffn_dim (int, необязательный, по умолчанию 1536) — Размерность «промежуточного» (часто называемого feed-forward) слоя в декодере.
  • encoder_ffn_dim (int, необязательный, по умолчанию 1536) — Размерность «промежуточного» (часто называемого feed-forward) слоя в энкодере.
  • encoder_layerdrop (Union[float, int], необязательный, по умолчанию 0.0) — Вероятность LayerDrop для энкодера. Подробности — в [статье о LayerDrop](см. https://huggingface.co/papers/1909.11556).
  • decoder_layerdrop (Union[float, int], необязательный, по умолчанию 0.0) — Вероятность LayerDrop для декодера. Подробности — в [статье о LayerDrop](см. https://huggingface.co/papers/1909.11556).
  • decoder_start_token_id (int, необязательный, по умолчанию 50257) — Если модель encoder-decoder начинает декодирование с токена, отличного от bos, то id этого токена.
  • use_cache (bool, необязательный, по умолчанию True) — Указывает, должен ли модель возвращать последние ключи/значения внимания (не используется во всех моделях). Актуально только если config.is_decoder=True или если модель является генеративной моделью только с декодером.
  • activation_function (str, необязательный, по умолчанию gelu) — Нелинейная функция активации (функция или строка) в декодере. Например, "gelu", "relu", "silu" и т. д.
  • d_model (int, необязательный, по умолчанию 384) — Размер слоев кодировщика и пулер-слоя.
  • dropout (Union[float, int], необязательный, по умолчанию 0.0) — Коэффициент для всех слоёв dropout.
  • attention_dropout (Union[float, int], необязательный, по умолчанию 0.0) — Коэффициент dropout для вероятностей внимания.
  • activation_dropout (Union[float, int], необязательный, по умолчанию 0.0) — Коэффициент dropout для активаций внутри полносвязного слоя.
  • init_std (float, необязательный, по умолчанию 0.02) — Стандартное отклонение truncated_normal_initializer для инициализации всех матриц весов.
  • scale_embedding (bool, необязательный, по умолчанию False) — Указывает, следует ли масштабировать эмбеддинги, деля их на sqrt(d_model).
  • max_source_positions (int, необязательный, по умолчанию 1500) — Максимальная длина последовательности лог-мел-фильтр-банковых признаков, с которой может использоваться данная модель.
  • max_target_positions (int, необязательный, по умолчанию 448) — Максимальная длина последовательности, с которой может использоваться эта модель. Обычно стоит задать достаточно большое значение на всякий случай (например, 512, 1024 или 2048).
  • pad_token_id (int, необязательный, по умолчанию 50256) — Идентификатор токена, используемого для выравнивания (padding) в словаре.
  • bos_token_id (int, необязательный, по умолчанию 50256) — Идентификатор токена, используемого для обозначения начала потока в словаре.
  • eos_token_id (Union[int, list[int]], необязательный, по умолчанию 50256) — Идентификатор токена, используемого для обозначения конца потока в словаре.
  • suppress_tokens (list[int], необязательный) — Список, содержащий неречевые токены, которые будут использоваться обработчиком логитов в функции generate. NON_SPEECH_TOKENS и NON_SPEECH_TOKENS_MULTI соответствуют моделям english-only и multilingual соответственно.
  • begin_suppress_tokens (list[int], необязательный, по умолчанию [220,50256]) — Список токенов, которые подавляются в начале процесса выборки. Инициализируется токеном для " " (blank_token_id) и eos_token_id
  • use_weighted_layer_sum (bool, необязательный, по умолчанию False) — Использовать ли средневзвешенное значение выходов слоёв с обучаемыми весами. Актуально только при использовании экземпляра WhisperForAudioClassification.
  • classifier_proj_size (int, необязательный, по умолчанию 256) — Размерность проекции перед усреднением токенов для классификации. Актуально только при использовании экземпляра WhisperForAudioClassification.
  • apply_spec_augment (bool, необязательный, по умолчанию False) — Указывает, следует ли применять аугментацию данных SpecAugment к выходным данным кодировщика признаков. См. SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition.
  • mask_time_prob (float, необязательный, по умолчанию 0.05) — Доля (от 0 до 1) всех векторов признаков вдоль временной оси, которые будут замаскированы. Процедура маскирования генерирует mask_time_prob*len(time_axis)/mask_time_length независимых масок вдоль этой оси. Если рассуждать с точки зрения вероятности того, что каждый вектор признаков будет выбран в качестве начала провала, подлежащего маскированию, то mask_time_prob должно быть равно prob_vector_start*mask_time_length. Обратите внимание, что пересечения могут уменьшить фактическую долю замаскированных векторов. Это имеет значение только при apply_spec_augment == 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) — Доля (от 0 до 1) всех векторов признаков вдоль оси признаков, которые будут замаскированы. Процедура маскирования генерирует mask_feature_prob*len(feature_axis)/mask_time_length независимых масок вдоль оси. Если рассуждать с точки зрения вероятности того, что каждый вектор признаков будет выбран в качестве начала векторного диапазона, подлежащего маскировке, то mask_feature_prob должно быть равно prob_vector_start*mask_feature_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) — Длина векторного диапазона вдоль оси признаков.
  • 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.
  • median_filter_width (int, необязательный, по умолчанию 7) — Ширина медианного фильтра, используемого для сглаживания выходов кросс-внимания при вычислении временных меток токенов. Должно быть нечётным числом.
  • tie_word_embeddings (bool, необязательный, по умолчанию True) — Определяет, следует ли связывать веса эмбеддингов согласно маппингу tied_weights_keys модели.

Это класс конфигурации для хранения настроек модели WhisperModel. Он используется для создания модели Whisper в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации openai/whisper-tiny

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

Пример:

>>> from transformers import WhisperConfig, WhisperModel

>>> # Initializing a Whisper tiny style configuration
>>> configuration = WhisperConfig()

>>> # Initializing a model (with random weights) from the tiny style configuration
>>> model = WhisperModel(configuration)

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

WhisperTokenizer

класс transformers.WhisperTokenizer

< >

( vocab: str | dict[str, int] | None = Nonemerges = Nonenormalizer_file = Noneunk_token = '<|endoftext|>'bos_token = '<|endoftext|>'eos_token = '<|endoftext|>'add_prefix_space = Falselanguage = Nonetask = Nonepredict_timestamps = False**kwargs )

Параметры

  • vocab_file (str, необязательный) — Путь к файлу словаря.
  • merges_file (str, необязательный) — Путь к файлу слияний.
  • normalizer_file (str, необязательный) — Путь к файлу normalizer_file.
  • tokenizer_file (str, необязательный) — Путь к файлу tokenizers (обычно с расширением .json), содержащему всё необходимое для загрузки токенизатора.
  • unk_token (str, необязательный, по умолчанию "<|endoftext|>") — Токен неизвестного слова. Токен, отсутствующий в словаре, не может быть преобразован в ID, поэтому вместо него используется этот токен.
  • bos_token (str, необязательный, по умолчанию "<|endoftext|>") — Токен начала последовательности. При генерации decoder_start_token_id используется для установки первого токена как "<|startoftranscript|>".
  • eos_token (str, необязательный, по умолчанию "<|endoftext|>") — Токен конца последовательности.
  • add_prefix_space (bool, необязательный, по умолчанию False) — Указывает, нужно ли добавлять начальный пробел к входным данным. Это позволяет обрабатывать первое слово так же, как и любое другое. (Токенизатор Whisper определяет начало слов по предшествующему пробелу).
  • language (str, необязательный) — Язык текста транскрипции. Соответствующий токен идентификатора языка добавляется в начало последовательности для задач многоязычного распознавания речи и перевода речи, например, для испанского языка в начало последовательности добавляется токен "<|es|>". Это следует использовать только для многоязычной дообучения.
  • task (str, необязательный) — Идентификатор задачи, добавляемый в начало последовательности (если требуется). Используется для многоязычной дообучения: "transcribe" для распознавания речи и "translate" для перевода речи.
  • predict_timestamps (bool, необязательный, по умолчанию False) — Определяет, следует ли опускать токен <|notimestamps|> в начале последовательности.

Создайте «быстрый» токенизатор Whisper (на базе библиотеки tokenizers от HuggingFace).

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

set_prefix_tokens

< >

( language: str | None = Nonetask: str | None = Nonepredict_timestamps: bool | None = None )

Параметры

  • language (str, необязательный, по умолчанию None) — Язык текста транскрипции.
  • task (str, необязательный, по умолчанию None) — Идентификатор задачи, который добавляется в начало последовательности (если есть).
  • predict_timestamps (bool, необязательный, по умолчанию None) — Определяет, следует ли опускать токен <|notimestamps|> в начале последовательности.

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

обновляйте префиксные токены по мере необходимости при дообучении. Пример:

>>> # instantiate the tokenizer and set the prefix token to Spanish
>>> tokenizer = WhisperTokenizerFast.from_pretrained("openai/whisper-tiny", language="spanish")
>>> # now switch the prefix token from Spanish to French
>>> tokenizer.set_prefix_tokens(language="french")

get_special_tokens_mask

< >

( token_ids_0: listtoken_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → list[int]

Параметры

  • token_ids_0 (list[int]) — Список идентификаторов.
  • token_ids_1 (list[int], необязательный) — Необязательный второй список идентификаторов для пар последовательностей.
  • already_has_special_tokens (bool, необязательный, по умолчанию False) — Указывает, содержит ли список токенов уже отформатированные специальные токены для модели.

Возвращает

list[int]

Список целых чисел в диапазоне [0, 1]: 1 для специального токена, 0 для токена последовательности.

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

save_vocabulary

< >

( save_directory: strfilename_prefix: str | None = None )

batch_decode

< >

( sequences: list[int] | list[list[int]] | np.ndarray | torch.Tensorskip_special_tokens: bool = Falseclean_up_tokenization_spaces: bool | None = None**kwargs ) → list[str]

Параметры

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

Возвращает

list[str]

Список декодированных предложений.

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

Этот метод предоставляется для обратной совместимости. Метод decode теперь нативно обрабатывает пакетный ввод, поэтому вы можете использовать decode напрямую вместо batch_decode.

decode

< >

( token_idsskip_special_tokens: bool = Falseclean_up_tokenization_spaces: bool | None = Noneoutput_offsets: bool = Falsetime_precision: float = 0.02decode_with_timestamps: bool = Falsenormalize: bool = Falsebasic_normalize: bool = Falseremove_diacritics: bool = False**kwargs ) → str

Параметры

  • token_ids (Union[int, list[int], np.ndarray, torch.Tensor]) — Список идентификаторов токенов входных данных. Может быть получен с помощью метода __call__.
  • skip_special_tokens (bool, необязательный, по умолчанию False) — Указывает, следует ли удалять специальные токены при декодировании. Если предыдущие токены (до промпта) присутствуют, они будут удалены.
  • clean_up_tokenization_spaces (bool, необязательный) — Указывает, следует ли очищать пробелы токенизации. Если None, по умолчанию используется self.clean_up_tokenization_spaces (доступно в tokenizer_config).
  • output_offsets (bool, необязательный, по умолчанию False) — Указывает, следует ли выводить смещения токенов. Этот параметр нужно устанавливать только в том случае, если модель предсказала временные метки. Если есть предыдущие токены (до промпта), подлежащие декодированию, они появятся в декодированном тексте только при наличии в них токенов временных меток.
  • time_precision (float, необязательный, по умолчанию 0.02) — Коэффициент времени для преобразования из токенов во время.
  • decode_with_timestamps (bool, необязательный, по умолчанию False) — Указывает, нужно ли декодировать текст с включением временных меток в исходный текст.
  • normalize (bool, необязательный, по умолчанию False) — Указывает, следует ли применять нормализатор английского текста к декодированному тексту. Применимо только в том случае, если целевой текст на английском языке. В противном случае следует применять базовый нормализатор текста.
  • basic_normalize (bool, необязательный, по умолчанию False) — Указывает, следует ли применять нормализатор Basic к декодированному тексту. Применимо к многоязычному целевому тексту.
  • remove_diacritics (bool, необязательный, по умолчанию False) — Удалять ли диакритические знаки при применении базового нормализатора текста. Удаление диакритики может привести к потере информации в декодированном тексте, поэтому следует использовать с осторожностью.
  • kwargs (дополнительные именованные аргументы, необязательный) — Будут переданы в метод декодирования, специфичный для базовой модели.

Возвращает

str

Расшифрованное предложение.

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

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

basic_normalize

< >

( textremove_diacritics = False )

Нормализуйте заданную строку с помощью класса BasicTextNormalizer, который выполняет базовые преобразования для многоязычного текста.

normalize

< >

( text )

Нормализуйте заданную строку с помощью класса EnglishTextNormalizer, который выполняет стандартные преобразования английского текста.

WhisperFeatureExtractor

класс transformers.WhisperFeatureExtractor

< >

( feature_size = 80sampling_rate = 16000hop_length = 160chunk_length = 30n_fft = 400padding_value = 0.0dither = 0.0return_attention_mask = False**kwargs )

Параметры

  • feature_size (int, необязательный, по умолчанию 80) — Размерность признаков извлечённых признаков.
  • sampling_rate (int, необязательный, по умолчанию 16000) — Частота дискретизации, с которой аудиофайлы должны быть оцифрованы, выраженная в герцах (Гц).
  • hop_length (int, необязательный, по умолчанию 160) — Длина перекрывающихся окон для БПФ, используемой для получения коэффициентов Мель-частот.
  • chunk_length (int, необязательный, по умолчанию 30) — Максимальное количество фрагментов по sampling_rate выборок, используемых для обрезки и дополнения более длинных или более коротких аудиопоследовательностей.
  • n_fft (int, необязательный, по умолчанию 400) — Размер преобразования Фурье.
  • padding_value (float, необязательный, по умолчанию 0.0) — Значение, используемое для дополнения аудио. Должно соответствовать тишине.
  • dither (float, необязательный, по умолчанию 0.0) — Добавляет диттеринг. Другими словами, добавляет небольшой гауссов шум к каждому кадру. Например, значение 0.0001 добавляет диттеринг с нормальным распределением, центром 0.0 и стандартным отклонением 0.0001 (при условии диапазона [-1,+1] для raw_speech). Значение 0.0 означает отсутствие диттеринга. Диттеринг оказывает аналогичный эффект, что и spectrogram(mel_floor=...). Он снижает высокие значения log_mel_fbank для сигналов с участками, где сигнал равен нулю, когда в сигнале присутствует срез VAD.

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

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

Этот класс извлекает характеристики мел-фильтрового банка из сырых речевых данных с помощью собственной реализации Short Time Fourier Transform на numpy, которая должна совпадать с эквивалентом torch.stft в pytorch.

__call__

< >

( raw_speech: numpy.ndarray | list[float] | list[numpy.ndarray] | list[list[float]]truncation: bool = Truepad_to_multiple_of: int | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonereturn_attention_mask: bool | None = Nonepadding: str | None = 'max_length'max_length: int | None = Nonesampling_rate: int | None = Nonedo_normalize: bool | None = Nonedevice: str | None = 'cpu'**kwargs )

Параметры

  • raw_speech (np.ndarray, list[float], list[np.ndarray], list[list[float]]) — Последовательность или батч последовательностей, для которых требуется выравнивание. Каждая последовательность может быть массивом numpy, списком значений float, списком массивов numpy или списком списков значений float. Аудио должно быть моноканальным, а не стерео, то есть одно значение float на каждый момент времени.
  • truncation (bool, необязательный, по умолчанию True) — Включает усечение, чтобы сократить входные последовательности длиннее max_length до max_length.
  • pad_to_multiple_of (int, необязательный, по умолчанию None) — Если задано, последовательность будет дополнена до кратного указанного значения.

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

  • return_tensors (str или TensorType, необязательный) — Если задано, возвращает тензоры вместо списка целых чисел Python. Допустимые значения:
    • 'pt': возвращает объекты torch.Tensor PyTorch.
    • 'np': возвращает объекты Numpy np.ndarray.
  • return_attention_mask (bool, необязательный) — Определяет, следует ли возвращать attention mask. Если значение не задано, attention mask будет возвращена в соответствии со значением по умолчанию конкретного feature_extractor.

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

    Для моделей Whisper при пакетном выводе всегда следует передавать attention_mask, чтобы избежать тонких ошибок.

  • padding (str или PaddingStrategy, , необязательный, по умолчанию 'max_length') — Включает и управляет выравниванием. Принимает следующие значения:
    • 'longest': дополнить до самой длинной последовательности в батче (или не дополнять, если предоставлена только одна последовательность).
    • 'max_length' (по умолчанию): дополняет последовательность до максимальной длины, заданной аргументом max_length, или до максимально допустимой длины входа для модели, если этот аргумент не указан.
    • 'do_not_pad': Без дополнения (т. е. может выводить батч с последовательностями разной длины).
  • max_length (int, необязательный) — Управляет максимальной длиной, используемой одним из параметров усечения/дополнения.

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

  • sampling_rate (int, необязательный) — Частота дискретизации, с которой вход raw_speech был оцифрован. Настоятельно рекомендуется передавать sampling_rate при вызове forward, чтобы избежать скрытых ошибок и обеспечить работу конвейера автоматического распознавания речи.
  • do_normalize (bool, необязательный, по умолчанию False) — Указывает, следует ли нормализовать входные данные до нулевого среднего и единичной дисперсии. Нормализация может значительно повысить производительность модели.
  • device (str, необязательный, по умолчанию 'cpu') — Указывает устройство для вычисления лог-мел-спектрограммы аудиосигналов в методе _torch_extract_fbank_features. (например, “cpu”, “cuda”)
  • **kwargs — не поддерживается в WhisperFeatureExtractor.call() и игнорируется.

Основной метод для извлечения признаков и подготовки одной или нескольких последовательностей для модели. Реализация использует PyTorch для вычисления STFT, если он доступен, в противном случае — более медленную реализацию на основе NumPy.

WhisperProcessor

класс transformers.WhisperProcessor

< >

( feature_extractortokenizer )

Параметры

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

Создаёт WhisperProcessor, который объединяет feature extractor и tokenizer в единый processor.

WhisperProcessor предоставляет все возможности WhisperFeatureExtractor и WhisperTokenizer. Подробнее см. в разделах ~WhisperFeatureExtractor и ~WhisperTokenizer.

__call__

< >

( *args**kwargs )

Параметры

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

from_pretrained

< >

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

Параметры

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

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

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

save_pretrained

< >

( save_directorypush_to_hub: bool = False**kwargs )

Параметры

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

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

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

batch_decode

< >

( *args**kwargs )

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

decode

< >

( *args**kwargs )

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

WhisperModel

класс transformers.WhisperModel

< >

( config: WhisperConfig )

Параметры

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

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

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

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

forward

< >

( input_features: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: tuple[tuple[torch.Tensor]] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonedecoder_inputs_embeds: tuple[torch.Tensor] | None = Nonedecoder_position_ids: tuple[torch.LongTensor] | None = Noneuse_cache: bool | None = None**kwargs ) → Seq2SeqModelOutput or tuple(torch.Tensor)

Параметры

  • input_features (torch.Tensor формы (batch_size, sequence_length, feature_dim), необязательный) — Тензоры, соответствующие входным аудиособытиям. Аудиособытия можно получить с помощью WhisperFeatureExtractor. Подробности см. в WhisperFeatureExtractor.call() (WhisperProcessor использует WhisperFeatureExtractor для обработки аудио).
  • attention_mask (torch.LongTensor формы (batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

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

  • decoder_input_ids (torch.LongTensor формы (batch_size, target_sequence_length), необязательный) — Индексы токенов входной последовательности декодера в словаре. Индексы можно получить с помощью WhisperTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call(). Что такое decoder input IDs? Whisper использует decoder_start_token_id в качестве начального токена для генерации decoder_input_ids. Если используется past_key_values, необязательно вводить все decoder_input_ids — достаточно только последних (см. past_key_values).

    Индексы можно получить с помощью WhisperTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().

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

    Whisper использует decoder_start_token_id в качестве начального токена для генерации decoder_input_ids. Если используется past_key_values, то, по желанию, в качестве входных данных можно передать только последний decoder_input_ids (см. past_key_values).

  • decoder_attention_mask (torch.LongTensor формы (batch_size, target_sequence_length), , необязательный) — Поведение по умолчанию: генерирует тензор, игнорирующий токены заполнения в decoder_input_ids. Маска причинности также будет использоваться по умолчанию. Если вы хотите изменить поведение при заполнении, прочитайте modeling_whisper._prepare_decoder_attention_mask и измените его в соответствии со своими потребностями. Подробнее о стратегии по умолчанию см. на рисунке 1 в статье BART.

    Если вы хотите изменить поведение отступов, вам следует изучить modeling_whisper._prepare_decoder_attention_mask и внести необходимые изменения. Дополнительную информацию о стратегии по умолчанию см. на рисунке 1 в статьи BART.

  • encoder_outputs (tuple[tuple[torch.Tensor]], необязательный) — Кортеж состоит из (last_hidden_state, необязательный: hidden_states, необязательный: attentions) last_hidden_state формы (batch_size, sequence_length, hidden_size), необязательный) — последовательность скрытых состояний на выходе последнего слоя энкодера. Используется в кросс-внимании декодера.
  • past_key_values (~cache_utils.Cache, необязательный) — Предвычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно это past_key_values , возвращённые моделью на предыдущем этапе декодирования, когда use_cache=True или config.use_cache=True.

    В качестве входного параметра допускается только экземпляр Cache, см. наше руководство по кэшу KV. Если past_key_values не переданы, по умолчанию будет инициализирован DynamicCache.

    Модель будет выводить тот же формат кэша, который был передан на вход.

    Если используются past_key_values, ожидается, что пользователь передаст только необработанные input_ids (те, для которых в этой модели ещё не заданы состояния прошлых ключей и значений) формы (batch_size, unprocessed_length), а не все input_ids формы (batch_size, sequence_length).

  • decoder_inputs_embeds (tuple[torch.Tensor] формы (batch_size, target_sequence_length, hidden_size), необязательный) — Необязательно, вместо передачи decoder_input_ids можно напрямую передать встроенное представление. Если past_key_values используется, необязательно вводить только последний decoder_inputs_embeds (см. past_key_values). Это полезно, если вы хотите больше контролировать, как индексы decoder_input_ids преобразуются в соответствующие векторы, чем это делает внутренняя матрица поиска эмбеддингов модели.

    Если decoder_input_ids и decoder_inputs_embeds не заданы, decoder_inputs_embeds принимает значение inputs_embeds.

  • decoder_position_ids (torch.LongTensor формы (batch_size, sequence_length), необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбираются из диапазона [0, config.n_positions - 1].

    Что такое идентификаторы позиций?

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

Возвращает

Seq2SeqModelOutput или tuple(torch.Tensor)

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

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

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

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

    Если используется past_key_values, выводится только последнее скрытое состояние последовательностей формы (batch_size, 1, hidden_size).

  • past_key_values (EncoderDecoderCache, необязательный, возвращается при передаче use_cache=True или когда config.use_cache=True) — это экземпляр EncoderDecoderCache. Подробнее см. в нашем руководстве по кэшу kv.

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

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

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

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

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

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

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

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

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

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

  • encoder_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 AutoFeatureExtractor, WhisperModel
>>> from datasets import load_dataset

>>> model = WhisperModel.from_pretrained("openai/whisper-base")
>>> feature_extractor = AutoFeatureExtractor.from_pretrained("openai/whisper-base")
>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> inputs = feature_extractor(ds[0]["audio"]["array"], return_tensors="pt")
>>> input_features = inputs.input_features
>>> decoder_input_ids = torch.tensor([[1, 1]]) * model.config.decoder_start_token_id
>>> last_hidden_state = model(input_features, decoder_input_ids=decoder_input_ids).last_hidden_state
>>> list(last_hidden_state.shape)
[1, 2, 512]

_mask_input_features

< >

( input_features: Tensorattention_mask: typing.Optional[torch.LongTensor] = None )

Маски скрывают признаки вдоль временной оси и/или вдоль оси признаков в соответствии с SpecAugment.

WhisperForConditionalGeneration

класс transformers.WhisperForConditionalGeneration

< >

( config: WhisperConfig )

Параметры

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

Модель Whisper с головой языковой модели. Может использоваться для автоматического распознавания речи.

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

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

forward

< >

( input_features: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: tuple[tuple[torch.Tensor]] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonedecoder_inputs_embeds: tuple[torch.Tensor] | None = Nonedecoder_position_ids: tuple[torch.LongTensor] | None = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = None**kwargs ) → Seq2SeqLMOutput or tuple(torch.Tensor)

Параметры

  • input_features (torch.Tensor формы (batch_size, sequence_length, feature_dim), необязательный) — Тензоры, соответствующие входным аудиособытиям. Аудиособытия можно получить с помощью WhisperFeatureExtractor. Подробности см. в WhisperFeatureExtractor.call() (WhisperProcessor использует WhisperFeatureExtractor для обработки аудио).
  • attention_mask (torch.LongTensor формы (batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

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

  • decoder_input_ids (torch.LongTensor формы (batch_size, target_sequence_length), необязательный) — Индексы токенов входной последовательности декодера в словаре. Индексы можно получить с помощью WhisperTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call(). Что такое decoder input IDs? Whisper использует decoder_start_token_id в качестве начального токена для генерации decoder_input_ids. Если используется past_key_values, необязательно вводить все decoder_input_ids — достаточно только последних (см. past_key_values).

    Индексы можно получить с помощью WhisperTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().

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

    Whisper использует decoder_start_token_id в качестве начального токена для генерации decoder_input_ids. Если используется past_key_values, то, по желанию, в качестве входных данных можно передать только последний decoder_input_ids (см. past_key_values).

  • decoder_attention_mask (torch.LongTensor формы (batch_size, target_sequence_length), , необязательный) — Поведение по умолчанию: генерирует тензор, игнорирующий токены заполнения в decoder_input_ids. Маска причинности также будет использоваться по умолчанию. Если вы хотите изменить поведение при заполнении, прочитайте modeling_whisper._prepare_decoder_attention_mask и измените его в соответствии со своими потребностями. Подробнее о стратегии по умолчанию см. на рисунке 1 в статье BART.

    Если вы хотите изменить поведение отступов, вам следует изучить modeling_whisper._prepare_decoder_attention_mask и внести необходимые изменения. Дополнительную информацию о стратегии по умолчанию см. на рисунке 1 в статьи BART.

  • encoder_outputs (tuple[tuple[torch.Tensor]], необязательный) — Кортеж состоит из (last_hidden_state, необязательный: hidden_states, необязательный: attentions) last_hidden_state формы (batch_size, sequence_length, hidden_size), необязательный) — последовательность скрытых состояний на выходе последнего слоя энкодера. Используется в кросс-внимании декодера.
  • past_key_values (~cache_utils.Cache, необязательный) — Предвычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно это past_key_values , возвращённые моделью на предыдущем этапе декодирования, когда use_cache=True или config.use_cache=True.

    В качестве входного параметра допускается только экземпляр Cache, см. наше руководство по кэшу KV. Если past_key_values не переданы, по умолчанию будет инициализирован DynamicCache.

    Модель будет выводить тот же формат кэша, который был передан на вход.

    Если используются past_key_values, ожидается, что пользователь передаст только необработанные input_ids (те, для которых в этой модели ещё не заданы состояния прошлых ключей и значений) формы (batch_size, unprocessed_length), а не все input_ids формы (batch_size, sequence_length).

  • decoder_inputs_embeds (tuple[torch.Tensor] формы (batch_size, target_sequence_length, hidden_size), необязательный) — Необязательно, вместо передачи decoder_input_ids можно напрямую передать встроенное представление. Если past_key_values используется, необязательно вводить только последний decoder_inputs_embeds (см. past_key_values). Это полезно, если вы хотите больше контролировать, как индексы decoder_input_ids преобразуются в соответствующие векторы, чем это делает внутренняя матрица поиска эмбеддингов модели.

    Если decoder_input_ids и decoder_inputs_embeds не заданы, decoder_inputs_embeds принимает значение inputs_embeds.

  • decoder_position_ids (torch.LongTensor формы (batch_size, sequence_length), необязательный) — Индексы позиций токенов каждого входного последовательности в позиционных эмбеддингах. Выбираются из диапазона [0, config.n_positions - 1].

    Что такое идентификаторы позиций?

  • labels (torch.LongTensor формы (batch_size, sequence_length), необязательный) — Метки для вычисления потерь языковой модели. Индексы должны находиться в диапазоне [0, ..., config.vocab_size] или быть равны -100 (см. docstring input_ids). Токены с индексами, установленными в -100, игнорируются (маскируются); потери вычисляются только для токенов, у которых метки находятся в диапазоне [0, ..., config.vocab_size]. sequence_length должно быть меньше или равно config.max_target_positions.
  • use_cache (bool, необязательный) — Если установлено в True, возвращаются состояния ключей и значений past_key_values, которые можно использовать для ускорения декодирования (см. past_key_values).

Возвращает

Seq2SeqLMOutput или tuple(torch.Tensor)

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

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

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

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

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

  • past_key_values (EncoderDecoderCache, необязательный, возвращается при передаче use_cache=True или когда config.use_cache=True) — это экземпляр EncoderDecoderCache. Подробнее см. в нашем руководстве по кэшу kv.

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

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

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

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

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

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

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

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

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

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

  • encoder_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 AutoProcessor, WhisperForConditionalGeneration
>>> from datasets import load_dataset

>>> processor = AutoProcessor.from_pretrained("openai/whisper-tiny.en")
>>> model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-tiny.en")

>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")

>>> inputs = processor(ds[0]["audio"]["array"], return_tensors="pt")
>>> input_features = inputs.input_features

>>> generated_ids = model.generate(inputs=input_features)

>>> transcription = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
>>> transcription
' Mr. Quilter is the apostle of the middle classes, and we are glad to welcome his gospel.'

generate

< >

( input_features: typing.Optional[torch.Tensor] = Nonegeneration_config: transformers.generation.configuration_utils.GenerationConfig | None = Nonelogits_processor: transformers.generation.logits_process.LogitsProcessorList | None = Nonestopping_criteria: transformers.generation.stopping_criteria.StoppingCriteriaList | None = Noneprefix_allowed_tokens_fn: collections.abc.Callable[[int, torch.Tensor], list[int]] | None = Nonesynced_gpus: bool = Falsereturn_timestamps: bool | None = Nonetask: str | None = Nonelanguage: str | list[str] | None = Noneis_multilingual: bool | None = Noneprompt_ids: typing.Optional[torch.Tensor] = Noneprompt_condition_type: str | None = Nonecondition_on_prev_tokens: bool | None = Nonetemperature: float | tuple[float, ...] | None = Nonecompression_ratio_threshold: float | None = Nonelogprob_threshold: float | None = Noneno_speech_threshold: float | None = Nonenum_segment_frames: int | None = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetime_precision: float = 0.02time_precision_features: float = 0.01return_token_timestamps: bool | None = Nonereturn_segments: bool = Falsereturn_dict_in_generate: bool | None = Noneforce_unique_generate_call: bool | None = Nonemonitor_progress: collections.abc.Callable[[torch.Tensor], None] | None = None**kwargs ) → ModelOutput or dict[str, Any] or torch.LongTensor

Параметры

  • input_features (torch.Tensor формы (batch_size, feature_size, sequence_length), необязательный) — Значения типа float для лог-мел-фич, извлечённых из исходной речевой волны. Исходную речевую волну можно получить, загрузив аудиофайл .flac или .wav в массив типа list[float], numpy.ndarray или torch.Tensor, например с помощью библиотеки torchcodec (pip install torchcodec) или библиотеки soundfile (pip install soundfile). Для подготовки массива в input_features следует использовать AutoFeatureExtractor для извлечения мел-фич, добавления отступов (padding) и преобразования в тензор типа torch.Tensor. Подробнее см. call().
  • generation_config (GenerationConfig, optional) — Конфигурация генерации, используемая в качестве базовой параметризации для вызова генерации. **kwargs, передаваемые в generate и совпадающие с атрибутами generation_config, переопределяют их. Если generation_config не указан, будет использован вариант по умолчанию, который загружается со следующим приоритетом: 1) из файла модели generation_config.json, если он существует; 2) из конфигурации модели. Обратите внимание, что не указанные параметры наследуют значения по умолчанию из GenerationConfig, документация по которым должна быть проверена для параметризации генерации.
  • logits_processor (LogitsProcessorList, необязательный) — Пользовательские обработчики logits, дополняющие стандартные обработчики logits, создаваемые на основе аргументов и конфигурации генерации. Если передан обработчик logits, который уже был создан с помощью аргументов или конфигурации генерации, возникает ошибка. Эта функция предназначена для опытных пользователей.
  • stopping_criteria (StoppingCriteriaList, необязательный) — Пользовательские критерии остановки, дополняющие критерии остановки по умолчанию, формируемые на основе аргументов и конфигурации генерации. Если передан критерий остановки, который уже был создан с использованием аргументов или конфигурации генерации, возникает ошибка. Эта функция предназначена для опытных пользователей.
  • prefix_allowed_tokens_fn (Callable[[int, torch.Tensor], list[int]], необязательный) — Если указан, этот параметр ограничивает поиск лучами (beam search) только разрешёнными токенами на каждом шаге. Если не указан, ограничения не применяются. Функция принимает два аргумента: идентификатор батча batch_id и input_ids. Она должна возвращать список разрешённых токенов для следующего шага генерации, зависящий от идентификатора батча batch_id и ранее сгенерированных токенов inputs_ids. Этот аргумент полезен для ограниченной генерации, обусловленной префиксом, как описано в Autoregressive Entity Retrieval.
  • synced_gpus (bool, необязательный, по умолчанию False) — Определяет, следует ли продолжать выполнение цикла while до достижения max_length (необходимо для предотвращения блокировок при использовании FullyShardedDataParallel и DeepSpeed ZeRO Stage 3).
  • return_timestamps (bool, необязательный) — Определяет, нужно ли возвращать временные метки вместе с текстом. Это активирует WhisperTimestampsLogitsProcessor. Для аудио длительностью более 30 секунд необходимо установить return_timestamps=True.
  • task (str, необязательный) — Задача, используемая для генерации: «translate» или «transcribe».
  • language (str или список str, необязательный) — Токен языка, используемый для генерации. Может быть задан в виде <|en|>, en или english. При пакетной генерации можно передать список токенов языка. Все возможные токены языков перечислены в словаре model.generation_config.lang_to_id.
  • is_multilingual (bool, необязательный) — Указывает, является ли модель многоязычной.
  • prompt_ids (torch.Tensor, необязательный) — тензор ранга 1 с идентификаторами токенов, созданный путём передачи текста в get_prompt_ids(), который предоставляется в качестве промпта для каждого фрагмента. Это можно использовать для предоставления или «промпт-инжиниринга» контекста для транскрипции, например, для пользовательских словарей или собственных имён, чтобы повысить вероятность правильного предсказания этих слов. Его нельзя использовать вместе с decoder_start_token_id, так как он переопределяет это значение.
  • prompt_condition_type (str, необязательный) — Актуально только для транскрипции длинных форм. Тип условия для prompt_ids. Значение ‘first-segment’ означает, что условием для prompt_ids служит только первый сегмент. Значение ‘all-segments’ означает, что каждый сегмент обусловлен prompt_ids. Для ‘all-segments’ убедитесь, что включён параметр condition_on_prev_tokens. По умолчанию используется ‘first-segment’. Для транскрипции коротких форм возможно только значение ‘first-segment’.
  • condition_on_prev_tokens (bool, необязательный) — Имеет значение только для расшифровки длинных текстов. Определяет, следует ли использовать предыдущий сегмент как условие для текущего. Как показано в статье о Whisper, это может улучшить результаты.
  • temperature (float или список float, необязательный) — Температура, используемая для генерации. Передача одного значения float и do_sample=True активирует генерацию с использованием сэмплирования. Для транскрипции длинных текстов можно активировать fallback температуры, передав список значений float, например (0.0, 0.2, 0.4, 0.6, 0.8, 1.0). Как показано в статье о Whisper, это может помочь улучшить производительность.
  • compression_ratio_threshold (float, необязательный) — Используется только для расшифровки длинных аудио. Если параметр задан, для каждого сегмента вычисляется коэффициент сжатия zlib. Если коэффициент сжатия сегмента превышает compression_ratio_threshold, активируется механизм отката температуры: сгенерированный сегмент отбрасывается, а генерация повторяется с более высокой температурой. Суть этого механизма в том, что сегменты с очень высоким коэффициентом сжатия страдают от избыточного повторения. Нежелательные повторы можно уменьшить, добавив больше случайности за счет повышения температуры. Если compression_ratio_threshold задан, убедитесь, что temperature представляет собой список значений. Типичное значение для compression_ratio_threshold — 1.35. Как показано в статье о Whisper, это может помочь улучшить качество работы.
  • logprob_threshold (float, необязательный) — Используется только для расшифровки длинных аудио. Если параметр задан, вычисляется средняя логарифмическая вероятность каждого сегмента. Если логарифмическая вероятность конкретного сегмента ниже logprob_threshold, включается механизм отката температуры: сгенерированный сегмент отбрасывается, а генерация повторяется с более высокой температурой. Смысл этого механизма в том, что сегменты с низкой логарифмической вероятностью можно улучшить, добавив больше случайности за счёт повышения температуры. Если logprob_threshold задан, убедитесь, что temperature представляет собой список значений. Типичное значение для logprob_threshold — -1.0. Как показано в статьи о Whisper, это может помочь повысить качество распознавания.
  • no_speech_threshold (float, необязательный) — Используется только для транскрипции длинных аудио. Если задано, то токен «no-speech» в сочетании с logprob_threshold используется для определения, содержит ли сегмент только тишину. В этом случае транскрипция данного сегмента пропускается. Как показано в статьи о Whisper, это может помочь улучшить производительность.
  • num_segment_frames (int, необязательный) — Количество кадров, из которых состоит один сегмент. Если не задано, num_segment_frames по умолчанию равно шагу модели, умноженному на максимальную длину входных данных.
  • attention_mask (torch.Tensor, необязательный) — attention_mask необходимо передавать при выполнении транскрипции длинных форм с размером батча > 1.
  • time_precision (int, необязательный, по умолчанию 0.02) — Длительность вывода токена в секундах. Например, 0.02 означает, что сгенерированный токен в среднем занимает 20 мс.
  • time_precision_features (int, необязательный, по умолчанию 0.01) — Длительность, которую представляет кадр признаков, в секундах.
  • return_token_timestamps (bool, необязательный) — Возвращать ли временные метки на уровне токенов вместе с текстом. Можно использовать независимо от опции return_timestamps. Чтобы получить временные метки на уровне слов, используйте токенизатор для группировки токенов в слова.
  • return_segments (bool, необязательный, по умолчанию False) — Указывает, следует ли дополнительно возвращать список всех сегментов. Обратите внимание, что этот параметр можно включить только при выполнении транскрипции длинных аудио.
  • return_dict_in_generate (bool, необязательный, по умолчанию False) — Определяет, следует ли возвращать объект ModelOutput вместо простого возврата сгенерированных токенов. Обратите внимание, что при выполнении транскрипции длинных текстов параметр return_dict_in_generate можно включить только в том случае, если return_segments установлен в True. В этом случае выходные данные генерации для каждого сегмента добавляются к соответствующему сегменту.
  • force_unique_generate_call (bool, необязательный) — Определяет, следует ли принудительно выполнять единственный вызов метода generate() базового класса GenerationMixin. Это полезно для assisted decoding и тестирования, чтобы гарантировать, что вызов generate() выполняется только один раз, и, как следствие, возвращаются идентификаторы входных токенов декодера и идентификаторы токенов eos.
  • monitor_progress (Callable[[torch.Tensor], None], необязательный) — Если указан, эта функция может вызываться для отчёта о ходе транскрибации аудио. Функция принимает аргумент-тензор p формы (n, 2), где n — размер батча. p[i, 0] содержит индекс аудиокадра, который в данный момент транскрибируется для элемента батча i. p[i, 1] содержит общее количество кадров для элемента батча i. Возвращаемое значение не ожидается.
  • kwargs (dict[str, Any], необязательный) — Спецификация параметров generate_config и/или дополнительные аргументы, специфичные для модели, которые будут переданы в функцию forward модели. Если модель является моделью типа encoder-decoder, аргументы, специфичные для энкодера, не должны иметь префикса, а аргументы, специфичные для декодера, должны иметь префикс decoder_.

Возвращает

ModelOutput или dict[str, Any] или torch.LongTensor

Одно из следующих:

  • ModelOutput, если return_dict_in_generate=True и (return_timestamps=False или force_unique_generate_call=True), включая входные идентификаторы декодера и идентификатор конца последовательности.
  • dict[str, Any], если (return_dict_in_generate=True и return_timestamps=True) или return_segments=True или return_token_timestamps=True.
  • torch.LongTensor во всех остальных случаях, за исключением идентификаторов входных данных декодера и идентификатора конца последовательности.

Возможные типы ModelOutput:

segments — это список списков (по одному списку на элемент батча), содержащий объекты segment. Каждый segment — это словарь с ключами start, end, tokens, idxs и result.

  • start: начальное время сегмента.
  • end: конечная метка времени сегмента.
  • tokens: токены сегмента, за исключением идентификаторов входных данных декодера и идентификатора конца последовательности.
  • idxs: начальный (включительно) и конечный (не включительно) индексы tokens сегмента в исходном вызове generate() GenerationMixin (присутствуют в result).
  • result: результат базового вызова generate() из GenerationMixin.

При return_timestamps=True return_dict_in_generate=True применяется к каждому вызову метода generate() базового класса GenerationMixin, а результаты сохраняются в result каждого segment.

Транскрибирует или переводит входные лог-мел-фичи в последовательность токен-идентификаторов, генерируемых авто-регрессивно.

Большинство параметров, управляющих генерацией, задаются в generation_config, который, если не передан явно, принимает значения конфигурации генерации по умолчанию для модели. Вы можете переопределить любые параметры generation_config, передав соответствующие аргументы в generate(), например, .generate(inputs, num_beams=4, do_sample=True).

Обзор стратегий генерации и примеры кода приведены в следующем руководстве.

Пример:

  • Транскрибация длинных аудио: чтобы транскрибировать или переводить аудиозаписи длительностью более 30 секунд, обрабатывайте аудиофайлы без усечения и передавайте все mel-фичи в generate одним вызовом. Необходимо установить return_timestamps=True. Действительно, транскрибация длинных аудио использует последовательный алгоритм, основанный на предсказании временных меток, с эвристиками, такими как порог коэффициента сжатия, порог логарифмической вероятности и fallback по температуре. Этот алгоритм описан в оригинальной статье Whisper, раздел 3.8. Long-form Transcription.
>>> import torch
>>> from transformers import AutoProcessor, WhisperForConditionalGeneration
>>> from datasets import load_dataset, Audio

>>> processor = AutoProcessor.from_pretrained("openai/whisper-tiny.en")
>>> model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-tiny.en")
>>> model.cuda()
>>> # load audios > 30 seconds
>>> ds = load_dataset("distil-whisper/meanwhile", "default")["test"]
>>> # resample to 16kHz
>>> ds = ds.cast_column("audio", Audio(sampling_rate=16000))
>>> # take first 8 audios and retrieve array
>>> audio = ds[:8]["audio"]
>>> audio = [x["array"] for x in audio]

>>> # make sure to NOT truncate the input audio, to return the `attention_mask` and to pad to the longest audio
>>> inputs = processor(audio, return_tensors="pt", truncation=False, padding="longest", return_attention_mask=True, sampling_rate=16_000)
>>> inputs = inputs.to("cuda", torch.float32)

>>> # transcribe audio to ids
>>> generated_ids = model.generate(**inputs, return_timestamps=True)

>>> transcription = processor.batch_decode(generated_ids, skip_special_tokens=True)
>>> transcription[0]
" Folks, if you watch the show, you know, I spent a lot of time right over there. Patiently and astutely scrutinizing the boxwood and mahogany chest set of the day's biggest stories developing the central headline pawns, definitely maneuvering an oso topical night to F6, fainting a classic Sicilian, nade door variation on the news, all the while seeing eight moves deep and patiently marshalling the latest press releases into a fisher's shows in Lip Nitsky attack that culminates in the elegant lethal slow-played, all-passant checkmate that is my nightly monologue. But sometimes, sometimes, folks, I. CHEERING AND APPLAUSE Sometimes I startle away, cubside down in the monkey bars of a condemned playground on a super fun site. Get all hept up on goofballs. Rummage that were discarded tag bag of defective toys. Yank out a fist bowl of disembodied doll limbs, toss them on a stained kid's place mat from a defunct dennies. set up a table inside a rusty cargo container down by the Wharf and challenged toothless drifters to the godless bughouse blitz of tournament that is my segment. Meanwhile."

Колбэк monitor_progress можно использовать для отслеживания хода транскрибации:

>>> from tqdm import tqdm

>>> # prepare inputs like above

>>> # define a callback to monitor the progress of the transcription.
>>> with tqdm(desc="Progress") as pbar:
>>>     def monitor_progress(p_batch):
>>>         i = torch.argmax(p_batch[:, 1])
>>>         p = p_batch[i].detach().cpu()
>>>         pbar.total = int(p[1])
>>>         pbar.n = int(p[0])
>>>         pbar.update()

>>>     # transcribe audio to ids
>>>     generated_ids = model.generate(**inputs, return_timestamps=True, monitor_progress=monitor_progress)

>>> transcription = processor.batch_decode(generated_ids, skip_special_tokens=True)
>>> transcription[0]
Progress:  95%|█████████████████████████████████████████████████████████████████████████████████████████████████▎    | 8497/8901 [00:04<00:00, 2052.79it/s]
" Folks, if you watch the show, you know, I spent a lot of time right over there. Patiently and astutely scrutinizing the boxwood and mahogany chest set of the day's biggest stories developing the central headline pawns, definitely maneuvering an oso topical night to F6, fainting a classic Sicilian, nade door variation on the news, all the while seeing eight moves deep and patiently marshalling the latest press releases into a fisher's shows in Lip Nitsky attack that culminates in the elegant lethal slow-played, all-passant checkmate that is my nightly monologue. But sometimes, sometimes, folks, I. CHEERING AND APPLAUSE Sometimes I startle away, cubside down in the monkey bars of a condemned playground on a super fun site. Get all hept up on goofballs. Rummage that were discarded tag bag of defective toys. Yank out a fist bowl of disembodied doll limbs, toss them on a stained kid's place mat from a defunct dennies. set up a table inside a rusty cargo container down by the Wharf and challenged toothless drifters to the godless bughouse blitz of tournament that is my segment. Meanwhile."
  • Короткая транскрипция: Если переданные входные mel-признаки имеют длительность <= 30 секунд, возможны два варианта:
    • return_timestamps=False: весь аудиофайл будет распознан за один вызов generate() из GenerationMixin.
    • return_timestamps=True: аудио будет транскрибировано с использованием той же логики, что и при транскрипции длинных форматов.
>>> import torch
>>> from transformers import AutoProcessor, WhisperForConditionalGeneration
>>> from datasets import load_dataset

>>> processor = AutoProcessor.from_pretrained("openai/whisper-tiny.en")
>>> model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-tiny.en")

>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")

>>> inputs = processor(ds[0]["audio"]["array"], return_tensors="pt")
>>> input_features = inputs.input_features

>>> generated_ids = model.generate(inputs=input_features)

>>> transcription = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
>>> transcription
' Mr. Quilter is the apostle of the middle classes, and we are glad to welcome his gospel.'

WhisperForCausalLM

класс transformers.WhisperForCausalLM

< >

( config: WhisperConfig )

Параметры

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

Декодер Whisper с головой моделирования языка сверху (линейный слой с весами, связанными с входными эмбеддингами).

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

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

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneencoder_outputs: tuple[torch.Tensor] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = None**kwargs ) → CausalLMOutputWithCrossAttentions or tuple(torch.Tensor)

Параметры

  • input_ids (torch.LongTensor формы (batch_size, sequence_length), , необязательный) — Индексы токенов входной последовательности в словаре. По умолчанию токены отсечки (padding) игнорируются.

    Индексы можно получить с помощью AutoTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().

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

  • attention_mask (torch.Tensor формы (batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона [0, 1]:
    • 1 для токенов, которые не замаскированы,
    • 0 для токенов, которые замаскированы.

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

  • encoder_outputs (torch.Tensor формы (batch_size, sequence_length, hidden_size), необязательный) — Последовательность скрытых состояний на выходе последнего слоя энкодера. Используется в кросс-внимании, если модель настроена как декодер.
  • past_key_values (~cache_utils.Cache, необязательный) — Предвычисленные скрытые состояния (ключи и значения в блоках само-внимания и кросс-внимания), которые можно использовать для ускорения последовательного декодирования. Обычно это past_key_values , возвращённые моделью на предыдущем этапе декодирования, когда use_cache=True или config.use_cache=True.

    В качестве входного параметра допускается только экземпляр Cache, см. наше руководство по кэшу KV. Если past_key_values не переданы, по умолчанию будет инициализирован DynamicCache.

    Модель будет выводить тот же формат кэша, который был передан на вход.

    Если используются past_key_values, ожидается, что пользователь передаст только необработанные input_ids (те, для которых в этой модели ещё не заданы состояния прошлых ключей и значений) формы (batch_size, unprocessed_length), а не все input_ids формы (batch_size, sequence_length).

  • inputs_embeds (torch.Tensor формы (batch_size, sequence_length, hidden_size), необязательный) — При необходимости, вместо передачи input_ids можно напрямую передать встроенное представление. Это полезно, если требуется больший контроль над тем, как индексы input_ids преобразуются в соответствующие векторы, чем это обеспечивает внутренняя матрица поиска встраиваний модели.
  • labels (torch.LongTensor формы (batch_size, sequence_length), необязательный) — Метки для вычисления потерь маскированного языкового моделирования. Индексы должны находиться в диапазоне [0, ..., config.vocab_size] или быть равны -100 (см. docstring input_ids). Токены с индексами, установленными в -100, игнорируются (маскируются); потери вычисляются только для токенов с метками в диапазоне [0, ..., config.vocab_size].
  • use_cache (bool, необязательный) — Если установлено в True, возвращаются состояния ключей и значений past_key_values, которые можно использовать для ускорения декодирования (см. past_key_values).

Возвращает

CausalLMOutputWithCrossAttentions или tuple(torch.Tensor)

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

Метод forward класса WhisperForCausalLM переопределяет специальный метод __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 в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.

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

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

  • past_key_values (Cache, необязательный, возвращается при передаче use_cache=True или когда config.use_cache=True) — это экземпляр Cache. Подробнее см. в нашем руководстве по кэшу kv.

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

Пример:

>>> from transformers import WhisperForCausalLM, WhisperForConditionalGeneration, WhisperProcessor
>>> import torch
>>> from datasets import load_dataset

>>> processor = WhisperProcessor.from_pretrained("openai/whisper-large-v2")
>>> model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-large-v2")

>>> assistant_model = WhisperForCausalLM.from_pretrained("distil-whisper/distil-large-v2")

>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> sample = ds[0]["audio"]
>>> input_features = processor(
...     sample["array"], sampling_rate=sample["sampling_rate"], return_tensors="pt"
... ).input_features

>>> predicted_ids = model.generate(input_features, assistant_model=assistant_model)

>>> # decode token ids to text
>>> transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True)[0]
>>> transcription
' Mr. Quilter is the apostle of the middle classes and we are glad to welcome his gospel.'

WhisperForAudioClassification

класс transformers.WhisperForAudioClassification

< >

( config: WhisperConfig )

Параметры

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

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

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

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

forward

< >

( input_features: typing.Optional[torch.LongTensor] = Noneencoder_outputs: tuple[tuple[torch.Tensor]] | None = Nonelabels: typing.Optional[torch.LongTensor] = None**kwargs ) → SequenceClassifierOutput or tuple(torch.Tensor)

Параметры

  • input_features (torch.LongTensor формы (batch_size, sequence_length, feature_dim), необязательный) — Тензоры, соответствующие входным аудиособытиям. Аудиособытия можно получить с помощью WhisperFeatureExtractor. Подробности см. в WhisperFeatureExtractor.call() (WhisperProcessor использует WhisperFeatureExtractor для обработки аудио).
  • encoder_outputs (tuple[tuple[torch.Tensor]], необязательный) — Кортеж состоит из (last_hidden_state, необязательный: hidden_states, необязательный: attentions) last_hidden_state формы (batch_size, sequence_length, hidden_size), необязательный) — последовательность скрытых состояний на выходе последнего слоя энкодера. Используется в кросс-внимании декодера.
  • 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), содержащий различные элементы в зависимости от конфигурации (WhisperConfig) и входных данных.

Метод forward класса WhisperForAudioClassification переопределяет специальный метод __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 AutoFeatureExtractor, WhisperForAudioClassification
>>> from datasets import load_dataset

>>> feature_extractor = AutoFeatureExtractor.from_pretrained("sanchit-gandhi/whisper-medium-fleurs-lang-id")
>>> model = WhisperForAudioClassification.from_pretrained("sanchit-gandhi/whisper-medium-fleurs-lang-id")

>>> ds = load_dataset("google/fleurs", "all", split="validation", streaming=True)
>>> sample = next(iter(ds))

>>> inputs = feature_extractor(
...     sample["audio"]["array"], sampling_rate=sample["audio"]["sampling_rate"], return_tensors="pt"
... )
>>> input_features = inputs.input_features

>>> with torch.no_grad():
...     logits = model(input_features).logits

>>> predicted_class_ids = torch.argmax(logits).item()
>>> predicted_label = model.config.id2label[predicted_class_ids]
>>> predicted_label
'Afrikaans'
Update on GitHub