# Wav2Vec2-BERT

## 概要

[Wav2Vec2-BERT](https://huggingface.co/papers/2312.05187)モデルは、Meta AIのSeamless Communicationチームによって、[Seamless: Multilingual Expressive and Streaming Speech Translation](https://ai.meta.com/research/publications/seamless-multilingual-expressive-and-streaming-speech-translation/)で提案されました。

このモデルは、143以上の言語にわたる450万時間のラベルなし音声データで事前学習されています。自動音声認識（ASR）や音声分類などの下流タスクに使用するには、ファインチューニングが必要です。

モデルの公式結果は、論文のセクション3.2.1に記載されています。

論文の抄録は以下の通りです。

*自動音声翻訳の最近の進歩により、対応言語が大幅に拡大し、マルチモーダル機能が向上し、幅広いタスクや機能が実現可能になりました。とはいえ、現在の大規模な自動音声翻訳システムは、人間同士の対話と比較した際に、機械を介したコミュニケーションをシームレスに感じさせるための重要な機能を欠いています。本稿では、ストリーミング形式でエンドツーエンドの表現力豊かで多言語の翻訳を可能にするモデルファミリーを紹介します。まず、大規模な多言語・マルチモーダルモデルであるSeamlessM4Tの改良版であるSeamlessM4T v2を提供します。この新しいモデルは、更新されたUnitY2フレームワークを組み込み、より多くの低リソース言語データで学習されています。拡張されたSeamlessAlignは、合計76言語に対応する114,800時間の自動アラインメントデータを追加しています。SeamlessM4T v2は、我々の2つの最新モデルであるSeamlessExpressiveとSeamlessStreamingの基盤となります。SeamlessExpressiveは、声のスタイルやプロソディを保持した翻訳を可能にします。従来の表現力のある音声研究と比較して、我々の研究は、話速やポーズといったプロソディの未十分に探索された側面に対処すると同時に、声のスタイルも保持します。SeamlessStreamingについては、我々のモデルはEfficient Monotonic Multihead Attention (EMMA)メカニズムを活用し、完全なソース発話を待たずに低レイテンシのターゲット翻訳を生成します。初の試みとして、SeamlessStreamingは、複数のソース言語とターゲット言語における同時音声対音声/テキスト翻訳を可能にします。これらのモデルの性能を理解するために、既存の自動評価指標の新規および修正版を組み合わせ、プロソディ、レイテンシ、頑健性を評価しました。人間による評価では、意味の保持、自然さ、表現力において最も関連性の高い属性を測定するために調整された既存のプロトコルを適用しました。モデルが安全かつ責任を持って使用されることを保証するために、マルチモーダル機械翻訳における既知の最初のレッドチーミング活動、追加された毒性の検出と軽減のためのシステム、ジェンダーバイアスの体系的評価、そしてディープフェイクの影響を軽減するために設計された聴覚的に検出できないローカライズドウォーターマーク機構を実装しました。その結果、SeamlessExpressiveとSeamlessStreamingの主要なコンポーネントを統合し、リアルタイムで表現力豊かな言語間コミュニケーションを可能にする、最初の公開システムであるSeamlessを構築しました。要するに、Seamlessは、ユニバーサル・スピーチ・トランスレーターをSFの概念から現実の技術へと変えるために必要な技術的基盤を垣間見ることができます。最後に、本稿の貢献——モデル、コード、ウォーターマーク検出器を含む——は、以下のリンクから公開され、アクセス可能です。*

このモデルは[ylacombe](https://huggingface.co/ylacombe)によって提供されました。元のコードは[こちら](https://github.com/facebookresearch/seamless_communication)で確認できます。

## 使用のコツ

- Wav2Vec2-BERT は Wav2Vec2-Conformer と同じアーキテクチャを踏襲していますが、causal な depthwise convolutional layer を採用し、生の波形ではなく音声の mel-spectrogram 表現を入力として使用します。
- Wav2Vec2-BERTは、`config.position_embeddings_type`に適切な値を設定することで、相対位置埋め込みなし、Shaw型位置埋め込み、Transformer-XL型位置埋め込み、または回転位置埋め込みのいずれかを 사용할 수 있습니다。
- Wav2Vec2-BERTでは、単純な畳み込みネットワークの代わりに、Conformerベースのアダプターネットワークを導入しています。

## リソース

- [英語の音声認識モデルのファインチューニング方法](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/speech_recognition.ipynb)や、[任意の言語の音声認識モデルのファインチューニング方法](https://colab.research.google.com/github/huggingface/notebooks/blob/main/examples/multi_lingual_speech_recognition.ipynb)に関するこれらのノートブックを、ご自身に合わせて調整することもできます。

- 関連項目: [音声分類タスクガイド](../tasks/audio_classification)

## Wav2Vec2BertConfig[[transformers.Wav2Vec2BertConfig]]

#### transformers.Wav2Vec2BertConfig[[transformers.Wav2Vec2BertConfig]]

```python
transformers.Wav2Vec2BertConfig(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 | None = None, hidden_size: int = 1024, num_hidden_layers: int = 24, num_attention_heads: int = 16, intermediate_size: int = 4096, feature_projection_input_dim: int = 160, hidden_act: str = 'swish', hidden_dropout: float | int = 0.0, activation_dropout: float | int = 0.0, attention_dropout: float | int = 0.0, feat_proj_dropout: float | int = 0.0, final_dropout: float | int = 0.1, layerdrop: float | int = 0.1, initializer_range: float = 0.02, layer_norm_eps: float = 1e-05, apply_spec_augment: bool = True, mask_time_prob: float | int = 0.05, mask_time_length: int = 10, mask_time_min_masks: int = 2, mask_feature_prob: float | int = 0.0, mask_feature_length: int = 10, mask_feature_min_masks: int = 0, ctc_loss_reduction: str = 'sum', ctc_zero_infinity: bool = False, use_weighted_layer_sum: bool = False, classifier_proj_size: int = 768, tdnn_dim: list[int] | tuple[int, ...] = (512, 512, 512, 512, 1500), tdnn_kernel: list[int] | tuple[int, ...] = (5, 3, 3, 1, 1), tdnn_dilation: list[int] | tuple[int, ...] = (1, 2, 3, 1, 1), xvector_output_dim: int = 512, pad_token_id: int | None = 0, bos_token_id: int | None = 1, eos_token_id: int | list[int] | None = 2, add_adapter: bool = False, adapter_kernel_size: int = 3, adapter_stride: int = 2, num_adapter_layers: int = 1, adapter_act: str = 'relu', use_intermediate_ffn_before_adapter: bool = False, output_hidden_size: int | None = None, position_embeddings_type: typing.Optional[typing.Literal['rotary', 'relative', 'relative_key']] = 'relative_key', rotary_embedding_base: int = 10000, max_source_positions: int = 5000, left_max_position_embeddings: int = 64, right_max_position_embeddings: int = 8, conv_depthwise_kernel_size: int = 31, conformer_conv_dropout: float | int = 0.1)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/wav2vec2_bert/configuration_wav2vec2_bert.py#L26)

**パラメータ:**

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

hidden_size (`int`、*任意*、デフォルトは`1024`) : 隠れ表現の次元数。

num_hidden_layers (`int`、*optional*、デフォルトは `24`) : Transformer デコーダーの隠れ層の数。

num_attention_heads (`int`、*任意*、デフォルトは`16`) : Transformerデコーダーの各アテンション層におけるアテンションヘッドの数。

intermediate_size (`int`、*任意*、デフォルトは`4096`) : MLP 表現の次元数。

feature_projection_input_dim (`int`、*optional*、デフォルトは 160) : このモデルの入力次元、つまり [SeamlessM4TFeatureExtractor](/docs/transformers/main/ja/model_doc/seamless_m4t#transformers.SeamlessM4TFeatureExtractor) または [Wav2Vec2BertProcessor](/docs/transformers/main/ja/model_doc/wav2vec2-bert#transformers.Wav2Vec2BertProcessor) で入力オーディオを処理した後の次元です。

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

hidden_dropout (`Union[float, int]`、*任意*、デフォルトは`0.0`) : embeddings、encoder、pooler 内のすべての全結合層における dropout 確率。

activation_dropout (`Union[float, int]`、*任意*、デフォルトは`0.0`) : 全結合層内の活性化に対する dropout 率。

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

feat_proj_dropout (`float`、*任意*、デフォルトは 0.0) : 特徴量投影の dropout 確率。

final_dropout (`float`、*任意*、デフォルトは 0.1) : [Wav2Vec2BertForCTC](/docs/transformers/main/ja/model_doc/wav2vec2-bert#transformers.Wav2Vec2BertForCTC)の最終的な投影層の dropout 確率です。

layerdrop (`Union[float, int]`、*任意*、デフォルトは`0.1`) : LayerDrop の確率です。詳細については、[LayerDrop の論文](see https://huggingface.co/papers/1909.11556)を参照してください。

initializer_range (`float`、*任意*、デフォルトは`0.02`) : すべての重み行列を初期化するためのtruncated_normal_initializerの標準偏差です。

layer_norm_eps (`float`、*任意*、デフォルトは`1e-05`) : Layer Normalization 層で使用する epsilon。

apply_spec_augment (`bool`、*任意*、デフォルトは`True`) : 特徴量エンコーダーの出力に*SpecAugment*データ拡張を適用するかどうか。参考として、[SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognition](https://huggingface.co/papers/1904.08779)を参照してください。

mask_time_prob (`float`, *optional*, defaults to 0.05) : Percentage (between 0 and 1) of all feature vectors along the time axis which will be masked. The masking procedure generates `mask_time_prob*len(time_axis)/mask_time_length ``independent masks over the axis. If reasoning from the probability of each feature vector to be chosen as the start of the vector span to be masked, *mask_time_prob* should be `prob_vector_start*mask_time_length`. Note that overlap may decrease the actual percentage of masked vectors. This is only relevant if `apply_spec_augment is True`.

mask_time_length (`int`, *optional*, デフォルトは 10) : 時間軸に沿ったベクトルスパンの長さ。

mask_time_min_masks (`int`, *optional*, デフォルト値は 2) : `mask_feature_prob` に関係なく、時間軸に沿って生成される長さ `mask_feature_length` のマスクの最小数です。各タイムステップで適用されます。`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_length (`int`, *任意*, デフォルトは 10) : 特徴量軸に沿ったベクトルスパンの長さ。

mask_feature_min_masks (`int`, *optional*, デフォルト値は 0) : `mask_feature_prob` に関係なく、各タイムステップにおいて、特徴軸に沿って生成される長さ `mask_feature_length` のマスクの最小数です。`mask_feature_prob*len(feature_axis)/mask_feature_length < mask_feature_min_masks` の場合のみ関連します。

ctc_loss_reduction (`str`、*任意*、デフォルトは`sum`) : `torch.nn.CTCLoss`の出力に適用する集約方法を指定します。学習時のみ関連します。

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

use_weighted_layer_sum (`bool`、*任意*、デフォルトは`False`) : 学習された重みを用いた層の出力の加重平均を使用するかどうか。[Wav2Vec2BertForSequenceClassification](/docs/transformers/main/ja/model_doc/wav2vec2-bert#transformers.Wav2Vec2BertForSequenceClassification)のインスタンスを使用する場合にのみ関連します。

classifier_proj_size (`int`、*optional*、デフォルトは 768) : 分類のためのトークン平均プーリング前の射影の次元数。

tdnn_dim (`tuple[int]` または `list[int]`、*任意*、デフォルトは `(512, 512, 512, 512, 1500)`) : *XVector* モデルの *TDNN* モジュールにおける、各 1 次元畳み込み層の出力チャネル数を定義する整数のタプルです。*tdnn_dim* の長さが *TDNN* 層の数を定義します。

tdnn_kernel (`tuple[int]` または `list[int]`、*省略可能*、デフォルトは `(5, 3, 3, 1, 1)`) : *XVector* モデルの *TDNN* モジュール内の各1次元畳み込み層のカーネルサイズを定義する整数のタプル。*tdnn_kernel* の長さは *tdnn_dim* の長さと一致する必要があります。

tdnn_dilation (`tuple[int]` または `list[int]`、*省略可能*、デフォルト値は `(1, 2, 3, 1, 1)`) : *XVector* モデルの *TDNN* モジュール内の各 1 次元畳み込み層の膨張係数を定義する整数のタプル。*tdnn_dilation* の長さは *tdnn_dim* の長さと一致する必要があります。

xvector_output_dim (`int`、*任意*、デフォルトは 512) : *XVector*埋め込みベクトルの次元数。

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

bos_token_id (`int`, *任意*, デフォルトは `1`) : 語彙内でストリームの開始に使用されるトークン ID。

eos_token_id (`Union[int, list[int]]`、*任意*、デフォルトは`2`) : 語彙内でストリーム終了に使用されるトークン ID。

add_adapter (`bool`、*任意*、デフォルトは`False`) : Wav2Vec2Bert Encoderの上に畳み込みアテンションネットワークをスタックするかどうかを指定します。SpeechEncoderDecoderモデルのWav2Vec2Bertをウォームスタートする際に非常に有用です。

adapter_kernel_size (`int`、*任意*、デフォルト値は 3) : アダプターネットワーク内の畳み込み層のカーネルサイズ。`add_adapter is True` の場合のみ関連します。

adapter_stride (`int`, *任意*, デフォルトは 2) : アダプターネットワークの畳み込み層のストライド。`add_adapter is True` の場合のみ関連します。

num_adapter_layers (`int`, *optional*, デフォルトは 1) : アダプターネットワークで使用すべき畳み込み層の数。`add_adapter is True` の場合のみ関連します。

adapter_act (`str` または `function`、*任意*、デフォルトは `"relu"`) : アダプタ層で使用する非線形活性化関数（関数または文字列）。文字列の場合、`"gelu"`、`"relu"`、`"selu"`、`"swish"` および `"gelu_new"` がサポートされています。

use_intermediate_ffn_before_adapter (`bool`, *任意*, デフォルトは `False`) : Wav2Vec2Bert Encoder の上に、アダプターネットワークの前に、中間のフィードフォワードブロックをスタックするかどうか。 `add_adapter is True` の場合のみ関連します。

output_hidden_size (`int`, *任意*) : エンコーダー出力層の次元数。定義されていない場合、*hidden-size*がデフォルト値として使用されます。`add_adapter is True`の場合にのみ関連します。

position_embeddings_type (`str`、*任意*、デフォルトは`"relative_key"`) : 以下を指定できます。 - `rotary` : rotary position embeddings の場合。 - `relative` : relative position embeddings の場合。 - `relative_key` : [Self-Attention with Relative Position Representations (Shaw et al.)](https://huggingface.co/papers/1803.02155) で定義された relative position embeddings の場合。 `None` のままにすると、relative position embeddings は適用されません。

rotary_embedding_base (`int`, *optional*, デフォルトは 10000) : `"rotary"` の位置埋め込みを使用する場合、埋め込みベースのサイズを定義します。

max_source_positions (`int`、*optional*、デフォルトは 5000) : `"relative"` の位置埋め込みを使用する場合、ソース入力の最大位置を定義します。

left_max_position_embeddings (`int`、*optional*、デフォルトは 64) : `"relative_key"`（Shaw とも呼ばれる）位置埋め込みを使用する場合、相対位置の左側のクリップ値を定義します。

right_max_position_embeddings (`int`、*optional*、デフォルトは 8) : `"relative_key"`（Shaw とも呼ばれる）位置埋め込みを使用する場合、相対位置の右側のクリッピング値を定義します。

conv_depthwise_kernel_size (`int`, *optional*, デフォルトは 31) : Conformer ブロック内の畳み込み深度方向 1D レイヤーのカーネルサイズ。

conformer_conv_dropout (`float`、*optional*、デフォルトは 0.1) : Conformer ブロック内のすべての畳み込み層における dropout 確率。

これは、Wav2Vec2 BertModel の設定を保存するための設定クラスです。指定された引数に基づいて Wav2Vec2 Bert モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、[facebook/w2v-bert-2.0](https://huggingface.co/facebook/w2v-bert-2.0) と同様の設定が得られます。

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

例:

```python
>>> from transformers import Wav2Vec2BertConfig, Wav2Vec2BertModel

>>> # Initializing a Wav2Vec2Bert facebook/wav2vec2-bert-rel-pos-large style configuration
>>> configuration = Wav2Vec2BertConfig()

>>> # Initializing a model (with random weights) from the facebook/wav2vec2-bert-rel-pos-large style configuration
>>> model = Wav2Vec2BertModel(configuration)

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

## Wav2Vec2BertProcessor[[transformers.Wav2Vec2BertProcessor]]

#### transformers.Wav2Vec2BertProcessor[[transformers.Wav2Vec2BertProcessor]]

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

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/wav2vec2_bert/processing_wav2vec2_bert.py#L28)

**パラメータ:**

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

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

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

[Wav2Vec2BertProcessor](/docs/transformers/main/ja/model_doc/wav2vec2-bert#transformers.Wav2Vec2BertProcessor) は、[Wav2Vec2FeatureExtractor](/docs/transformers/main/ja/model_doc/wav2vec2#transformers.Wav2Vec2FeatureExtractor) と [Wav2Vec2CTCTokenizer](/docs/transformers/main/ja/model_doc/wav2vec2#transformers.Wav2Vec2CTCTokenizer) のすべての機能を提供します。詳細については、[~Wav2Vec2FeatureExtractor](/docs/transformers/main/ja/model_doc/wav2vec2#transformers.Wav2Vec2FeatureExtractor) および [~Wav2Vec2CTCTokenizer](/docs/transformers/main/ja/model_doc/wav2vec2#transformers.Wav2Vec2CTCTokenizer) を参照してください。

#### __call__[[transformers.Wav2Vec2BertProcessor.__call__]]

```python
__call__(audio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), list[numpy.ndarray], list['torch.Tensor'], NoneType] = None, text: str | list[str] | None = None, **kwargs: *<class 'transformers.models.wav2vec2_bert.processing_wav2vec2_bert.Wav2Vec2BertProcessorKwargs'>)
```

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

**パラメータ:**

audio (`Union[numpy.ndarray, torch.Tensor, list[numpy.ndarray], list[torch.Tensor]]`, *optional*) : 準備対象のオーディオまたはオーディオのバッチです。各オーディオはNumPy配列またはPyTorchテンソルであることができます。NumPy配列/PyTorchテンソルの場合、各オーディオの形状は(C, T)である必要があります。ここで、Cはチャネル数、Tはオーディオのサンプル長です。

text (`Union[str, list[str]]`、*任意*) : エンコード対象のシーケンスまたはシーケンスのバッチです。各シーケンスは、文字列または文字列のリスト（プレトークナイズ済み文字列）であることができます。プレトークナイズ済み入力を渡す場合は、バッチ入力との曖昧さを避けるために `is_split_into_words=True` を設定してください。

return_tensors (`str` または [TensorType](/docs/transformers/main/ja/internal/file_utils#transformers.TensorType)、*optional*) : 設定されている場合、特定のフレームワークのテンソルを返します。受け入れ可能な値は以下の通りです:  - `'pt'`: PyTorch の `torch.Tensor` オブジェクトを返します。 - `'np'`: NumPy の `np.ndarray` オブジェクトを返します。

- ****kwargs** ([ProcessingKwargs](/docs/transformers/main/ja/main_classes/processors#transformers.ProcessingKwargs), *optional*) : 各モダリティ（テキスト、画像、動画、音声）の追加処理オプション。モデル固有のパラメータは上記にリストされています。サポートされている引数の完全なリストについては、TypedDict クラスを参照してください。

**戻り値:** [BatchEncoding](/docs/transformers/main/ja/main_classes/tokenizer#transformers.BatchEncoding)

以下のフィールドを持つ[BatchEncoding](/docs/transformers/main/ja/main_classes/tokenizer#transformers.BatchEncoding):
- **input_features** -- モデルに与える音声入力特徴量。`audio` が `None` でない場合に返されます。
- **attention_mask** -- `audio`が`None`でない場合、モデルがどのタイムスタンプに注意を向けるべきかを指定するインデックスのリスト。
`text`のみが指定されている場合、トークンアテンションマスクを返します。
- **labels** -- モデルに与えるトークン ID のリスト。`text` と `audio` の両方が `None` でない場合に返されます。
- **input_ids** -- モデルに与えるトークンIDのリスト。`text`が`None`でなく、`audio`が`None`の場合に返されます。

#### pad[[transformers.Wav2Vec2BertProcessor.pad]]

```python
pad(input_features = None, labels = None, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/wav2vec2_bert/processing_wav2vec2_bert.py#L70)

`input_features` が `None` でない場合、このメソッドは `input_features` と `kwargs` 引数を SeamlessM4TFeatureExtractor の [pad()](/docs/transformers/main/ja/main_classes/feature_extractor#transformers.SequenceFeatureExtractor.pad) に渡し、入力特徴量をパディングします。`labels` が `None` でない場合、このメソッドは `labels` と `kwargs` 引数を PreTrainedTokenizer の [pad()](/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.pad) に渡し、ラベルをパディングします。詳細については、上記の2つのメソッドのドキュメント文字列を参照してください。

#### from_pretrained[[transformers.Wav2Vec2BertProcessor.from_pretrained]]

```python
from_pretrained(pretrained_model_name_or_path: str | os.PathLike, cache_dir: str | os.PathLike | None = None, force_download: bool = False, local_files_only: bool = False, token: str | bool | None = None, revision: str = 'main', **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/processing_utils.py#L1697)

**パラメータ:**

pretrained_model_name_or_path (`str` または `os.PathLike`) : 以下のいずれかです:  - huggingface.co のモデルリポジトリにホストされている事前学習済み feature_extractor の *model id* を示す文字列。 - [save_pretrained()](/docs/transformers/main/ja/main_classes/feature_extractor#transformers.FeatureExtractionMixin.save_pretrained) メソッドを使用して feature extractor ファイルを保存した *ディレクトリ* へのパス。例: `./my_model_directory/`。 - 保存された feature extractor の JSON *ファイル* へのパス。例: `./my_model_directory/preprocessor_config.json`。

- ****kwargs** : [from_pretrained()](/docs/transformers/main/ja/main_classes/feature_extractor#transformers.FeatureExtractionMixin.from_pretrained) と `~tokenization_utils_base.PreTrainedTokenizer.from_pretrained` の両方に渡される追加のキーワード引数。

事前学習済みモデルに関連付けられたプロセッサをインスタンス化します。

このクラスメソッドは、単にフィーチャーエクストラクターの [from_pretrained()](/docs/transformers/main/ja/main_classes/feature_extractor#transformers.FeatureExtractionMixin.from_pretrained)、イメージプロセッサーの [ImageProcessingMixin](/docs/transformers/main/ja/internal/image_processing_utils#transformers.ImageProcessingMixin)、およびトークナイザーの `~tokenization_utils_base.PreTrainedTokenizer.from_pretrained` メソッドを呼び出しています。詳細については、上記のメソッドのドキュメント文字列を参照してください。

#### save_pretrained[[transformers.Wav2Vec2BertProcessor.save_pretrained]]

```python
save_pretrained(save_directory, push_to_hub: bool = False, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/processing_utils.py#L1112)

**パラメータ:**

save_directory (`str` または `os.PathLike`) : 特徴量抽出器の JSON ファイルとトークナイザーのファイルを保存するディレクトリ（存在しない場合は作成されます）。

push_to_hub (`bool`、*任意*、デフォルトは`False`) : モデルを保存した後、Hugging Face モデルハブにプッシュするかどうかを指定します。プッシュ先のリポジトリは`repo_id`で指定できます（指定しない場合、`save_directory`の名前があなたのネームスペース内でデフォルトとして使用されます）。

kwargs (`dict[str, Any]`、*省略可*) : [push_to_hub()](/docs/transformers/main/ja/main_classes/model#transformers.utils.PushToHubMixin.push_to_hub) メソッドに渡される追加のキーワード引数。

このプロセッサ（フィーチャーエクストラクター、トークナイザーなど）の属性を指定されたディレクトリに保存し、[from_pretrained()](/docs/transformers/main/ja/model_doc/wav2vec2#transformers.Wav2Vec2Processor.from_pretrained) メソッドによって再読み込みできるようにします。

このクラスメソッドは、[save_pretrained()](/docs/transformers/main/ja/main_classes/feature_extractor#transformers.FeatureExtractionMixin.save_pretrained)と[save_pretrained()](/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.save_pretrained)を呼び出すだけです。詳細については、上記のメソッドのドキュメント文字列を参照してください。

#### batch_decode[[transformers.Wav2Vec2BertProcessor.batch_decode]]

```python
batch_decode(*args, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/processing_utils.py#L1952)

このメソッドは、すべての引数を PreTrainedTokenizer の [batch_decode()](/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.batch_decode) に転送します。詳細については、このメソッドのドキュメント文字列を参照してください。

#### decode[[transformers.Wav2Vec2BertProcessor.decode]]

```python
decode(*args, **kwargs)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/processing_utils.py#L1961)

このメソッドは、すべての引数を PreTrainedTokenizer の [decode()](/docs/transformers/main/ja/internal/tokenization_utils#transformers.PreTrainedTokenizerBase.decode) に転送します。詳細については、このメソッドのドキュメント文字列を参照してください。

## Wav2Vec2BertModel[[transformers.Wav2Vec2BertModel]]

#### transformers.Wav2Vec2BertModel[[transformers.Wav2Vec2BertModel]]

```python
transformers.Wav2Vec2BertModel(config: Wav2Vec2BertConfig)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/wav2vec2_bert/modeling_wav2vec2_bert.py#L940)

**パラメータ:**

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

特定のヘッドを付加せずに生の隠れ状態を出力する、素のWav2Vec2 Bertモデル。

このモデルは [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.Wav2Vec2BertModel.forward]]

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

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/wav2vec2_bert/modeling_wav2vec2_bert.py#L1007)

**パラメータ:**

input_features (`torch.Tensor`、形状 `(batch_size, sequence_length, feature_dim)`、*任意*) : 入力音声特徴に対応するテンソルです。音声特徴は [Wav2Vec2FeatureExtractor](/docs/transformers/main/ja/model_doc/wav2vec2#transformers.Wav2Vec2FeatureExtractor) を使用して取得できます。詳細は [Wav2Vec2FeatureExtractor.__call__()](/docs/transformers/main/ja/model_doc/wav2vec2#transformers.Wav2Vec2FeatureExtractor.__call__) を参照してください（[Wav2Vec2BertProcessor](/docs/transformers/main/ja/model_doc/wav2vec2-bert#transformers.Wav2Vec2BertProcessor) は音声の処理に [Wav2Vec2FeatureExtractor](/docs/transformers/main/ja/model_doc/wav2vec2#transformers.Wav2Vec2FeatureExtractor) を使用します）。

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

mask_time_indices (`torch.BoolTensor`、shape `(batch_size, sequence_length)`、*任意*) : 対比損失のために抽出特徴をマスクするインデックス。学習モードの場合、モデルは*config.proj_codevector_dim*空間でマスクされた抽出特徴を予測するように学習します。

**戻り値:** [Wav2Vec2BaseModelOutput](/docs/transformers/main/ja/model_doc/wav2vec2#transformers.modeling_outputs.Wav2Vec2BaseModelOutput) または `tuple(torch.FloatTensor)`

設定（[Wav2Vec2BertConfig](/docs/transformers/main/ja/model_doc/wav2vec2-bert#transformers.Wav2Vec2BertConfig)）と入力に応じて、さまざまな要素で構成される [Wav2Vec2BaseModelOutput](/docs/transformers/main/ja/model_doc/wav2vec2#transformers.modeling_outputs.Wav2Vec2BaseModelOutput) または `torch.FloatTensor` のタプル（`return_dict=False` が渡された場合、または `config.return_dict=False` の場合）。

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

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

- **last_hidden_state** (`torch.FloatTensor`、shape `(batch_size, sequence_length, hidden_size)`) -- モデルの最終層の出力における隠れ状態のシーケンス。
- **extract_features** (`torch.FloatTensor`、形状 `(batch_size, sequence_length, conv_dim[-1])`) -- モデルの最後の畳み込み層から抽出された特徴ベクトルのシーケンス。
- **hidden_states** (`tuple(torch.FloatTensor)`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.FloatTensor` のタプル（埋め込みの出力用 1 つ + 各層の出力用 1 つ）で、形状は `(batch_size, sequence_length, hidden_size)` です。

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

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

## Wav2Vec2BertForCTC[[transformers.Wav2Vec2BertForCTC]]

#### transformers.Wav2Vec2BertForCTC[[transformers.Wav2Vec2BertForCTC]]

```python
transformers.Wav2Vec2BertForCTC(config: Wav2Vec2BertConfig, target_lang: str | None = None)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/wav2vec2_bert/modeling_wav2vec2_bert.py#L1053)

**パラメータ:**

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

target_lang (`str`, *任意*) : アダプター重みの言語 ID。アダプター重みは adapter..safetensors または adapter..bin の形式で保存されます。[UniSpeechSatForCTC](/docs/transformers/main/ja/model_doc/unispeech-sat#transformers.UniSpeechSatForCTC) のインスタンスをアダプターと併用する場合にのみ関連します。デフォルトでは 'eng' が使用されます。

Connectionist Temporal Classification (CTC) 用の `language modeling` ヘッドを上部に備えた Wav2Vec2Bert モデル。

このモデルは [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.Wav2Vec2BertForCTC.forward]]

```python
forward(input_features: typing.Optional[torch.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/wav2vec2_bert/modeling_wav2vec2_bert.py#L1083)

**パラメータ:**

input_features (`torch.Tensor`、形状 `(batch_size, sequence_length, feature_dim)`、*任意*) : 入力音声特徴に対応するテンソルです。音声特徴は [Wav2Vec2FeatureExtractor](/docs/transformers/main/ja/model_doc/wav2vec2#transformers.Wav2Vec2FeatureExtractor) を使用して取得できます。詳細は [Wav2Vec2FeatureExtractor.__call__()](/docs/transformers/main/ja/model_doc/wav2vec2#transformers.Wav2Vec2FeatureExtractor.__call__) を参照してください（[Wav2Vec2BertProcessor](/docs/transformers/main/ja/model_doc/wav2vec2-bert#transformers.Wav2Vec2BertProcessor) は音声の処理に [Wav2Vec2FeatureExtractor](/docs/transformers/main/ja/model_doc/wav2vec2#transformers.Wav2Vec2FeatureExtractor) を使用します）。

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

labels (`torch.LongTensor`、形状 `(batch_size, target_length)`、*任意*) : Connectionist Temporal Classification のラベルです。なお、`target_length` は出力 logits のシーケンス長以下である必要があります。インデックスは `[-100, 0, ..., config.vocab_size - 1]` から選択されます。`-100` に設定されたすべてのラベルは無視（マスク）され、損失は `[0, ..., config.vocab_size - 1]` 内のラベルに対してのみ計算されます。

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

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

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

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

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

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

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

例:

```python
>>> from transformers import AutoProcessor, Wav2Vec2BertForCTC
>>> from datasets import load_dataset
>>> import torch

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate

>>> processor = AutoProcessor.from_pretrained("facebook/w2v-bert-2.0")
>>> model = Wav2Vec2BertForCTC.from_pretrained("facebook/w2v-bert-2.0")

>>> # audio file is decoded on the fly
>>> inputs = processor(dataset[0]["audio"]["array"], sampling_rate=sampling_rate, return_tensors="pt")
>>> with torch.no_grad():
...     logits = model(**inputs).logits
>>> predicted_ids = torch.argmax(logits, dim=-1)

>>> # transcribe speech
>>> transcription = processor.batch_decode(predicted_ids)
>>> transcription[0]
...

>>> inputs["labels"] = processor(text=dataset[0]["text"], return_tensors="pt").input_ids

>>> # compute loss
>>> loss = model(**inputs).loss
>>> round(loss.item(), 2)
...
```

## Wav2Vec2BertForSequenceClassification[[transformers.Wav2Vec2BertForSequenceClassification]]

#### transformers.Wav2Vec2BertForSequenceClassification[[transformers.Wav2Vec2BertForSequenceClassification]]

```python
transformers.Wav2Vec2BertForSequenceClassification(config: Wav2Vec2BertConfig)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/wav2vec2_bert/modeling_wav2vec2_bert.py#L1143)

**パラメータ:**

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

SUPERB Keyword Spottingなどのタスク向けに、プーリングされた出力の上に線形層を配置したシーケンス分類ヘッドを備えたWav2Vec2Bertモデル。

このモデルは [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.Wav2Vec2BertForSequenceClassification.forward]]

```python
forward(input_features: typing.Optional[torch.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/wav2vec2_bert/modeling_wav2vec2_bert.py#L1169)

**パラメータ:**

input_features (`torch.Tensor`、形状 `(batch_size, sequence_length, feature_dim)`、*任意*) : 入力音声特徴に対応するテンソルです。音声特徴は [Wav2Vec2FeatureExtractor](/docs/transformers/main/ja/model_doc/wav2vec2#transformers.Wav2Vec2FeatureExtractor) を使用して取得できます。詳細は [Wav2Vec2FeatureExtractor.__call__()](/docs/transformers/main/ja/model_doc/wav2vec2#transformers.Wav2Vec2FeatureExtractor.__call__) を参照してください（[Wav2Vec2BertProcessor](/docs/transformers/main/ja/model_doc/wav2vec2-bert#transformers.Wav2Vec2BertProcessor) は音声の処理に [Wav2Vec2FeatureExtractor](/docs/transformers/main/ja/model_doc/wav2vec2#transformers.Wav2Vec2FeatureExtractor) を使用します）。

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

labels (`torch.LongTensor`、形状 `(batch_size,)`、*任意*) : シーケンス分類/回帰の損失を計算するためのラベル。インデックスは `[0, ..., config.num_labels - 1]` の範囲である必要があります。`config.num_labels == 1` の場合は回帰損失（平均二乗誤差）が計算され、`config.num_labels > 1` の場合は分類損失（クロスエントロピー）が計算されます。

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

設定（[Wav2Vec2BertConfig](/docs/transformers/main/ja/model_doc/wav2vec2-bert#transformers.Wav2Vec2BertConfig)）と入力に応じて、さまざまな要素で構成される [SequenceClassifierOutput](/docs/transformers/main/ja/main_classes/output#transformers.modeling_outputs.SequenceClassifierOutput) または `torch.FloatTensor` のタプル（`return_dict=False` が渡された場合、または `config.return_dict=False` の場合）。

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

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

- **loss** (`torch.FloatTensor`、shape `(1,)`、*optional*、`labels` が指定された場合に返されます) -- 分類（または config.num_labels==1 の場合は回帰）の損失。
- **logits** (`torch.FloatTensor`、shape `(batch_size, config.num_labels)`) -- SoftMax 適用前の分類（または config.num_labels==1 の場合は回帰）スコア。
- **hidden_states** (`tuple(torch.FloatTensor)`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.FloatTensor` のタプル（埋め込み層を持つモデルの場合、埋め込みの出力用が 1 つ、各層の出力用が 1 つずつ）で、形状は `(batch_size, sequence_length, hidden_size)` です。

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

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

単一ラベル分類の例:

```python
>>> import torch
>>> from transformers import AutoTokenizer, Wav2Vec2BertForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/w2v-bert-2.0")
>>> model = Wav2Vec2BertForSequenceClassification.from_pretrained("facebook/w2v-bert-2.0")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_id = logits.argmax().item()
>>> model.config.id2label[predicted_class_id]
...

>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = Wav2Vec2BertForSequenceClassification.from_pretrained("facebook/w2v-bert-2.0", num_labels=num_labels)

>>> labels = torch.tensor([1])
>>> loss = model(**inputs, labels=labels).loss
>>> round(loss.item(), 2)
...
```

マルチラベル分類の例:

```python
>>> import torch
>>> from transformers import AutoTokenizer, Wav2Vec2BertForSequenceClassification

>>> tokenizer = AutoTokenizer.from_pretrained("facebook/w2v-bert-2.0")
>>> model = Wav2Vec2BertForSequenceClassification.from_pretrained("facebook/w2v-bert-2.0", problem_type="multi_label_classification")

>>> inputs = tokenizer("Hello, my dog is cute", return_tensors="pt")

>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> predicted_class_ids = torch.arange(0, logits.shape[-1])[torch.sigmoid(logits).squeeze(dim=0) > 0.5]

>>> # To train a model on `num_labels` classes, you can pass `num_labels=num_labels` to `.from_pretrained(...)`
>>> num_labels = len(model.config.id2label)
>>> model = Wav2Vec2BertForSequenceClassification.from_pretrained(
...     "facebook/w2v-bert-2.0", num_labels=num_labels, problem_type="multi_label_classification"
... )

>>> labels = torch.sum(
...     torch.nn.functional.one_hot(predicted_class_ids[None, :].clone(), num_classes=num_labels), dim=1
... ).to(torch.float)
>>> loss = model(**inputs, labels=labels).loss
```

## Wav2Vec2BertForAudioFrameClassification[[transformers.Wav2Vec2BertForAudioFrameClassification]]

#### transformers.Wav2Vec2BertForAudioFrameClassification[[transformers.Wav2Vec2BertForAudioFrameClassification]]

```python
transformers.Wav2Vec2BertForAudioFrameClassification(config: Wav2Vec2BertConfig)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/wav2vec2_bert/modeling_wav2vec2_bert.py#L1227)

**パラメータ:**

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

話者分離などのタスクに対応するため、フレーム分類ヘッドを上部に備えたWav2Vec2 Bertモデル。

このモデルは [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.Wav2Vec2BertForAudioFrameClassification.forward]]

```python
forward(input_features: typing.Optional[torch.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/wav2vec2_bert/modeling_wav2vec2_bert.py#L1252)

**パラメータ:**

input_features (`torch.Tensor`、形状 `(batch_size, sequence_length, feature_dim)`、*任意*) : 入力音声特徴に対応するテンソルです。音声特徴は [Wav2Vec2FeatureExtractor](/docs/transformers/main/ja/model_doc/wav2vec2#transformers.Wav2Vec2FeatureExtractor) を使用して取得できます。詳細は [Wav2Vec2FeatureExtractor.__call__()](/docs/transformers/main/ja/model_doc/wav2vec2#transformers.Wav2Vec2FeatureExtractor.__call__) を参照してください（[Wav2Vec2BertProcessor](/docs/transformers/main/ja/model_doc/wav2vec2-bert#transformers.Wav2Vec2BertProcessor) は音声の処理に [Wav2Vec2FeatureExtractor](/docs/transformers/main/ja/model_doc/wav2vec2#transformers.Wav2Vec2FeatureExtractor) を使用します）。

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

labels (`torch.LongTensor`、形状 `(batch_size,)`、*任意*) : シーケンス分類/回帰の損失を計算するためのラベル。インデックスは `[0, ..., config.num_labels - 1]` の範囲である必要があります。`config.num_labels == 1` の場合は回帰損失（平均二乗誤差）が計算され、`config.num_labels > 1` の場合は分類損失（クロスエントロピー）が計算されます。

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

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

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

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

- **loss** (`torch.FloatTensor`、shape `(1,)`、*optional*、`labels` が指定された場合に返されます) -- 分類損失。
- **logits** (`torch.FloatTensor`、shape `(batch_size, sequence_length, config.num_labels)`) -- SoftMax 適用前の分類スコア。
- **hidden_states** (`tuple(torch.FloatTensor)`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.FloatTensor` のタプル（埋め込み層を持つモデルの場合、埋め込みの出力用が 1 つ、各層の出力用が 1 つずつ）で、形状は `(batch_size, sequence_length, hidden_size)` です。

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

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

例:

```python
>>> from transformers import AutoFeatureExtractor, Wav2Vec2BertForAudioFrameClassification
>>> from datasets import load_dataset
>>> import torch

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate

>>> feature_extractor = AutoFeatureExtractor.from_pretrained("facebook/w2v-bert-2.0")
>>> model = Wav2Vec2BertForAudioFrameClassification.from_pretrained("facebook/w2v-bert-2.0")

>>> # audio file is decoded on the fly
>>> inputs = feature_extractor(dataset[0]["audio"]["array"], return_tensors="pt", sampling_rate=sampling_rate)
>>> with torch.no_grad():
...     logits = model(**inputs).logits

>>> probabilities = torch.sigmoid(logits[0])
>>> # labels is a one-hot array of shape (num_frames, num_speakers)
>>> labels = (probabilities > 0.5).long()
>>> labels[0].tolist()
...
```

## Wav2Vec2BertForXVector[[transformers.Wav2Vec2BertForXVector]]

#### transformers.Wav2Vec2BertForXVector[[transformers.Wav2Vec2BertForXVector]]

```python
transformers.Wav2Vec2BertForXVector(config: Wav2Vec2BertConfig)
```

[ソース](https://github.com/huggingface/transformers/blob/main/src/transformers/models/wav2vec2_bert/modeling_wav2vec2_bert.py#L1360)

**パラメータ:**

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

話者認証などのタスクに対応するため、XVector特徴抽出ヘッドを上部に備えたWav2Vec2Bertモデル。

このモデルは [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.Wav2Vec2BertForXVector.forward]]

```python
forward(input_features: typing.Optional[torch.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/wav2vec2_bert/modeling_wav2vec2_bert.py#L1403)

**パラメータ:**

input_features (`torch.Tensor`、形状 `(batch_size, sequence_length, feature_dim)`、*任意*) : 入力音声特徴に対応するテンソルです。音声特徴は [Wav2Vec2FeatureExtractor](/docs/transformers/main/ja/model_doc/wav2vec2#transformers.Wav2Vec2FeatureExtractor) を使用して取得できます。詳細は [Wav2Vec2FeatureExtractor.__call__()](/docs/transformers/main/ja/model_doc/wav2vec2#transformers.Wav2Vec2FeatureExtractor.__call__) を参照してください（[Wav2Vec2BertProcessor](/docs/transformers/main/ja/model_doc/wav2vec2-bert#transformers.Wav2Vec2BertProcessor) は音声の処理に [Wav2Vec2FeatureExtractor](/docs/transformers/main/ja/model_doc/wav2vec2#transformers.Wav2Vec2FeatureExtractor) を使用します）。

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

labels (`torch.LongTensor`、形状 `(batch_size,)`、*任意*) : シーケンス分類/回帰の損失を計算するためのラベル。インデックスは `[0, ..., config.num_labels - 1]` の範囲である必要があります。`config.num_labels == 1` の場合は回帰損失（平均二乗誤差）が計算され、`config.num_labels > 1` の場合は分類損失（クロスエントロピー）が計算されます。

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

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

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

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

- **loss** (`torch.FloatTensor`、shape `(1,)`、*optional*、`labels` が指定された場合に返されます) -- 分類損失。
- **logits** (`torch.FloatTensor`、shape `(batch_size, config.xvector_output_dim)`) -- AMSoftmax 適用前の分類用隠れ状態。
- **embeddings** (`torch.FloatTensor`、shape `(batch_size, config.xvector_output_dim)`) -- ベクトル類似度ベースの検索に使用される発話埋め込み。
- **hidden_states** (`tuple(torch.FloatTensor)`、*optional*、`output_hidden_states=True` が渡された場合または `config.output_hidden_states=True` の場合に返されます) -- `torch.FloatTensor` のタプル（埋め込みの出力用 1 つ + 各層の出力用 1 つ）で、形状は `(batch_size, sequence_length, hidden_size)` です。

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

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

例:

```python
>>> from transformers import AutoFeatureExtractor, Wav2Vec2BertForXVector
>>> from datasets import load_dataset
>>> import torch

>>> dataset = load_dataset("hf-internal-testing/librispeech_asr_demo", "clean", split="validation")
>>> dataset = dataset.sort("id")
>>> sampling_rate = dataset.features["audio"].sampling_rate

>>> feature_extractor = AutoFeatureExtractor.from_pretrained("facebook/w2v-bert-2.0")
>>> model = Wav2Vec2BertForXVector.from_pretrained("facebook/w2v-bert-2.0")

>>> # audio file is decoded on the fly
>>> inputs = feature_extractor(
...     [d["array"] for d in dataset[:2]["audio"]], sampling_rate=sampling_rate, return_tensors="pt", padding=True
... )
>>> with torch.no_grad():
...     embeddings = model(**inputs).embeddings

>>> embeddings = torch.nn.functional.normalize(embeddings, dim=-1).cpu()

>>> # the resulting embeddings can be used for cosine similarity-based retrieval
>>> cosine_sim = torch.nn.CosineSimilarity(dim=-1)
>>> similarity = cosine_sim(embeddings[0], embeddings[1])
>>> threshold = 0.7  # the optimal threshold is dataset-dependent
>>> if similarity < threshold:
...     print("Speakers are not the same!")
>>> round(similarity.item(), 2)
...
```

