# GraniteSpeech5

## 概要

Granite Speech 5.0 Turbo CTC は、自動音声認識用の軽量（約470Mパラメータ）conformerエンコーダーです。BPEターゲットに対してConnectionist Temporal Classification (CTC)で学習されています。[Granite Speech](https://huggingface.co/papers/2505.08699)ファミリーの高速なエンコーダー専用モデルであり、文字起こしには単一のフォワードパスとグリーディCTCデコーディングのみで完了し、自己回帰デコーダーは不要です。

アーキテクチャ的には、Granite Speechのconformer CTCエンコーダを以下のように拡張しています:

1. **フレームスタッキング + ブロック単位の時間方向サブサンプリング**: 特徴抽出器は、log-mel(+delta)フレームのペアをスタッキング（2倍）し、最初の2つのconformerブロックがそれぞれ、stride-2のdepthwise convolution（平均プーリングされた残差付き）によって時間方向を2倍サブサンプリングします。これにより、10 msのmel hopに対して合計8倍の時間方向の削減が実現されます。

2. **Shawの相対位置埋め込みを用いたブロックアテンション**: 固定サイズのブロックに対してアテンションを計算します（シーケンスはブロックの整数倍になるよう右パディングされ、パディングされたフレームはマスクされます）。この際、バイアスなしの個別なクエリ/キー/バリュー射影を使用します。

3. **自己条件付きCTC**：中間層のCTC事後確率が投影され、隠れ状態にフィードバックされます。CTCヘッドは、この中間層の自己条件付けと最終予測の両方で共有されます。

このモデルは、[Eustache Le Bihan](https://huggingface.co/eustlb) によって提供されました。

## 使用方法

### `GraniteSpeech5ForCTC` の使用方法

```python
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'}
```

```python
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]]

#### transformers.GraniteSpeech5CTCConfig[[transformers.GraniteSpeech5CTCConfig]]

```python
transformers.GraniteSpeech5CTCConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, vocab_size: int = 16384, ctc_loss_reduction: str = 'mean', ctc_zero_infinity: bool = True, encoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = None, pad_token_id: int | None = 0, tie_word_embeddings: bool = True)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/granite_speech5/configuration_granite_speech5.py#L97)

**パラメータ:**

vocab_size (`int`、*任意*、デフォルトは `16384`) : モデルの語彙サイズ。`input_ids` で表現できるトークンの種類数を定義します。

ctc_loss_reduction (`str`、*任意*、デフォルトは `"mean"`) : `torch.nn.CTCLoss` の出力に適用する集約方法を指定します。[GraniteSpeech5ForCTC](/docs/transformers/main/ja/model_doc/granite_speech5#transformers.GraniteSpeech5ForCTC) のインスタンスを学習する場合にのみ関連します。

ctc_zero_infinity (`bool`、*任意*、デフォルトは`True`) : `torch.nn.CTCLoss`の無限損失および関連する勾配をゼロにするかどうか。無限損失は、入力がターゲットにアラインされるほど短すぎる場合に主に発生します。[GraniteSpeech5ForCTC](/docs/transformers/main/ja/model_doc/granite_speech5#transformers.GraniteSpeech5ForCTC)のインスタンスをトレーニングする場合にのみ関連します。

encoder_config (`Union[dict, GraniteSpeech5EncoderConfig]`、*optional*) : エンコーダーの config オブジェクトまたは辞書。

pad_token_id (`int`, *任意*, デフォルトは `0`) : 語彙内でパディングに使用されるトークン ID。

tie_word_embeddings (`bool`、*任意*、デフォルトは`True`) : モデルの`tied_weights_keys`マッピングに従って重み埋め込みを共有するかどうか。

これは、Granite Speech5Model の設定を保存するための設定クラスです。指定された引数に基づいて Granite Speech5 モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、[ibm-granite/granite-speech-5.0-470m-turboctc](https://huggingface.co/ibm-granite/granite-speech-5.0-470m-turboctc) と同様の設定が得られます。

設定オブジェクトは [PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) を継承し、モデルの出力を制御するために使用できます。詳細については、[PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) のドキュメントを参照してください。

例:

```python
>>> 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.config
```

## GraniteSpeech5EncoderConfig[[transformers.GraniteSpeech5EncoderConfig]]

#### transformers.GraniteSpeech5EncoderConfig[[transformers.GraniteSpeech5EncoderConfig]]

```python
transformers.GraniteSpeech5EncoderConfig(transformers_version: str | None = None, architectures: list[str] | None = None, output_hidden_states: bool | None = False, return_dict: bool | None = True, dtype: str | torch.dtype | None = None, chunk_size_feed_forward: int = 0, is_encoder_decoder: bool = False, id2label: dict[int, str] | dict[str, str] | None = None, label2id: dict[str, int] | dict[str, str] | None = None, problem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = None, vocab_size: int = 16384, hidden_size: int = 1024, intermediate_size: int = 4096, num_hidden_layers: int = 16, num_attention_heads: int = 8, num_key_value_heads: int | None = None, num_mel_bins: int = 80, head_dim: int | None = None, hidden_act: str = 'silu', max_position_embeddings: int = 512, context_size: int = 128, conv_kernel_size: int = 7, conv_expansion_factor: int = 2, subsample_layers: list[int] | None = None, attention_bias: bool = True, attention_dropout: float | int = 0.0, activation_dropout: float | int = 0.0, initializer_range: float = 0.02)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/granite_speech5/configuration_granite_speech5.py#L29)

**パラメータ:**

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`, *optional*) : Grouped Query Attention を実装するために使用する key_value ヘッドの数です。`num_key_value_heads=num_attention_heads` の場合、モデルは Multi Head Attention (MHA) を使用し、`num_key_value_heads=1` の場合は Multi Query Attention (MQA) を使用し、それ以外の場合は GQA が使用されます。マルチヘッドのチェックポイントを GQA チェックポイントに変換する際は、各グループの key ヘッドと value ヘッドは、そのグループ内の元のすべてのヘッドを平均プーリングして構築する必要があります。詳細については、[この論文](https://huggingface.co/papers/2305.13245)を参照してください。指定されない場合、デフォルトで `num_attention_heads` が使用されます。

num_mel_bins (`int`、*任意*、デフォルトは`80`) : 入力フレームごとに使用されるメル特徴の数を指定します。`AutoFeatureExtractor`クラスで使用される値と一致させる必要があります。

head_dim (`int`, *optional*) : アテンションヘッドの次元です。None の場合、hidden_size // num_attention_heads がデフォルトとして使用されます。

hidden_act (`str`、*任意*、デフォルトは`silu`) : デコーダーで使用する非線形活性化関数（関数または文字列）。例えば、`"gelu"`、`"relu"`、`"silu"`など。

max_position_embeddings (`int`、*optional*、デフォルト値は 512) : Shaw の相対位置エンコーディングにおける最大相対位置インデックス。埋め込みテーブルには `2 * max_position_embeddings + 1` 個のエントリが保持されます。

context_size (`int`、*optional*、デフォルトは 128) : ブロック単位の conformer attention に使用するコンテキストサイズ。

conv_kernel_size (`int`、*optional*、デフォルト値は 7) : conformer 畳み込みモジュールにおける depthwise convolution のカーネルサイズ。

conv_expansion_factor (`int`、*optional*、デフォルトは 2) : conformer 畳み込みモジュールの拡張係数。

subsample_layers (`list[int]`、*optional*、デフォルトは`[0, 1]`) : 時間軸を2でサブサンプリングする（平均プーリングされた残差付きのstride-2 depthwise convolution）conformerブロックのインデックス。

attention_bias (`bool`, *任意*, デフォルトは `True`) : セルフアテンションにおいて、クエリ、キー、バリュー、出力の投影層にバイアスを使用するかどうか。

attention_dropout (`Union[float, int]`、*任意*、デフォルトは`0.0`) : 注意確率のドロップアウト率。

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](https://huggingface.co/ibm-granite/granite-speech-5.0-470m-turboctc) と同様の設定が得られます。

設定オブジェクトは [PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) を継承し、モデルの出力を制御するために使用できます。詳細については、[PreTrainedConfig](/docs/transformers/main/ja/main_classes/configuration#transformers.PreTrainedConfig) のドキュメントを参照してください。

例:

```python
>>> 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.config
```

## GraniteSpeech5FeatureExtractor[[transformers.GraniteSpeech5FeatureExtractor]]

#### transformers.GraniteSpeech5FeatureExtractor[[transformers.GraniteSpeech5FeatureExtractor]]

```python
transformers.GraniteSpeech5FeatureExtractor(num_mel_bins: int = 80, sampling_rate: int = 16000, n_fft: int = 512, win_length: int = 400, hop_length: int = 160, delta_win_length: int = 3, logmel_floor_db: float = 8.0, padding_value: float = 0.0, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/granite_speech5/feature_extraction_granite_speech5.py#L33)

**パラメータ:**

num_mel_bins (`int`、*任意*、デフォルトは 80) : メルフィルタバンクの数。

sampling_rate (`int`、*optional*、デフォルトは 16000) : 音声ファイルをデジタル化するためのサンプリングレート（ヘルツ (Hz) 単位）。

n_fft (`int`, *任意*, デフォルトは 512) : フーリエ変換のサイズ。

win_length (`int`、*optional*、デフォルトは 400) : サンプル単位のウィンドウ長。

hop_length (`int`, *optional*, デフォルトは 160) : メルスペクトログラムを取得するために使用される STFT の、サンプル数で表したオーバーラップウィンドウの長さ。

delta_win_length (`int`, *任意*, デフォルトは 3) : デルタ特徴量を計算するために使用するウィンドウ長。

logmel_floor_db (`float`、*optional*、デフォルト値は 8.0) : log-mel 特徴量は、サンプルごとの最大値からこの dB 数だけ低い値で下限が設定されます。

padding_value (`float`、*任意*、デフォルト値は 0.0) : 音声のパディングに使用されるパディング値。

Granite Speech 5.0 の特徴抽出器を構築します。

このフィーチャーエクストラクターは、主要なメソッドの大部分を含む [SequenceFeatureExtractor](/docs/transformers/main/ja/main_classes/feature_extractor#transformers.SequenceFeatureExtractor) を継承しています。これらのメソッドに関する詳細については、このスーパークラスを参照してください。

## GraniteSpeech5Processor[[transformers.GraniteSpeech5Processor]]

#### transformers.GraniteSpeech5Processor[[transformers.GraniteSpeech5Processor]]

```python
transformers.GraniteSpeech5Processor(feature_extractor, tokenizer)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/granite_speech5/processing_granite_speech5.py#L32)

**パラメータ:**

feature_extractor (`feature_extractor_class`) : 特徴量抽出器は必須の入力です。

tokenizer (`tokenizer_class`) : トークナイザーは必須の入力です。

GraniteSpeech5Processor を構築します。フィーチャーエクストラクターとトークナイザーを単一のプロセッサーにラップします。

[GraniteSpeech5Processor](/docs/transformers/main/ja/model_doc/granite_speech5#transformers.GraniteSpeech5Processor) は、`feature_extractor_class` と `tokenizer_class` のすべての機能を提供します。詳細については、`~feature_extractor_class` および `~tokenizer_class` を参照してください。

## GraniteSpeech5Encoder[[transformers.GraniteSpeech5Encoder]]

#### transformers.GraniteSpeech5Encoder[[transformers.GraniteSpeech5Encoder]]

```python
transformers.GraniteSpeech5Encoder(config: GraniteSpeech5EncoderConfig)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/granite_speech5/modeling_granite_speech5.py#L368)

**パラメータ:**

config ([GraniteSpeech5EncoderConfig](/docs/transformers/main/ja/model_doc/granite_speech5#transformers.GraniteSpeech5EncoderConfig)) : モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) メソッドを確認してください。

[Granite Speech CTC エンコーダー](https://huggingface.co/papers/2505.08699)から派生した、ブロック単位の時間方向サブサンプリングと中間層からの自己条件付きCTCを備えたGranite Speech 5.0 conformerエンコーダーです。

このモデルは [PreTrainedModel](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel) を継承しています。ライブラリがすべてのモデルに対して実装している汎用的なメソッド（ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど）については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchの[torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)のサブクラスでもあります。通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

#### forward[[transformers.GraniteSpeech5Encoder.forward]]

```python
forward(input_features: Tensor, attention_mask: typing.Optional[torch.Tensor] = None, output_attention_mask: bool = True, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/granite_speech5/modeling_granite_speech5.py#L395)

**パラメータ:**

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`、shape `(batch_size, sequence_length)`、*任意*) : padding トークンのインデックスに対する attention を回避するためのマスクです。マスクの値は `[0, 1]` から選択されます:  - **マスクされない**トークンは 1、- **マスクされる**トークンは 0。  [attention マスクとは?](../glossary#attention-mask)

output_attention_mask (`bool`、*任意*、デフォルトは`True`) : 出力のattention maskを返すかどうか。`attention_mask`が提供されている場合のみ有効です。

**戻り値:** `GraniteSpeech5EncoderModelOutput` または `tuple(torch.Tensor)`

`GraniteSpeech5EncoderModelOutput`、または`torch.Tensor`のタプル（`return_dict=False`が渡された場合、または`config.return_dict=False`の場合）。設定（`None`）や入力に応じて、さまざまな要素で構成されます。

[GraniteSpeech5Encoder](/docs/transformers/main/ja/model_doc/granite_speech5#transformers.GraniteSpeech5Encoder)のforwardメソッドは、`__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` のタプル（モデルに埋め込み層がある場合はその出力用 1 つ、各層の出力用 1 つずつ）で、形状は `(batch_size, sequence_length, hidden_size)` です。

  各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
- **attentions** (`tuple(torch.Tensor)`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返されます) -- `torch.Tensor` のタプル（各レイヤーごとに1つ）、形状は `(batch_size, num_heads, sequence_length, sequence_length)`。

  アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。
- **attention_mask** (`torch.Tensor`、形状 `(batch_size, sequence_length)`、*任意*) -- シーケンス圧縮後に、パディングトークンのインデックスに対してアテンションを実行しないためのマスクです。シーケンス長が入力シーケンス長と異なる可能性があるため、返されます。マスクの値は `[0, 1]` から選択されます:

  - **マスクされていない**トークンに対して1
  - **マスク**されたトークンに対しては 0 です。

例:

```python
>>> 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]]

#### transformers.GraniteSpeech5ForCTC[[transformers.GraniteSpeech5ForCTC]]

```python
transformers.GraniteSpeech5ForCTC(config: GraniteSpeech5CTCConfig)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/granite_speech5/modeling_granite_speech5.py#L496)

**パラメータ:**

config ([GraniteSpeech5CTCConfig](/docs/transformers/main/ja/model_doc/granite_speech5#transformers.GraniteSpeech5CTCConfig)) : モデルのパラメータをすべて含むモデル設定クラスです。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、[from_pretrained()](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel.from_pretrained) メソッドを確認してください。

Connectionist Temporal Classification (CTC) ヘッドを備えた Granite Speech 5.0 エンコーダー。

このモデルは [PreTrainedModel](/docs/transformers/main/ja/main_classes/model#transformers.PreTrainedModel) を継承しています。ライブラリがすべてのモデルに対して実装している汎用的なメソッド（ダウンロードや保存、入力埋め込みのリサイズ、ヘッドのプルーニングなど）については、スーパークラスのドキュメントを参照してください。

このモデルは、PyTorchの[torch.nn.Module](https://pytorch.org/docs/stable/nn.html#torch.nn.Module)のサブクラスでもあります。通常のPyTorch Moduleとして使用し、一般的な使用方法や動作に関する詳細については、PyTorchのドキュメントを参照してください。

#### forward[[transformers.GraniteSpeech5ForCTC.forward]]

```python
forward(input_features: Tensor, attention_mask: typing.Optional[torch.Tensor] = None, labels: typing.Optional[torch.Tensor] = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/granite_speech5/modeling_granite_speech5.py#L511)

**パラメータ:**

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`、shape `(batch_size, sequence_length)`、*任意*) : padding トークンのインデックスに対する attention を回避するためのマスクです。マスクの値は `[0, 1]` から選択されます:  - **マスクされない**トークンは 1、- **マスクされる**トークンは 0。  [attention マスクとは?](../glossary#attention-mask)

labels (`torch.Tensor`、形状 `(batch_size, sequence_length)`、*任意*) : マスク言語モデリング損失を計算するためのラベル。インデックスは `[0, ..., config.vocab_size]` の範囲内であるか、-100 である必要があります（`input_ids` のドキュメント文字列を参照）。インデックスが `-100` に設定されたトークンは無視（マスク）され、損失は `[0, ..., config.vocab_size]` の範囲内のラベルを持つトークンに対してのみ計算されます。

**戻り値:** [CausalLMOutput](/docs/transformers/main/ja/main_classes/output#transformers.modeling_outputs.CausalLMOutput) または `tuple(torch.Tensor)`

`None` や入力に応じて、さまざまな要素で構成される [CausalLMOutput](/docs/transformers/main/ja/main_classes/output#transformers.modeling_outputs.CausalLMOutput) または `torch.Tensor` のタプル（`return_dict=False` が渡された場合、または `config.return_dict=False` の場合）。

[GraniteSpeech5ForCTC](/docs/transformers/main/ja/model_doc/granite_speech5#transformers.GraniteSpeech5ForCTC)のforwardメソッドは、`__call__`特殊メソッドをオーバーライドします。

この関数内でフォワードパスの手順を定義する必要がありますが、その後、この関数ではなく`Module`インスタンスを呼び出すべきです。前者は前処理と後処理の実行を適切に処理するのに対し、後者はそれらを無視してしまいます。

- **loss** (`torch.Tensor`、形状 `(1,)`、*任意*、`labels` が指定された場合に返されます) -- 言語モデリングの損失(次のトークンの予測用)。
- **logits** (`torch.Tensor`、形状 `(batch_size, sequence_length, config.vocab_size)`) -- 言語モデリングヘッドの予測スコア（SoftMax 適用前の各語彙トークンのスコア）。
- **hidden_states** (`tuple(torch.Tensor)`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.Tensor` のタプル（モデルに埋め込み層がある場合はその出力用 1 つ、各層の出力用 1 つずつ）で、形状は `(batch_size, sequence_length, hidden_size)` です。

  各層の出力におけるモデルのHidden-states、および任意の初期埋め込み出力。
- **attentions** (`tuple(torch.Tensor)`、*optional*、`output_attentions=True` が渡された場合または `config.output_attentions=True` の場合に返されます) -- `torch.Tensor` のタプル（各レイヤーごとに1つ）、形状は `(batch_size, num_heads, sequence_length, sequence_length)`。

  アテンションのsoftmax後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

例:

```python
>>> 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[[transformers.GraniteSpeech5ForCTC.generate]]

```python
generate(input_features: Tensor, attention_mask: typing.Optional[torch.Tensor] = None, return_dict_in_generate: bool = False, compile_config: transformers.generation.configuration_utils.CompileConfig | None = None, **kwargs: *<class 'transformers.utils.generic.TransformersKwargs'>)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/granite_speech5/modeling_granite_speech5.py#L571)

compile_config ([CompileConfig](/docs/transformers/main/ja/internal/generation_utils#transformers.CompileConfig)、*任意*): 指定された場合、デコーディングループ内の forward 呼び出しに `torch.compile` が適用されます。

例:

```python
>>> 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)
```

