Transformers documentation
Speech2Text
Эта модель была опубликована в HF papers 11.10.2020 и добавлена в Hugging Face Transformers 10.03.2021.
Speech2Text
Обзор
Модель Speech2Text была предложена в работе fairseq S2T: Fast Speech-to-Text Modeling with fairseq Changhan Wang, Yun Tang, Xutai Ma, Anne Wu, Dmytro Okhonko, Juan Pino. Это трансформерная seq2seq-модель (кодировщик-декодировщик), предназначенная для сквозного автоматического распознавания речи (ASR) и перевода речи (ST). Она использует свёрточный даунсемплер для сокращения длины входных речевых сигналов на 3/4 перед их передачей в кодировщик. Модель обучается со стандартным авторегрессионным кросс-энтропийным потерей и генерирует транскрипты/переводы авторегрессивно. Speech2Text была дообучена на нескольких наборах данных для ASR и ST: LibriSpeech, CoVoST 2, MuST-C.
Эта модель была предоставлена пользователем valhalla. Исходный код можно найти здесь.
Вывод
Speech2Text — это модель для распознавания речи, которая принимает тензор float с лог-мел-фильтр-банковыми признаками, извлечёнными из речевого сигнала. Это seq2seq-модель на основе трансформера, поэтому транскрипты/переводы генерируются авторегрессивно. Для инференса можно использовать метод generate().
Класс Speech2TextFeatureExtractor отвечает за извлечение лог-мел-фильтр-банковых признаков. Класс Speech2TextProcessor объединяет Speech2TextFeatureExtractor и Speech2TextTokenizer в единый экземпляр, чтобы одновременно извлекать входные признаки и декодировать предсказанные идентификаторы токенов.
Функция извлечения признаков зависит от torchaudio, а токенизатор — от sentencepiece, поэтому перед запуском примеров убедитесь, что эти пакеты установлены. Вы можете установить их как дополнительные зависимости для работы с речью с помощью pip install transformers"[speech, sentencepiece]" или установить пакеты отдельно с помощью pip install torchaudio sentencepiece. Также torchaudio требует установочную версию пакета libsndfile, который можно установить через системный менеджер пакетов. В Ubuntu он устанавливается следующим образом: apt install libsndfile1-dev
- ASR и перевод речи
from datasets import load_dataset
from transformers import Speech2TextForConditionalGeneration, Speech2TextProcessor
model = Speech2TextForConditionalGeneration.from_pretrained("facebook/s2t-small-librispeech-asr", device_map="auto")
processor = Speech2TextProcessor.from_pretrained("facebook/s2t-small-librispeech-asr")
ds = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
inputs = processor(ds[0]["audio"]["array"], sampling_rate=ds[0]["audio"]["sampling_rate"], return_tensors="pt").to(model.device)
generated_ids = model.generate(inputs["input_features"], attention_mask=inputs["attention_mask"])
transcription = processor.batch_decode(generated_ids, skip_special_tokens=True)
transcription
['mister quilter is the apostle of the middle classes and we are glad to welcome his gospel']Многоязычный перевод речи
Для многоязычных моделей перевода речи
eos_token_idиспользуется в качествеdecoder_start_token_id, а идентификатор целевого языка принудительно устанавливается как первый сгенерированный токен. Чтобы принудительно установить идентификатор целевого языка как первый сгенерированный токен, передайте параметрforced_bos_token_idв методgenerate(). В следующем примере показано, как перевести английскую речь в французский текст с использованием контрольной точки facebook/s2t-medium-mustc-multilingual-st.
from datasets import load_dataset
from transformers import Speech2TextForConditionalGeneration, Speech2TextProcessor
model = Speech2TextForConditionalGeneration.from_pretrained("facebook/s2t-medium-mustc-multilingual-st", device_map="auto")
processor = Speech2TextProcessor.from_pretrained("facebook/s2t-medium-mustc-multilingual-st")
ds = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
inputs = processor(ds[0]["audio"]["array"], sampling_rate=ds[0]["audio"]["sampling_rate"], return_tensors="pt").to(model.device)
generated_ids = model.generate(
inputs["input_features"],
attention_mask=inputs["attention_mask"],
forced_bos_token_id=processor.tokenizer.lang_code_to_id["fr"],
)
translation = processor.batch_decode(generated_ids, skip_special_tokens=True)
translation
["(Vidéo) Si M. Kilder est l'apossible des classes moyennes, et nous sommes heureux d'être accueillis dans son évangile."]Обратитесь к model hub, чтобы найти чекпоинты Speech2Text.
Speech2TextConfig
класс transformers.Speech2TextConfig
< 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 = 10000encoder_layers: int = 12encoder_ffn_dim: int = 2048encoder_attention_heads: int = 4decoder_layers: int = 6decoder_ffn_dim: int = 2048decoder_attention_heads: int = 4encoder_layerdrop: float | int = 0.0decoder_layerdrop: float | int = 0.0use_cache: bool = Trueactivation_function: str = 'relu'd_model: int = 256dropout: float | int = 0.1attention_dropout: float | int = 0.0activation_dropout: float | int = 0.0init_std: float = 0.02decoder_start_token_id: int = 2scale_embedding: bool = Truepad_token_id: int | None = 1bos_token_id: int | None = 0eos_token_id: int | list[int] | None = 2max_source_positions: int = 6000max_target_positions: int = 1024num_conv_layers: int = 2conv_kernel_sizes: list[int] | tuple[int, ...] = (5, 5)conv_channels: int = 1024input_feat_per_channel: int = 80input_channels: int = 1tie_word_embeddings: bool = True )
Параметры
- is_encoder_decoder (
bool, необязательный, по умолчаниюTrue) — Указывает, используется ли модель в качестве энкодера/декодера. - vocab_size (
int, необязательный, по умолчанию10000) — Размер словаря модели. Определяет количество различных токенов, которые могут быть представлены вinput_ids. - encoder_layers (
int, необязательный, по умолчанию12) — Количество скрытых слоев в кодере Transformer. Если не задано, используется то же значение, что и уnum_layers. - encoder_ffn_dim (
int, необязательный, по умолчанию2048) — Размерность «промежуточного» (часто называемого feed-forward) слоя в энкодере. - encoder_attention_heads (
int, необязательный, по умолчанию4) — Количество головок внимания в каждом слое внимания кодировщика Transformer. - decoder_layers (
int, необязательный, по умолчанию6) — Количество скрытых слоев в декодере Transformer. Если не задано, будет использовано то же значение, что и уnum_layers. - decoder_ffn_dim (
int, необязательный, по умолчанию2048) — Размерность «промежуточного» (часто называемого feed-forward) слоя в декодере. - decoder_attention_heads (
int, необязательный, по умолчанию4) — Количество головок внимания в каждом слое внимания декодера Transformer. - 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). - use_cache (
bool, необязательный, по умолчаниюTrue) — Указывает, должен ли модель возвращать последние ключи/значения внимания (не используется во всех моделях). Актуально только еслиconfig.is_decoder=Trueили если модель является генеративной моделью только с декодером. - activation_function (
str, необязательный, по умолчаниюrelu) — Нелинейная функция активации (функция или строка) в декодере. Например,"gelu","relu","silu"и т. д. - d_model (
int, необязательный, по умолчанию256) — Размер слоев кодировщика и пулера. - dropout (
Union[float, int], необязательный, по умолчанию0.1) — Коэффициент для всех слоёв 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 для инициализации всех матриц весов. - decoder_start_token_id (
int, необязательный, по умолчанию2) — Если модель encoder-decoder начинает декодирование с токена, отличного отbos, то идентификатор этого токена. - scale_embedding (
bool, необязательный, по умолчаниюTrue) — Указывает, следует ли масштабировать эмбеддинги, деля их на sqrt(d_model). - pad_token_id (
int, необязательный, по умолчанию1) — Идентификатор токена, используемого для дополнения (padding) в словаре. - bos_token_id (
int, необязательный, по умолчанию0) — Идентификатор токена, используемого для обозначения начала потока в словаре. - eos_token_id (
Union[int, list[int]], необязательный, по умолчанию2) — Идентификатор токена, используемого для обозначения конца потока в словаре. - max_source_positions (
int, необязательный, по умолчанию 6000) — Максимальная длина последовательности лог-мел-фильтр-банковых признаков, с которой может использоваться данная модель. - max_target_positions (
int, необязательный, по умолчанию 1024) — Максимальная длина последовательности, с которой может использоваться эта модель. Как правило, установите это значение достаточно большим на всякий случай (например, 512, 1024 или 2048). - num_conv_layers (
int, необязательный, по умолчанию 2) — Количество одномерных свёрточных слоёв в свёрточном модуле. - conv_kernel_sizes (
tuple[int], необязательный, по умолчанию(5, 5)) — Кортеж целых чисел, определяющий размер ядра каждого одномерного свёрточного слоя в модуле conv. Длинаconv_kernel_sizesдолжна совпадать сnum_conv_layers. - conv_channels (
int, необязательный, по умолчанию 1024) — Целое число, определяющее количество выходных каналов каждого слоя свёртки, кроме последнего, в модуле conv. - input_feat_per_channel (
int, необязательный, по умолчанию 80) — Целое число, задающее размерность вектора признаков. Это также размерность признаков лог-мел-фильтробанка. - input_channels (
int, необязательный, по умолчанию1) — Количество входных каналов. - tie_word_embeddings (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли связывать веса эмбеддингов согласно маппингуtied_weights_keysмодели.
Это класс конфигурации для хранения настроек модели Speech2TextModel. Он используется для создания модели Speech To Text в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации facebook/s2t-small-librispeech-asr
Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.
Пример:
>>> from transformers import Speech2TextConfig, Speech2TextModel
>>> # Initializing a Speech2Text s2t_transformer_s style configuration
>>> configuration = Speech2TextConfig()
>>> # Initializing a model (with random weights) from the s2t_transformer_s style configuration
>>> model = Speech2TextModel(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configSpeech2TextTokenizer
класс transformers.Speech2TextTokenizer
< source >( vocab_filespm_filebos_token = '<s>'eos_token = '</s>'pad_token = '<pad>'unk_token = '<unk>'do_upper_case = Falsedo_lower_case = Falsetgt_lang = Nonelang_codes = Noneadditional_special_tokens = Nonesp_model_kwargs: dict[str, typing.Any] | None = None**kwargs )
Параметры
- vocab_file (
str) — Файл, содержащий словарь. - spm_file (
str) — Путь к файлу модели SentencePiece - bos_token (
str, необязательный, по умолчанию"<s>") — Токен начала предложения. - eos_token (
str, необязательный, по умолчанию"</s>") — Токен конца предложения. - unk_token (
str, необязательный, по умолчанию"<unk>") — Токен неизвестного слова. Токен, отсутствующий в словаре, не может быть преобразован в ID, поэтому вместо него используется этот токен. - pad_token (
str, необязательный, по умолчанию"<pad>") — Токен, используемый для выравнивания, например, при пакетной обработке последовательностей разной длины. - do_upper_case (
bool, необязательный, по умолчаниюFalse) — Определяет, нужно ли приводить вывод к верхнему регистру при декодировании. - do_lower_case (
bool, необязательный, по умолчаниюFalse) — Определяет, нужно ли приводить входные данные к нижнему регистру при токенизации. - tgt_lang (
str, необязательный) — Строка, задающая целевой язык. - sp_model_kwargs (
dict, необязательный) — будет передан в методSentencePieceProcessor.__init__(). Python-обёртка для SentencePiece может использоваться, в том числе, для настройки:-
enable_sampling: Включает субсловарную регуляризацию. -
nbest_size: Параметры выборки для униграмм. Недействительно для BPE-Dropout.nbest_size = {0,1}: выборка не выполняется.nbest_size > 1: выборка из результатов nbest_size.nbest_size < 0: предполагается, что nbest_size бесконечен, и выборка выполняется из всех гипотез (решётки) с использованием алгоритма forward-filtering-and-backward-sampling.
-
alpha: Параметр сглаживания для выборки униграмм и вероятность отбрасывания (dropout) операций слияния для BPE-dropout.
-
- **kwargs — Дополнительные именованные аргументы, передаваемые в PreTrainedTokenizer
Создайте токенизатор Speech2Text.
Этот токенизатор наследуется от PreTrainedTokenizer, который содержит некоторые основные методы. За дополнительной информацией о таких методах следует обращаться к суперклассу.
Сформируйте входные данные модели из последовательности, добавив eos_token_id.
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 токенизатора.
create_token_type_ids_from_sequences
< source >( token_ids_0: listtoken_ids_1: list[int] | None = None ) → list[int]
Создайте маску из двух переданных последовательностей для использования в задаче классификации пар последовательностей.
Этот метод динамически формирует идентификаторы типов токенов на основе атрибутов конфигурации токенизатора:
token_type_ids_pattern: шаблон для использования (“all_zeros” или “bert_style”)token_type_ids_include_special_tokens: Учитывать ли специальные токены при вычислении длины
Примеры:
# All zeros pattern (default, used by RoBERTa, BART, etc.)
tokenizer.token_type_ids_pattern = "all_zeros"
# Returns: [0, 0, 0, ...] for both sequences
# BERT-style pattern (first sequence gets 0s, second gets 1s)
tokenizer.token_type_ids_pattern = "bert_style"
# Returns: [0, 0, 0, ..., 1, 1, 1, ...] for sequence pairsSpeech2TextFeatureExtractor
класс transformers.Speech2TextFeatureExtractor
< source >( feature_size = 80sampling_rate = 16000num_mel_bins = 80padding_value = 0.0dither = 0.0do_ceptral_normalize = Truenormalize_means = Truenormalize_vars = True**kwargs )
Параметры
- feature_size (
int, необязательный, по умолчанию 80) — Размерность признаков извлечённых признаков. - sampling_rate (
int, необязательный, по умолчанию 16000) — Частота дискретизации, с которой аудиофайлы должны быть оцифрованы, выраженная в герцах (Гц). - num_mel_bins (
int, необязательный, по умолчанию 80) — Количество Mel-частотных бинов. - padding_value (
float, необязательный, по умолчанию 0.0) — Значение, используемое для заполнения векторов отступов. - dither (
float, необязательный, по умолчанию 0.0) — Добавляет дитеринг. Иными словами, добавляет небольшой гауссов шум к каждому кадру. Например, значение 4.0 добавляет дитеринг с нормальным распределением, центрированным вокруг 0.0 и со стандартным отклонением 4.0 (при допущении диапазона [-32k,+32k] для волновой формы kaldi). Значение 0.0 означает отсутствие дитеринга. Дитеринг оказывает аналогичный эффект, что иmel_floor. Он снижает высокие значения log_mel_fbank для сигналов с участками, где сигнал равен нулю, если в сигнале присутствует порог VAD. - do_ceptral_normalize (
bool, необязательный, по умолчаниюTrue) — Указывает, следует ли применять нормализацию по среднему и дисперсии в цефтральной области на уровне реплики к извлечённым признакам. - normalize_means (
bool, необязательный, по умолчаниюTrue) — Указывает, следует ли нормализовать извлечённые признаки до нулевого среднего. - normalize_vars (
bool, необязательный, по умолчаниюTrue) — Указывает, следует ли нормализовать извлечённые признаки до единичной дисперсии.
Создаёт экстрактор признаков для Speech2Text.
Этот экстрактор признаков наследуется от Speech2TextFeatureExtractor, который содержит большинство основных методов. За дополнительной информацией об этих методах следует обращаться к этому суперклассу.
Этот класс извлекает характеристики банка мел-фильтров из необработанной речи, используя TorchAudio, если он установлен, или numpy в противном случае, и применяет к извлечённым характеристикам нормализацию среднего и дисперсии по спектру на уровне высказывания.
__call__
< source >( raw_speech: numpy.ndarray | list[float] | list[numpy.ndarray] | list[list[float]]padding: bool | str | transformers.utils.generic.PaddingStrategy = Falsemax_length: int | None = Nonetruncation: bool = Falsepad_to_multiple_of: int | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonesampling_rate: int | None = Nonereturn_attention_mask: bool | None = None**kwargs )
Параметры
- raw_speech (
np.ndarray,list[float],list[np.ndarray],list[list[float]]) — Последовательность или батч последовательностей, для которых требуется выравнивание. Каждая последовательность может быть массивом numpy, списком значений float, списком массивов numpy или списком списков значений float. Аудио должно быть моноканальным, а не стерео, то есть одно значение float на каждый момент времени. - padding (
bool,strили PaddingStrategy, необязательный, по умолчаниюTrue) — Выберите стратегию дополнения возвращаемых последовательностей (с учётом стороны дополнения и индекса дополнения модели) из следующих вариантов:Trueили'longest': дополнить до самой длинной последовательности в батче (или не дополнять, если предоставлена только одна последовательность).'max_length': Дополнить до максимальной длины, указанной аргументомmax_length, или до максимально допустимой длины входных данных для модели, если этот аргумент не указан.Falseили'do_not_pad'(по умолчанию): без дополнения нулями (т. е. может выводить батч с последовательностями разной длины).
- max_length (
int, необязательный) — Максимальная длина возвращаемого списка и, при необходимости, длина отступов (см. выше). - truncation (
bool) — Включает усечение, чтобы обрезать входные последовательности длиннее max_length до max_length. - pad_to_multiple_of (
int, необязательный) — Если задано, последовательность будет дополнена до кратного указанного значения.Это особенно полезно для использования Tensor Cores на аппаратных средствах NVIDIA с вычислительной способностью
>= 7.5(Volta) или на TPU, где производительность повышается при длине последовательности, кратной 128. - return_attention_mask (
bool, необязательный) — Определяет, следует ли возвращать attention mask. Если значение не задано, attention mask будет возвращена в соответствии со значением по умолчанию конкретного feature_extractor.Для моделей Speech2TextTransformer параметр
attention_maskследует всегда передавать при пакетном выводе, чтобы избежать тонких ошибок. - return_tensors (
strили TensorType, необязательный) — Если задано, возвращает тензоры вместо списка целых чисел Python. Допустимые значения:'pt': возвращает объектыtorch.TensorPyTorch.'np': возвращает объекты Numpynp.ndarray.
- sampling_rate (
int, необязательный) — Частота дискретизации, с которой была оцифрована входнаяraw_speech. Настоятельно рекомендуется передаватьsampling_rateпри вызове forward, чтобы избежать скрытых ошибок. - padding_value (
float, необязательный, по умолчанию 0.0) — Значение, используемое для заполнения позиций, отведённых под padding.
Основной метод для создания признаков и подготовки одной или нескольких последовательностей для модели.
Speech2TextProcessor
класс transformers.Speech2TextProcessor
< source >( feature_extractortokenizer )
Создаёт Speech2TextProcessor, который объединяет feature extractor и tokenizer в единый процессор.
Speech2TextProcessor предоставляет все возможности Speech2TextFeatureExtractor и Speech2TextTokenizer. Подробнее см. в ~Speech2TextFeatureExtractor и ~Speech2TextTokenizer.
__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 этого метода.
Speech2TextModel
класс transformers.Speech2TextModel
< source >( config: Speech2TextConfig )
Параметры
- config (Speech2TextConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель Speech To Text Text, выводящая необработанные скрытые состояния без какого-либо специализированного слоя наверху.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( input_features: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = 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: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Seq2SeqLMOutput or tuple(torch.Tensor)
Параметры
- input_features (
torch.LongTensorформы(batch_size, sequence_length, feature_dim), необязательный) — Тензоры, соответствующие входным аудиособытиям. Аудиособытия можно получить с помощью Speech2TextFeatureExtractor. Подробности см. в Speech2TextFeatureExtractor.call() (Speech2TextProcessor использует Speech2TextFeatureExtractor для обработки аудио). - attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- decoder_input_ids (
torch.LongTensorформы(batch_size, target_sequence_length), необязательный) — Индексы токенов входной последовательности декодера в словаре. Индексы можно получить с помощью SpeechToTextTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call(). Что такое decoder input IDs? SpeechToText использует eos_token_id в качестве начального токена для генерации decoder_input_ids. Если используется past_key_values, необязательно вводить все decoder_input_ids — достаточно только последних (см. past_key_values).Индексы можно получить с помощью
SpeechToTextTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().Что такое входные идентификаторы декодера?
SpeechToText использует
eos_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_speech_to_text._prepare_decoder_attention_maskи внести необходимые изменения. Дополнительную информацию о стратегии по умолчанию см. на рисунке 1 в статье. - 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 (
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. - use_cache (
bool, необязательный) — Если установлено вTrue, возвращаются состояния ключей и значенийpast_key_values, которые можно использовать для ускорения декодирования (см.past_key_values).
Возвращает
Seq2SeqLMOutput или tuple(torch.Tensor)
Объект Seq2SeqLMOutput или кортеж из
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (Speech2TextConfig) и входных данных.
Метод forward модели Speech2TextModel переопределяет специальный метод __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 Speech2TextModel, AutoFeatureExtractor
>>> from datasets import load_dataset
>>> model = Speech2TextModel.from_pretrained("facebook/s2t-small-librispeech-asr")
>>> feature_extractor = AutoFeatureExtractor.from_pretrained("facebook/s2t-small-librispeech-asr")
>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> inputs = feature_extractor(
... ds[0]["audio"]["array"], sampling_rate=ds[0]["audio"]["sampling_rate"], 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, 256]Speech2TextForConditionalGeneration
класс transformers.Speech2TextForConditionalGeneration
< source >( config: Speech2TextConfig )
Параметры
- config (Speech2TextConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация по файлу конфигурации не загружает веса, связанные с моделью, только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Модель Speech2Text с головой языковой модели. Может использоваться для суммаризации.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( input_features: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = 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: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Seq2SeqLMOutput or tuple(torch.Tensor)
Параметры
- input_features (
torch.LongTensorформы(batch_size, sequence_length, feature_dim), необязательный) — Тензоры, соответствующие входным аудиособытиям. Аудиособытия можно получить с помощью Speech2TextFeatureExtractor. Подробности см. в Speech2TextFeatureExtractor.call() (Speech2TextProcessor использует Speech2TextFeatureExtractor для обработки аудио). - attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- decoder_input_ids (
torch.LongTensorформы(batch_size, target_sequence_length), необязательный) — Индексы токенов входной последовательности декодера в словаре. Индексы можно получить с помощью SpeechToTextTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call(). Что такое decoder input IDs? SpeechToText использует eos_token_id в качестве начального токена для генерации decoder_input_ids. Если используется past_key_values, необязательно вводить все decoder_input_ids — достаточно только последних (см. past_key_values).Индексы можно получить с помощью
SpeechToTextTokenizer. Подробности см. в PreTrainedTokenizer.encode() и PreTrainedTokenizer.call().Что такое входные идентификаторы декодера?
SpeechToText использует
eos_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_speech_to_text._prepare_decoder_attention_maskи внести необходимые изменения. Дополнительную информацию о стратегии по умолчанию см. на рисунке 1 в статье. - 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 (
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. - 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).
Возвращает
Seq2SeqLMOutput или tuple(torch.Tensor)
Объект Seq2SeqLMOutput или кортеж из
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (Speech2TextConfig) и входных данных.
Метод forward класса Speech2TextForConditionalGeneration переопределяет специальный метод __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 Speech2TextProcessor, Speech2TextForConditionalGeneration
>>> from datasets import load_dataset
>>> model = Speech2TextForConditionalGeneration.from_pretrained("facebook/s2t-small-librispeech-asr")
>>> processor = Speech2TextProcessor.from_pretrained("facebook/s2t-small-librispeech-asr")
>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> inputs = processor(
... ds[0]["audio"]["array"], sampling_rate=ds[0]["audio"]["sampling_rate"], 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
'mister quilter is the apostle of the middle classes and we are glad to welcome his gospel'