Transformers documentation
Whisper
Эта модель была опубликована в HF papers 06.12.2022 и добавлена в Hugging Face Transformers 05.10.2022.
Whisper
Whisper — это трансформер с архитектурой «кодировщик-декодер» (sequence-to-sequence), предварительно обученный на 680 000 часов размеченных аудиоданных. Такой объём данных для предварительного обучения обеспечивает работу в режиме zero-shot на задачах обработки аудио на английском и многих других языках. Декодер позволяет Whisper преобразовывать представления речи, полученные кодировщиком, в полезные результаты, например текст, без дополнительного дообучения. Whisper готов к работе сразу после установки.
Все исходные контрольные точки Whisper можно найти в коллекции Whisper.
Щёлкните по моделям Whisper в боковой панели справа, чтобы увидеть больше примеров применения Whisper к различным задачам обработки аудио.
Установите
use_kernels=Trueв from_pretrained(), чтобы заменить поддерживаемые слои на оптимизированные ядра из Hub. Подробнее см. в разделе Загрузка ядер.
Приведённый ниже пример показывает, как автоматически преобразовать речь в текст с помощью Pipeline или класса 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")# pip install datasets
from datasets import load_dataset
from transformers import AutoProcessor, WhisperForConditionalGeneration
processor = AutoProcessor.from_pretrained(
"openai/whisper-large-v3-turbo",
)
model = WhisperForConditionalGeneration.from_pretrained(
"openai/whisper-large-v3-turbo",
device_map="auto",
attn_implementation="sdpa"
)
ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
audio_sample = ds[0]["audio"]
input_features = processor(
audio_sample["array"],
sampling_rate=audio_sample["sampling_rate"],
return_tensors="pt"
).input_features
input_features = input_features.to(model.device, dtype=model.dtype)
predicted_ids = model.generate(input_features, cache_implementation="static")
transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True)
transcription[0]Примечания
- Whisper использует собственный
generateдля инференса, обязательно ознакомьтесь с документацией ниже. - Объект WhisperProcessor используется для подготовки аудио и декодирования предсказанных идентификаторов обратно в текст.
WhisperConfig
класс transformers.WhisperConfig
< 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 = 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.configWhisperTokenizer
класс transformers.WhisperTokenizer
< source >( 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
< source >( 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
< source >( 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 токенизатора.
batch_decode
< source >( 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
< source >( 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)).
Нормализуйте заданную строку с помощью класса BasicTextNormalizer, который выполняет базовые преобразования для многоязычного текста.
Нормализуйте заданную строку с помощью класса EnglishTextNormalizer, который выполняет стандартные преобразования английского текста.
WhisperFeatureExtractor
класс transformers.WhisperFeatureExtractor
< source >( 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__
< source >( 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.TensorPyTorch.'np': возвращает объекты Numpynp.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
< source >( feature_extractortokenizer )
Создаёт WhisperProcessor, который объединяет feature extractor и tokenizer в единый processor.
WhisperProcessor предоставляет все возможности WhisperFeatureExtractor и WhisperTokenizer. Подробнее см. в разделах ~WhisperFeatureExtractor и ~WhisperTokenizer.
__call__
< source >( *args**kwargs )
Параметры
- return_tensors (
strили TensorType, необязательный) — Если задано, возвращает тензоры конкретного фреймворка. Допустимые значения:'pt': возвращает объектыtorch.TensorPyTorch.'np': возвращает объекты NumPynp.ndarray.
from_pretrained
< source >( pretrained_model_name_or_path: str | os.PathLikecache_dir: str | os.PathLike | None = Noneforce_download: bool = Falselocal_files_only: bool = Falsetoken: str | bool | None = Nonerevision: str = 'main'**kwargs )
Параметры
- pretrained_model_name_or_path (
strилиos.PathLike) — Это может быть:- строка, model id предобученного feature_extractor, размещенного в репозитории модели на huggingface.co.
- путь к каталогу, содержащему файл feature extractor, сохранённый с помощью метода
save_pretrained(), например,
./my_model_directory/. - путь к сохранённому JSON-файлу экстрактора признаков, например,
./my_model_directory/preprocessor_config.json.
- **kwargs —
Дополнительные именованные аргументы, передаваемые как в
from_pretrained(), так и в
~tokenization_utils_base.PreTrainedTokenizer.from_pretrained.
Создайте экземпляр процессора, связанного с предобученной моделью.
Этот метод класса просто вызывает метод from_pretrained() экстрактора признаков, метод ImageProcessingMixin процессора изображений и метод
~tokenization_utils_base.PreTrainedTokenizer.from_pretrainedтокенизатора. Подробности см. в строках документации указанных методов.
save_pretrained
< source >( save_directorypush_to_hub: bool = False**kwargs )
Параметры
- save_directory (
strилиos.PathLike) — Каталог, в котором будут сохранены JSON-файл feature extractor и файлы токенизатора (каталог будет создан, если он не существует). - push_to_hub (
bool, необязательный, по умолчаниюFalse) — Указывает, следует ли после сохранения отправить вашу модель в Hugging Face model hub. С помощьюrepo_idможно указать репозиторий, в который нужно отправить модель (по умолчанию используется имяsave_directoryв вашем пространстве имён). - kwargs (
dict[str, Any], необязательный) — Дополнительные именованные аргументы, передаваемые в метод push_to_hub().
Сохраняет атрибуты этого процессора (извлекатель признаков, токенизатор…) в указанную директорию, чтобы его можно было загрузить повторно с помощью метода from_pretrained().
Этот метод класса просто вызывает save_pretrained() и save_pretrained(). Подробности см. в строках документации методов, описанных выше.
Этот метод передаёт все свои аргументы в batch_decode() класса PreTrainedTokenizer. Подробности см. в docstring этого метода.
Этот метод передаёт все свои аргументы в decode() класса PreTrainedTokenizer. Подробности см. в docstring этого метода.
WhisperModel
класс transformers.WhisperModel
< source >( config: WhisperConfig )
Параметры
- config (WhisperConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель Whisper без дополнительных слоёв, выводящая необработанные скрытые состояния.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( 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
< source >( input_features: Tensorattention_mask: typing.Optional[torch.LongTensor] = None )
Маски скрывают признаки вдоль временной оси и/или вдоль оси признаков в соответствии с SpecAugment.
WhisperForConditionalGeneration
класс transformers.WhisperForConditionalGeneration
< source >( config: WhisperConfig )
Параметры
- config (WhisperConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель Whisper с головой языковой модели. Может использоваться для автоматического распознавания речи.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( 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 (см. docstringinput_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
< source >( 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
< source >( config: WhisperConfig )
Параметры
- config (WhisperConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Декодер Whisper с головой моделирования языка сверху (линейный слой с весами, связанными с входными эмбеддингами).
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( 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 (см. docstringinput_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
< source >( config: WhisperConfig )
Параметры
- config (WhisperConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель Whisper Encoder с головой для классификации последовательностей (линейный слой поверх агрегированного вывода) для задач, таких как SUPERB Keyword Spotting.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( 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'