Transformers documentation
GraniteSpeech5
Эта модель была добавлена в Hugging Face Transformers 25.08.2026.
GraniteSpeech5
Обзор
Granite Speech 5.0 Turbo CTC — это легковесный (~470M параметров) conformer-энкодер для автоматического распознавания речи, обученный с использованием Connectionist Temporal Classification (CTC) на BPE-токенах. Это быстрый, состоящий только из энкодера, член семейства Granite Speech: для транскрипции требуется один прямой проход, за которым следует жадное CTC-декодирование, без авторекурсивного декодера.
С архитектурной точки зрения он расширяет конформер-CTC-кодировщик Granite Speech за счёт:
Складывание кадров + послойное подвыборка по времени: извлекатель признаков складывает пары лог-мел(+дельта) кадров (2x), а первые два блока conformer каждый выполняют подвыборку по времени с коэффициентом 2 с помощью свертки с шагом 2 (с остаточным соединением через усреднение), что в итоге дает общее сокращение временного разрешения в 8 раз при шаге мел-спектрограммы 10 мс.
Блочное внимание с относительными позиционными эмбеддингами Шоу: внимание вычисляется по блокам фиксированного размера (последовательность дополняется справа до целого числа блоков, при этом дополненные кадры маскируются), с использованием отдельных проекций запроса/ключа/значения без смещения.
Самоусловленный CTC: апостериорные вероятности CTC среднего слоя проецируются и подаются обратно в скрытые состояния, при этом CTC-головка используется как для самоусловления среднего слоя, так и для окончательного предсказания.
Эта модель была предоставлена Eustache Le Bihan.
Использование
Использование GraniteSpeech5ForCTC
from transformers import pipeline
pipe = pipeline("automatic-speech-recognition", model="ibm-granite/granite-speech-5.0-470m-turboctc")
out = pipe("https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/bcn_weather.mp3")
print(out)
# {'text': 'yesterday it was 35 degrees in barcelona but today the temperature will go down to -20 degrees'}from datasets import Audio, load_dataset
from transformers import AutoModelForCTC, AutoProcessor
model_id = "ibm-granite/granite-speech-5.0-470m-turboctc"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForCTC.from_pretrained(model_id, device_map="auto")
ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
ds = ds.cast_column("audio", Audio(sampling_rate=processor.feature_extractor.sampling_rate))
speech_samples = [el['array'] for el in ds["audio"][:5]]
# `device` computes the log-mel front-end on the model's accelerator, saving a host-to-device copy
inputs = processor(
speech_samples, sampling_rate=processor.feature_extractor.sampling_rate, device=model.device
)
inputs.to(model.device, dtype=model.dtype)
outputs = model.generate(**inputs)
print(processor.batch_decode(outputs, skip_special_tokens=True))
# ['mister quilter is the apostle of the middle classes and we are glad to welcome his gospel', ...]GraniteSpeech5CTCConfig
класс transformers.GraniteSpeech5CTCConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 16384ctc_loss_reduction: str = 'mean'ctc_zero_infinity: bool = Trueencoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonepad_token_id: int | None = 0tie_word_embeddings: bool = True )
Параметры
- vocab_size (
int, необязательный, по умолчанию16384) — Размер словаря модели. Определяет количество различных токенов, которые могут быть представлены вinput_ids. - ctc_loss_reduction (
str, необязательный, по умолчанию"mean") — Определяет способ агрегации (reduction) для выводаtorch.nn.CTCLoss. Актуально только при обучении экземпляра GraniteSpeech5ForCTC. - ctc_zero_infinity (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли обнулять бесконечные значения потерь и соответствующие градиентыtorch.nn.CTCLoss. Бесконечные потери возникают в основном, когда входные последовательности слишком короткие, чтобы их можно было выровнять по целевым. Параметр имеет значение только при обучении экземпляра GraniteSpeech5ForCTC. - encoder_config (
Union[dict, GraniteSpeech5EncoderConfig], необязательный) — Объект конфигурации или словарь для энкодера. - pad_token_id (
int, необязательный, по умолчанию0) — Идентификатор токена, используемого для дополнения (padding) в словаре. - tie_word_embeddings (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли связывать веса эмбеддингов согласно маппингуtied_weights_keysмодели.
Это класс конфигурации для хранения настроек модели Granite Speech5Model. Он используется для создания модели Granite Speech5 в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации ibm-granite/granite-speech-5.0-470m-turboctc
Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.
Пример:
>>> from transformers import GraniteSpeech5ForCTC, GraniteSpeech5CTCConfig
>>> # Initializing a GraniteSpeech5 configuration
>>> configuration = GraniteSpeech5CTCConfig()
>>> # Initializing a model from the configuration
>>> model = GraniteSpeech5ForCTC(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configGraniteSpeech5EncoderConfig
класс transformers.GraniteSpeech5EncoderConfig
< source >( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonevocab_size: int = 16384hidden_size: int = 1024intermediate_size: int = 4096num_hidden_layers: int = 16num_attention_heads: int = 8num_key_value_heads: int | None = Nonenum_mel_bins: int = 80head_dim: int | None = Nonehidden_act: str = 'silu'max_position_embeddings: int = 512context_size: int = 128conv_kernel_size: int = 7conv_expansion_factor: int = 2subsample_layers: list[int] | None = Noneattention_bias: bool = Trueattention_dropout: float | int = 0.0activation_dropout: float | int = 0.0initializer_range: float = 0.02 )
Параметры
- vocab_size (
int, необязательный, по умолчанию16384) — Размер словаря модели. Определяет количество различных токенов, которые могут быть представлены вinput_ids. - hidden_size (
int, необязательный, по умолчанию1024) — Размерность скрытых представлений. - intermediate_size (
int, необязательный, по умолчанию4096) — Размерность представлений MLP. - num_hidden_layers (
int, необязательный, по умолчанию16) — Количество скрытых слоев в декодере Transformer. - num_attention_heads (
int, необязательный, по умолчанию8) — Количество головок внимания в каждом слое внимания декодера Transformer. - num_key_value_heads (
int, необязательный) — Количество ключевых и value-голов, используемых для реализации Grouped Query Attention. Еслиnum_key_value_heads=num_attention_heads, модель использует Multi Head Attention (MHA); еслиnum_key_value_heads=1— Multi Query Attention (MQA); в остальных случаях применяется GQA. При конвертации мультиголовного чекпоинта в GQA-чекпоинт каждая групповая ключевая и value-голова должна построиться путём усреднения (meanpooling) всех исходных голов в этой группе. Дополнительные сведения см. в этой статье. Если параметр не задан, по умолчанию используетсяnum_attention_heads. - num_mel_bins (
int, необязательный, по умолчанию80) — Количество mel-признаков, используемых на входной кадр. Должно соответствовать значению, применяемому в классеAutoFeatureExtractor. - head_dim (
int, необязательный) — Размер измерения головы внимания. Если значение равно None, по умолчанию используется hidden_size // num_attention_heads - hidden_act (
str, необязательный, по умолчаниюsilu) — Нелинейная функция активации (функция или строка) в декодере. Например,"gelu","relu","silu"и т. д. - max_position_embeddings (
int, необязательный, по умолчанию 512) — Максимальный относительный индекс позиции для относительного позиционного кодирования Шоу; таблица эмбеддингов содержит2 * max_position_embeddings + 1записей. - context_size (
int, необязательный, по умолчанию 128) — Размер контекста для блочного внимания в конформере. - conv_kernel_size (
int, необязательный, по умолчанию 7) — Размер ядра глубинной свёртки в модуле свёртки conformer. - conv_expansion_factor (
int, необязательный, по умолчанию 2) — Коэффициент расширения для сверточного модуля conformer. - subsample_layers (
list[int], необязательный, по умолчанию[0, 1]) — Индексы блоков conformer, которые уменьшают размерность временного измерения в 2 раза (depthwise-свёртка с шагом 2 и residual-соединением со средним популингом). - attention_bias (
bool, необязательный, по умолчаниюTrue) — Использовать ли смещение (bias) в слоях проекции query, key, value и output при само-внимании. - attention_dropout (
Union[float, int], необязательный, по умолчанию0.0) — Коэффициент dropout для вероятностей внимания. - activation_dropout (
Union[float, int], необязательный, по умолчанию0.0) — Коэффициент dropout для активаций внутри полносвязного слоя. - initializer_range (
float, необязательный, по умолчанию0.02) — Стандартное отклонение truncated_normal_initializer, используемое для инициализации всех матриц весов.
Это класс конфигурации для хранения настроек модели Granite Speech5Model. Он используется для создания модели Granite Speech5 в соответствии с указанными аргументами, определяя архитектуру модели. Создание конфигурации с параметрами по умолчанию даст конфигурацию, аналогичную конфигурации ibm-granite/granite-speech-5.0-470m-turboctc
Объекты конфигурации наследуются от PreTrainedConfig и могут использоваться для управления выводами модели. Подробнее читайте в документации PreTrainedConfig.
Пример:
>>> from transformers import GraniteSpeech5EncoderConfig, GraniteSpeech5Encoder
>>> # Initializing a GraniteSpeech5EncoderConfig
>>> configuration = GraniteSpeech5EncoderConfig()
>>> # Initializing a GraniteSpeech5Encoder (with random weights)
>>> model = GraniteSpeech5Encoder(configuration)
>>> # Accessing the model configuration
>>> configuration = model.configGraniteSpeech5FeatureExtractor
класс transformers.GraniteSpeech5FeatureExtractor
< source >( num_mel_bins: int = 80sampling_rate: int = 16000n_fft: int = 512win_length: int = 400hop_length: int = 160delta_win_length: int = 3logmel_floor_db: float = 8.0padding_value: float = 0.0**kwargs )
Параметры
- num_mel_bins (
int, необязательный, по умолчанию 80) — Количество мел-фильтров. - sampling_rate (
int, необязательный, по умолчанию 16000) — Частота дискретизации, с которой аудиофайлы должны быть оцифрованы, выраженная в герцах (Гц). - n_fft (
int, необязательный, по умолчанию 512) — Размер преобразования Фурье. - win_length (
int, необязательный, по умолчанию 400) — Длина окна в сэмплах. - hop_length (
int, необязательный, по умолчанию 160) — Длина перекрывающихся окон для STFT, используемой для получения мел-спектрограммы, в отсчётах. - delta_win_length (
int, необязательный, по умолчанию 3) — Длина окна, используемая для вычисления дельта-признаков. - logmel_floor_db (
float, необязательный, по умолчанию 8.0) — Значения log-mel признаков ограничиваются снизу уровнем, равным максимуму по сэмплу минус указанное количество дБ. - padding_value (
float, необязательный, по умолчанию 0.0) — Значение, используемое для дополнения аудио.
Создаёт экстрактор признаков Granite Speech 5.0.
Этот экстрактор признаков наследуется от SequenceFeatureExtractor, который содержит большинство основных методов. За дополнительной информацией о них следует обращаться к этому суперклассу.
GraniteSpeech5Processor
класс transformers.GraniteSpeech5Processor
< source >( feature_extractortokenizer )
Создаёт GraniteSpeech5Processor, который объединяет экстрактор признаков и токенизатор в единый процессор.
GraniteSpeech5Processor предоставляет все возможности feature_extractor_class и tokenizer_class. Подробнее см. в ~feature_extractor_class и ~tokenizer_class.
GraniteSpeech5Encoder
класс transformers.GraniteSpeech5Encoder
< source >( config: GraniteSpeech5EncoderConfig )
Параметры
- config (GraniteSpeech5EncoderConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Используйте метод from_pretrained() для загрузки весов модели.
Конформер-энкодер Granite Speech 5.0, адаптированный из CTC-энкодера Granite Speech с блочным подвыборкой по времени и самоусловленным CTC из среднего слоя.
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( input_features: Tensorattention_mask: typing.Optional[torch.Tensor] = Noneoutput_attention_mask: bool = True**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → GraniteSpeech5EncoderModelOutput or tuple(torch.Tensor)
Параметры
- input_features (
torch.Tensorформы(batch_size, sequence_length, feature_dim)) — Тензоры, соответствующие входным аудиособытиям. Аудиособытия можно получить с помощьюfeature_extractor_class. Подробности см. вfeature_extractor_class.__call__(processor_classиспользуетfeature_extractor_classдля обработки аудио). - attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- output_attention_mask (
bool, необязательный, по умолчаниюTrue) — Определяет, следует ли возвращать выходную маску внимания. Действует только при передачеattention_mask.
Возвращает
GraniteSpeech5EncoderModelOutput или tuple(torch.Tensor)
GraniteSpeech5EncoderModelOutput или кортеж из
torch.Tensor (если передано return_dict=False или если config.return_dict=False), содержащий различные
элементы в зависимости от конфигурации (None) и входных данных.
Метод forward класса GraniteSpeech5Encoder переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
last_hidden_state (
torch.Tensorформы(batch_size, sequence_length, hidden_size)) — Последовательность скрытых состояний на выходе последнего слоя модели.pooler_output (
torch.Tensorформы(batch_size, hidden_size)) — Скрытое состояние последнего слоя для первого токена последовательности (токен классификации) после дополнительной обработки слоями, используемыми для вспомогательной задачи предварительного обучения. Например, для моделей семейства BERT это возвращает токен классификации после обработки линейным слоем и функцией активации tanh. Веса линейного слоя обучаются по задаче предсказания следующего предложения (классификации) во время предварительного обучения.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 в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
attention_mask (
torch.Tensorформы(batch_size, sequence_length), необязательный) — Маска для предотвращения выполнения внимания на индексах токенов отступов после сжатия последовательности. Возвращается, так как длина последовательности может отличаться от длины входной последовательности. Значения маски выбираются из[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
Пример:
>>> from transformers import AutoProcessor, GraniteSpeech5Encoder
>>> from datasets import load_dataset, Audio
>>> model_id = "ibm-granite/granite-speech-5.0-470m-turboctc"
>>> processor = AutoProcessor.from_pretrained(model_id)
>>> encoder = GraniteSpeech5Encoder.from_pretrained(model_id)
>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> ds = ds.cast_column("audio", Audio(sampling_rate=processor.feature_extractor.sampling_rate))
>>> inputs = processor(ds[0]["audio"]["array"])
>>> encoder_outputs = encoder(**inputs)
>>> print(encoder_outputs.last_hidden_state.shape)GraniteSpeech5ForCTC
класс transformers.GraniteSpeech5ForCTC
< source >( config: GraniteSpeech5CTCConfig )
Параметры
- config (GraniteSpeech5CTCConfig) — Класс конфигурации модели, содержащий все параметры модели. Инициализация с помощью файла конфигурации не загружает веса, связанные с моделью, а только конфигурацию. Чтобы загрузить веса модели, используйте метод from_pretrained().
Кодер Granite Speech 5.0 с головой Connectionist Temporal Classification (CTC).
Эта модель наследуется от PreTrainedModel. См. документацию родительского класса для общих методов, которые библиотека реализует для всех своих моделей (например, загрузка или сохранение, изменение размера входных эмбеддингов, обрезка голов и т. д.)
Эта модель также является подклассом torch.nn.Module в PyTorch. Используйте её как обычный модуль PyTorch и обращайтесь к документации PyTorch по всем вопросам, связанным с общим использованием и поведением.
forward
< source >( input_features: Tensorattention_mask: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.Tensor] = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → CausalLMOutput or tuple(torch.Tensor)
Параметры
- input_features (
torch.Tensorформы(batch_size, sequence_length, feature_dim)) — Тензоры, соответствующие входным аудиособытиям. Аудиособытия можно получить с помощьюfeature_extractor_class. Подробности см. вfeature_extractor_class.__call__(processor_classиспользуетfeature_extractor_classдля обработки аудио). - attention_mask (
torch.Tensorформы(batch_size, sequence_length), , необязательный) — Маска для исключения токенов-заполнителей из внимания. Значения маски из диапазона[0, 1]:- 1 для токенов, которые не замаскированы,
- 0 для токенов, которые замаскированы.
- labels (
torch.Tensorформы(batch_size, sequence_length), необязательный) — Метки для вычисления потерь маскированного языкового моделирования. Индексы должны находиться в диапазоне[0, ..., config.vocab_size]или быть равны -100 (см. docstringinput_ids). Токены с индексами, установленными в-100, игнорируются (маскируются); потери вычисляются только для токенов с метками в диапазоне[0, ..., config.vocab_size].
Возвращает
CausalLMOutput или tuple(torch.Tensor)
A CausalLMOutput or a tuple of
torch.Tensor (if return_dict=False is passed or when config.return_dict=False) comprising various
elements depending on the configuration (None) and inputs.
Метод forward класса GraniteSpeech5ForCTC переопределяет специальный метод __call__.
Хотя рецепт для прямого прохода должен быть определён внутри этой функции, после этого следует вызывать экземпляр
Module, а не эту функцию, поскольку первый вариант обеспечивает выполнение шагов предварительной и последующей обработки, тогда как второй молча их игнорирует.
loss (
torch.Tensorформы(1,), необязательный, возвращается, если заданlabels) — Потери языковой модели (для предсказания следующего токена).logits (
torch.Tensorформы(batch_size, sequence_length, config.vocab_size)) — Оценки предсказаний языковой модели (оценки для каждого токена словаря до применения SoftMax).hidden_states (
tuple(torch.Tensor), optional, возвращается, если переданоoutput_hidden_states=Trueили еслиconfig.output_hidden_states=True) — кортеж изtorch.Tensor(один для вывода слоя встраиваний, если модель имеет слой встраиваний, + один для вывода каждого слоя) формы(batch_size, sequence_length, hidden_size).Скрытые состояния модели на выходе каждого слоя, а также необязательные выходные значения начального слоя встраивания.
attentions (
tuple(torch.Tensor), необязательный, возвращается при передачеoutput_attentions=Trueили приconfig.output_attentions=True) — Кортежtorch.Tensor(по одному на каждый слой) формы(batch_size, num_heads, sequence_length, sequence_length).Веса внимания после softmax в механизме внимания, используемые для вычисления взвешенного среднего в головах само-внимания.
Пример:
>>> from transformers import AutoProcessor, GraniteSpeech5ForCTC
>>> from datasets import load_dataset, Audio
>>> model_id = "nvidia/granite_speech5-ctc-1.1b"
>>> processor = AutoProcessor.from_pretrained(model_id)
>>> model = GraniteSpeech5ForCTC.from_pretrained(model_id)
>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> ds = ds.cast_column("audio", Audio(sampling_rate=processor.feature_extractor.sampling_rate))
>>> inputs = processor(ds[0]["audio"]["array"], text=ds[0]["text"])
>>> outputs = model(**inputs)
>>> print(outputs.loss)generate
< source >( input_features: Tensorattention_mask: typing.Optional[torch.Tensor] = Nonereturn_dict_in_generate: bool = Falsecompile_config: transformers.generation.configuration_utils.CompileConfig | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> )
compile_config (CompileConfig, необязательный):
Если указано, torch.compile будет применяться к вызовам forward в цикле декодирования.
Пример:
>>> from transformers import AutoProcessor, GraniteSpeech5ForCTC
>>> from datasets import load_dataset, Audio
>>> model_id = "ibm-granite/granite-speech-5.0-470m-turboctc"
>>> processor = AutoProcessor.from_pretrained(model_id)
>>> model = GraniteSpeech5ForCTC.from_pretrained(model_id)
>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> ds = ds.cast_column("audio", Audio(sampling_rate=processor.feature_extractor.sampling_rate))
>>> inputs = processor(ds[0]["audio"]["array"])
>>> predicted_ids = model.generate(**inputs)
>>> transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True)
>>> print(transcription)