Transformers documentation

Whisper

You are viewing main version, which requires installation from source. If you'd like regular pip install, checkout the latest stable version (v5.22.2).
Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

このモデルは2022年12月6日にHF papersで公開され、2022年10月5日にHugging Face Transformersに貢献されました。

FlashAttention SDPA

Whisper

Whisperは、68万時間のラベル付き音声データで事前学習されたエンコーダー・デコーダー(シーケンス・ツー・シーケンス)型Transformerです。この規模の事前学習データにより、英語をはじめとする多くの言語の音声タスクにおいて、ゼロショットでの性能を発揮できます。デコーダーにより、Whisperは追加のファインチューニングなしで、エンコーダーが学習した音声表現をテキストなどの有用な出力に変換できます。Whisperはそのままの状態で動作します。

すべてのオリジナルのWhisperチェックポイントは、Whisperコレクション内で確認できます。

Whisperをさまざまな音声タスクに適用する方法の例については、右側のサイドバーにあるWhisperモデルをクリックしてください。

use_kernels=True を from_pretrained() に設定すると、対応するレイヤーが Hub からの最適化されたカーネルに置き換えられます。詳細は カーネルの読み込み を参照してください。

以下の例では、PipelineまたはAutoModelクラスを使用して、音声からテキストへ自動的に書き起こす方法を示しています。

パイプライン
AutoModel
from transformers import pipeline


pipeline = pipeline(
    task="automatic-speech-recognition",
    model="openai/whisper-large-v3-turbo",
    device=0
)
pipeline("https://huggingface.co/datasets/Narsil/asr_dummy/resolve/main/mlk.flac")

注記

  • Whisper は推論にカスタムの generate に依存しているため、以下のドキュメントを確認してください。
  • WhisperProcessorは、音声の準備や、予測されたidをテキストに戻すデコードに使用できます。

WhisperConfig

クラス transformers.WhisperConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0id2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Noneis_encoder_decoder: bool = Truevocab_size: int = 51865num_mel_bins: int = 80encoder_layers: int = 4encoder_attention_heads: int = 6decoder_layers: int = 4decoder_attention_heads: int = 6decoder_ffn_dim: int = 1536encoder_ffn_dim: int = 1536encoder_layerdrop: float | int = 0.0decoder_layerdrop: float | int = 0.0decoder_start_token_id: int = 50257use_cache: bool = Trueactivation_function: str = 'gelu'd_model: int = 384dropout: float | int = 0.0attention_dropout: float | int = 0.0activation_dropout: float | int = 0.0init_std: float = 0.02scale_embedding: bool = Falsemax_source_positions: int = 1500max_target_positions: int = 448pad_token_id: int | None = 50256bos_token_id: int | None = 50256eos_token_id: int | list[int] | None = 50256suppress_tokens: list | None = Nonebegin_suppress_tokens: list[int] | tuple[int, ...] | None = (220, 50256)use_weighted_layer_sum: bool = Falseclassifier_proj_size: int = 256apply_spec_augment: bool = Falsemask_time_prob: float | int = 0.05mask_time_length: int = 10mask_time_min_masks: int = 2mask_feature_prob: float | int = 0.0mask_feature_length: int = 10mask_feature_min_masks: int = 0median_filter_width: int = 7tie_word_embeddings: bool = True )

パラメータ

  • is_encoder_decoder (bool、任意、デフォルトはTrue) — モデルがエンコーダー/デコーダーとして使用されるかどうかを示します。
  • vocab_size (int、任意、デフォルトは 51865) — モデルの語彙サイズです。input_ids で表現できるトークンの種類数を定義します。
  • num_mel_bins (int, 任意、デフォルトは 80) — 入力フレームごとに使用される mel 特徴の数を指定します。AutoFeatureExtractor クラスで使用された値と一致させる必要があります。
  • encoder_layers (int、任意、デフォルトは 4) — Transformer エンコーダーの隠れ層の数です。設定されていない場合、num_layers と同じ値が使用されます。
  • encoder_attention_heads (int、任意、デフォルトは 6) — Transformer エンコーダーの各アテンション層におけるアテンションヘッドの数。
  • decoder_layers (int、任意、デフォルトは 4) — Transformer デコーダーの隠れ層の数です。設定されていない場合、num_layers と同じ値が使用されます。
  • decoder_attention_heads (int、任意、デフォルトは 6) — Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。
  • decoder_ffn_dim (int、任意、デフォルトは 1536) — デコーダー内の「intermediate」(feed-forward と呼ばれることが多い) レイヤーの次元数。
  • encoder_ffn_dim (int、任意、デフォルトは 1536) — エンコーダー内の「中間」層(フィードフォワード層と呼ばれることが多い)の次元数。
  • encoder_layerdrop (Union[float, int]、任意、デフォルトは 0.0) — エンコーダーの LayerDrop 確率です。詳細は [LayerDrop の論文](https://huggingface.co/papers/1909.11556 を参照)をご覧ください。
  • decoder_layerdrop (Union[float, int]、省略可、デフォルト値は 0.0) — デコーダーの LayerDrop 確率です。詳細は [LayerDrop の論文](https://huggingface.co/papers/1909.11556 を参照)をご覧ください。
  • decoder_start_token_id (int、任意、デフォルトは 50257) — エンコーダー・デコーダーモデルが bos とは異なるトークンでデコーディングを開始する場合、そのトークンの ID。
  • use_cache (bool、任意、デフォルトは True) — モデルが最後のキー/バリューの注意を返すかどうか(すべてのモデルで利用されるわけではありません)。config.is_decoder=True の場合、またはモデルがデコーダー専用の生成モデルである場合にのみ関連します。
  • activation_function (str、任意、デフォルトは gelu) — デコーダーで使用する非線形活性化関数(関数または文字列)。例えば、"gelu"、 "relu"、"silu" など。
  • d_model (int、任意、デフォルトは 384) — エンコーダ層とプーラ層のサイズ。
  • dropout (Union[float, int]、省略可、デフォルト値は0.0) — すべての dropout レイヤーの比率です。
  • attention_dropout (Union[float, int]、任意、デフォルトは 0.0) — アテンション確率のドロップアウト率です。
  • activation_dropout (Union[float, int]、任意、デフォルトは 0.0) — 全結合層内の活性化に対する dropout 率です。
  • init_std (float、任意、デフォルトは 0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。
  • scale_embedding (bool、任意、デフォルトは False) — 埋め込みを sqrt(d_model) で割ることでスケーリングするかどうか。
  • max_source_positions (int、任意、デフォルトは 1500) — このモデルが使用される可能性がある log-mel フィルターバンク特徴量の最大シーケンス長です。
  • max_target_positions (int、任意、デフォルト値は 448) — このモデルが使用される可能性のある最大シーケンス長です。念のため、大きめの値(例: 512、1024、2048 など)に設定するのが一般的です。
  • pad_token_id (int、任意、デフォルトは 50256) — 語彙内でパディングに使用されるトークン ID。
  • bos_token_id (int、任意、デフォルトは 50256) — 語彙におけるストリーム開始に使用されるトークン ID。
  • eos_token_id (Union[int, list[int]]、任意、デフォルトは 50256) — 語彙内でストリーム終了に使用されるトークン ID。
  • suppress_tokens (list[int]、省略可) — generate 関数内の logit processor で使用される、非音声トークンのリストです。NON_SPEECH_TOKENS と NON_SPEECH_TOKENS_MULTI は、それぞれ english-only モデルと multilingual モデルに対応しています。
  • begin_suppress_tokens (list[int]、任意、デフォルトは [220,50256]) — サンプリング処理の開始時に抑制されるトークンのリストです。" " のトークン(blank_token_id)と eos_token_id で初期化されます。
  • use_weighted_layer_sum (bool、任意、デフォルトはFalse) — 学習済み重みを用いた層出力の加重平均を使用するかどうか。WhisperForAudioClassificationのインスタンスを使用する場合にのみ関連します。
  • classifier_proj_size (int、任意、デフォルトは 256) — 分類のためのトークン平均プーリング前の射影の次元数。WhisperForAudioClassification のインスタンスを使用する場合にのみ関連します。
  • apply_spec_augment (bool、任意、デフォルトはFalse) — 特徴量エンコーダーの出力にSpecAugmentデータ拡張を適用するかどうか。参考として、SpecAugment: A Simple Data Augmentation Method for Automatic Speech Recognitionを参照してください。
  • mask_time_prob (float、省略可、デフォルト値は 0.05) — 時間軸に沿ったすべての特徴量ベクトルの中で、マスクされる割合(0 から 1 の間)。マスク処理では、mask_time_prob*len(time_axis)/mask_time_length 個の独立したマスクが軸上に生成されます。マスクされるベクトル範囲の開始点として各特徴量ベクトルが選択される確率から考えると、mask_time_prob は prob_vector_start*mask_time_length であるべきです。重複により、実際にマスクされるベクトルの割合が低下する可能性があります。これは apply_spec_augment == True の場合のみ関連します。
  • mask_time_length (int、任意、デフォルトは 10) — 時間軸に沿ったベクトル範囲の長さ。
  • mask_time_min_masks (int, 任意、デフォルトは 2)、— 時間軸に沿って生成される、長さ mask_feature_length のマスクの最小数です。各タイムステップについて、mask_feature_prob を無視して適用されます。”mask_time_prob*len(time_axis)/mask_time_length < mask_time_min_masks” の場合のみ関連します。
  • mask_feature_prob (float、任意、デフォルト値は 0.0) — 特徴軸に沿ったすべての特徴ベクトルの中で、マスクされる割合(0 から 1 の間)。 このマスク処理では、軸に対して mask_feature_prob*len(feature_axis)/mask_time_length 個の独立したマスクが生成されます。 マスクされるベクトル範囲の開始点として各特徴ベクトルが選択される確率から考えると、mask_feature_prob は prob_vector_start*mask_feature_length であるべきです。 重複により、実際にマスクされるベクトルの割合が減少する可能性があります。これは apply_spec_augment is True の場合のみ関連します。
  • mask_feature_prob (Union[float, int]、任意、デフォルト値は 0.0) — 特徴軸に沿った全特徴ベクトルの中で、マスクされる割合(0 から 1 の間)。 マスク処理では、軸に対して mask_feature_prob*len(feature_axis)/mask_time_length 個の独立したマスクが生成されます。 マスクされるベクトル範囲の開始点として各特徴ベクトルが選択される確率から考えると、mask_feature_prob は prob_vector_start*mask_feature_length であるべきです。 重複により、実際にマスクされるベクトルの割合が減少する可能性があります。これは apply_spec_augment が True の場合にのみ関連します。
  • mask_feature_length (int、任意、デフォルト値は 10)— 特徴量軸に沿ったベクトル範囲の長さ。
  • mask_feature_min_masks (int, 任意、デフォルト値は 0) — mask_feature_prob に関係なく、各タイムステップにおいて、フィーチャー軸に沿って生成される長さ mask_feature_length のマスクの最小数を指定します。mask_feature_prob*len(feature_axis)/mask_feature_length < mask_feature_min_masks の場合のみ関連します。
  • median_filter_width (int, 任意、デフォルトは 7) — トークンタイムスタンプを計算する際に、クロスアテンションの出力を平滑化するために使用される中央値フィルタの幅です。奇数である必要があります。
  • tie_word_embeddings (bool、任意、デフォルトは True) — モデルの tied_weights_keys マッピングに従って重み埋め込みを共有するかどうかを指定します。

これはWhisperModelの設定を保存するための設定クラスです。指定された引数に基づいてWhisperモデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、openai/whisper-tinyと類似した設定が得られます。

設定オブジェクトはPreTrainedConfigを継承し、モデルの出力を制御するために使用できます。詳細については、PreTrainedConfigのドキュメントを参照してください。

例:

>>> from transformers import WhisperConfig, WhisperModel

>>> # Initializing a Whisper tiny style configuration
>>> configuration = WhisperConfig()

>>> # Initializing a model (with random weights) from the tiny style configuration
>>> model = WhisperModel(configuration)

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

WhisperTokenizer

class transformers.WhisperTokenizer

< >

( vocab: str | dict[str, int] | None = Nonemerges = Nonenormalizer_file = Noneunk_token = '<|endoftext|>'bos_token = '<|endoftext|>'eos_token = '<|endoftext|>'add_prefix_space = Falselanguage = Nonetask = Nonepredict_timestamps = False**kwargs )

パラメータ

  • vocab_file (str, 任意) — 語彙ファイルへのパス。
  • merges_file (str, 省略可) — merges ファイルへのパス。
  • normalizer_file (str, 任意) — normalizer_file ファイルへのパス。
  • tokenizer_file (str, 任意) — トークナイザを読み込むために必要な情報がすべて含まれている、tokenizers ファイル(通常は .json 拡張子)へのパス。
  • unk_token (str、任意、デフォルトは "<|endoftext|>") — 不明トークンです。語彙に存在しないトークンは ID に変換できず、代わりにこのトークンが設定されます。
  • bos_token (str、任意、デフォルトは "<|endoftext|>") — シーケンスの開始トークンです。生成時に decoder_start_token_id が使用され、最初のトークンを "<|startoftranscript|>" に設定します。
  • eos_token (str, 任意、デフォルトは "<|endoftext|>") — シーケンスの終了トークンです。
  • add_prefix_space (bool、任意、デフォルトはFalse) — 入力に先頭スペースを追加するかどうか。これにより、先頭の単語を他の単語と同様に扱うことができます。(Whisper のトークナイザーは、先行するスペースによって単語の開始を検出します)。
  • language (str、任意) — 転写テキストの言語です。多言語音声認識および音声翻訳タスクでは、対応する言語 ID トークンがシーケンスの先頭に追加されます。例えば、スペイン語の場合は、シーケンスの先頭に"<|es|>"が追加されます。この引数は、多言語ファインチューニングでのみ使用してください。
  • task (str, 省略可) — シーケンスの先頭に追加するタスク識別子(ある場合)。これは多言語ファインチューニングで使用するもので、音声認識には"transcribe"、音声翻訳には"translate"を指定します。
  • predict_timestamps (bool、省略可、デフォルトは False) — シーケンスの先頭に <|notimestamps|> トークンを付与するかどうかを指定します。

HuggingFaceのtokenizersライブラリをバックエンドとして、「fast」Whisperトークナイザーを構築します。

このトークナイザーは、主要なメソッドの大部分を含む PreTrainedTokenizerFast を継承しています。これらのメソッドに関する詳細については、このスーパークラスを参照してください。

set_prefix_tokens

< >

( language: str | None = Nonetask: str | None = Nonepredict_timestamps: bool | None = None )

パラメータ

  • language (str、任意、デフォルトは None) — 文字起こしテキストの言語です。
  • task (str、任意、デフォルトは None) — シーケンスの先頭に追加するタスク識別子(ある場合)。
  • predict_timestamps (bool、省略可、デフォルトはNone) — シーケンスの先頭に<|notimestamps|>トークンを省略するかどうかを指定します。

ラベルシーケンスの先頭に追加されるプレフィックストークンをオーバーライドします。このメソッドは単独で使用することもでき

ファインチューニング時に必要に応じてプレフィックストークンを更新します。例:

>>> # instantiate the tokenizer and set the prefix token to Spanish
>>> tokenizer = WhisperTokenizerFast.from_pretrained("openai/whisper-tiny", language="spanish")
>>> # now switch the prefix token from Spanish to French
>>> tokenizer.set_prefix_tokens(language="french")

get_special_tokens_mask

< >

( token_ids_0: listtoken_ids_1: list[int] | None = Nonealready_has_special_tokens: bool = False ) → list[int]

パラメータ

  • token_ids_0 (list[int]) — ID のリストです。
  • token_ids_1 (list[int]、省略可) — シーケンスペア用の第2のIDリスト(任意)。
  • already_has_special_tokens (bool、任意、デフォルトは False) — トークンリストが、モデル用の特殊トークンで既にフォーマットされているかどうかを示します。

戻り値

list[int]

範囲 [0, 1] の整数のリスト: 特殊トークンは 1、シーケンストークンは 0。

特殊トークンが追加されていないトークンリストからシーケンスIDを取得します。このメソッドは、トークナイザーのprepare_for_modelメソッドを使用して特殊トークンを追加する際に呼び出されます。

save_vocabulary

< >

( save_directory: strfilename_prefix: str | None = None )

batch_decode

< >

( sequences: list[int] | list[list[int]] | np.ndarray | torch.Tensorskip_special_tokens: bool = Falseclean_up_tokenization_spaces: bool | None = None**kwargs ) → list[str]

パラメータ

  • sequences (Union[list[int], list[list[int]], np.ndarray, torch.Tensor]) — トークン化された入力 ID のリスト。__call__ メソッドを使用して取得できます。
  • skip_special_tokens (bool、省略可、デフォルトはFalse) — デコーディング時に特殊トークンを除去するかどうかを指定します。
  • clean_up_tokenization_spaces (bool、任意) — トークン化のスペースを整理するかどうか。None の場合、self.clean_up_tokenization_spaces がデフォルトとして使用されます。
  • kwargs (追加のキーワード引数、任意) — 基盤となるモデル固有のデコードメソッドに渡されます。

戻り値

list[str]

デコードされた文のリスト。

decode を呼び出して、トークン ID のリストのリストを文字列のリストに変換します。

このメソッドは後方互換性のために提供されています。decodeメソッドは現在、バッチ入力をネイティブで処理するため、batch_decodeの代わりにdecodeを直接使用できます。

decode

< >

( token_idsskip_special_tokens: bool = Falseclean_up_tokenization_spaces: bool | None = Noneoutput_offsets: bool = Falsetime_precision: float = 0.02decode_with_timestamps: bool = Falsenormalize: bool = Falsebasic_normalize: bool = Falseremove_diacritics: bool = False**kwargs ) → str

パラメータ

  • token_ids (Union[int, list[int], np.ndarray, torch.Tensor]) — トークン化された入力 ID のリスト。__call__ メソッドを使用して取得できます。
  • skip_special_tokens (bool、任意、デフォルトは False) — デコーディング時に特殊トークンを除去するかどうか。存在する場合、直前のトークン(プロンプト以前)も除去されます。
  • clean_up_tokenization_spaces (bool、省略可) — トークン化のスペースを整理するかどうか。None の場合、self.clean_up_tokenization_spaces(tokenizer_config で利用可能)がデフォルトとして使用されます。
  • output_offsets (bool、任意、デフォルトはFalse) — トークンのオフセットを出力するかどうか。モデルがタイムスタンプを予測した場合にのみ設定すべきです。デコード対象の先行トークン(プロンプト以前)が存在する場合、タイムスタンプトークンを含む場合のみ、デコードされたテキストに表示されます。
  • time_precision (float、任意、デフォルト値は 0.02) — トークンから時間に変換するための時間比率です。
  • decode_with_timestamps (bool、任意、デフォルトは False) — 生テキストにタイムスタンプを含めてデコードするかどうかを指定します。
  • normalize (bool、省略可能、デフォルトは False) — デコードされたテキストに英語テキスト正規化器を適用するかどうか。対象テキストが英語の場合にのみ適用されます。それ以外の場合は、基本的なテキスト正規化器を適用する必要があります。
  • basic_normalize (bool、省略可、デフォルトは False) — デコードされたテキストに Basic テキスト正規化を適用するかどうか。多言語のターゲットテキストに適用されます。
  • remove_diacritics (bool、任意、デフォルトは False) — Basic テキスト正規化を適用する際に、発音記号(アクセント記号)を除去するかどうかを指定します。発音記号の除去はデコードされたテキストの情報破壊につながる可能性があるため、注意して使用してください。
  • kwargs (追加のキーワード引数、任意) — 基盤となるモデル固有のデコードメソッドに渡されます。

戻り値

str

デコードされた文。

トークナイザーと語彙を使用して、文字列内のIDのシーケンスを変換します。特殊トークンの削除や、トークン化スペースのクリーンアップなどのオプションが利用できます。

self.convert_tokens_to_string(self.convert_ids_to_tokens(token_ids)) を実行するのと似ています。

basic_normalize

< >

( textremove_diacritics = False )

BasicTextNormalizer クラスを使用して、指定された文字列を正規化します。このクラスは、多言語テキストに対して一般的な変換を実行します。

normalize

< >

( text )

EnglishTextNormalizer クラスを使用して、指定された文字列を正規化します。このクラスは、英語テキストに対して一般的な変換を実行します。

WhisperFeatureExtractor

クラス transformers.WhisperFeatureExtractor

< >

( feature_size = 80sampling_rate = 16000hop_length = 160chunk_length = 30n_fft = 400padding_value = 0.0dither = 0.0return_attention_mask = False**kwargs )

パラメータ

  • feature_size (int、任意、デフォルトは 80) — 抽出された特徴量の次元数。
  • sampling_rate (int、任意、デフォルトは 16000) — オーディオファイルをデジタル化するためのサンプリングレート(ヘルツ (Hz) 表記)。
  • hop_length (int, 任意、デフォルトは 160) — Mel 周波数係数を取得するために使用される STFT の、重複ウィンドウの長さ。
  • chunk_length (int、任意、デフォルトは 30) — sampling_rate サンプルのチャンクとして使用される最大数。長いまたは短い音声シーケンスをトリムおよびパディングするために使用されます。
  • n_fft (int、任意、デフォルトは 400) — フーリエ変換のサイズ。
  • padding_value (float、任意、デフォルトは 0.0) — オーディオをパディングするために使用される値です。無音に対応する値である必要があります。
  • dither (float、任意、デフォルトは 0.0) — ディザリングを追加します。つまり、各フレームに小さなガウスノイズを加えます。 例えば、0.0001 を指定すると、平均 0.0、標準偏差 0.0001 の正規分布によるディザリングが加えられます(raw_speech の範囲が [-1,+1] であると仮定)。 値が 0.0 の場合は、ディザリングを行いません。 ディザリングは spectrogram(mel_floor=...) と同様の効果を持ちます。 信号に VAD カットオフが存在する場合、ハードゼロ区間を持つ信号の大きな log_mel_fbank 値を低減します。

Whisper の特徴量抽出器を構築します。

このフィーチャーエクストラクターは、主要なメソッドの大部分を含む SequenceFeatureExtractor を継承しています。これらのメソッドに関する詳細については、このスーパークラスを参照してください。

このクラスは、Short Time Fourier Transformのカスタムなnumpy実装を使用して、生の音声からメルフィルタバンク特徴量を抽出します。この実装は、pytorchのtorch.stftと同等の結果を返すようになっています。

__call__

< >

( raw_speech: numpy.ndarray | list[float] | list[numpy.ndarray] | list[list[float]]truncation: bool = Truepad_to_multiple_of: int | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonereturn_attention_mask: bool | None = Nonepadding: str | None = 'max_length'max_length: int | None = Nonesampling_rate: int | None = Nonedo_normalize: bool | None = Nonedevice: str | None = 'cpu'**kwargs )

パラメータ

  • raw_speech (np.ndarray、list[float]、list[np.ndarray]、list[list[float]]) — パディング対象のシーケンスまたはシーケンスのバッチです。各シーケンスは、NumPy 配列、浮動小数点数の値のリスト、NumPy 配列のリスト、または浮動小数点数の値のリストのリストであることができます。モノラル音声(ステレオではなく、タイムステップごとに単一の浮動小数点数)である必要があります。
  • truncation (bool、任意、デフォルトは True) — 入力シーケンスが max_length を超える場合、max_length まで切り詰めるための切り詰め処理を有効にします。
  • pad_to_multiple_of (int, 省略可能, デフォルトは None) — 設定すると、シーケンスを指定された値の倍数にパディングします。

    これは、計算能力が>= 7.5(Volta)のNVIDIAハードウェアでTensor Coresの利用を有効にするために、また、シーケンス長が128の倍数であることで恩恵を受けるTPUにおいて、特に有用です。

  • return_tensors (str または TensorType, 省略可) — 設定すると、Python の整数のリストではなくテンソルを返します。指定可能な値は以下の通りです:
    • 'pt': PyTorchのtorch.Tensorオブジェクトを返します。
    • 'np': Numpy の np.ndarray オブジェクトを返します。
  • return_attention_mask (bool, 省略可能) — attention mask を返すかどうか。デフォルトのままにすると、特定の feature_extractor のデフォルトに従って attention mask が返されます。

    アテンションマスクとは?

    Whisperモデルでは、バッチ推論を行う際は、微妙なバグを避けるために、attention_maskを常に渡す必要があります。

  • padding (str または PaddingStrategy, 省略可, デフォルトは 'max_length') — パディングを有効にし、制御します。以下の値を受け取ります:'longest': バッチ内の最長のシーケンスの長さにパディングします(単一のシーケンスのみが提供された場合は、パディングを行いません)。'max_length'(デフォルト): 引数 max_length で指定された最大長、またはその引数が提供されていない場合はモデルが受け入れられる最大入力長までパディングします。'do_not_pad': パディングを行いません(つまり、長さが異なるシーケンスのバッチを出力できます)。
    • 'longest': バッチ内の最長のシーケンスの長さにパディングします(単一のシーケンスのみが提供された場合は、パディングを行いません)。
    • 'max_length'(デフォルト): 引数 max_length で指定された最大長、またはその引数が指定されていない場合はモデルが受け入れることのできる最大入力長までパディングします。
    • 'do_not_pad': パディングなし(つまり、長さが異なるシーケンスのバッチを出力できます)。
  • max_length (int, 省略可能) — truncation/padding パラメータのいずれかによって使用される最大長を制御します。

    未設定のまま、またはNoneに設定されている場合、truncation/padding パラメータのいずれかが最大長を必要とする場合、事前に定義されたモデルの最大長が使用されます。モデルに特定の最大入力長がない場合(XLNet など)、最大長への truncation/padding は無効になります。

  • sampling_rate (int, 任意) — raw_speech 入力がサンプリングされたレートです。サイレントエラーを防ぎ、自動音声認識パイプラインを有効にするため、forward 呼び出し時に sampling_rate を渡すことを強く推奨します。
  • do_normalize (bool、任意、デフォルトはFalse) — 入力を平均0・分散1に正規化するかどうかを指定します。正規化を行うことで、モデルの性能を大幅に向上させることができます。
  • device (str、任意、デフォルトは 'cpu') — _torch_extract_fbank_features メソッドにおいて、音声信号の log-mel スペクトログラムの計算に使用するデバイスを指定します。(例: “cpu”、“cuda”)
  • **kwargs — call()ではWhisperFeatureExtractorによってサポートされておらず、無視されます。

PyTorch が利用可能な場合は PyTorch を、利用できない場合はより低速な NumPy ベースの実装を使用して STFT を計算する、1 つ以上のシーケンスを特徴量化してモデル用に準備するための主要なメソッドです。

WhisperProcessor

class transformers.WhisperProcessor

< >

( feature_extractortokenizer )

パラメータ

  • feature_extractor (WhisperFeatureExtractor) — フィーチャーエクストラクターは必須の入力です。
  • tokenizer (WhisperTokenizer) — トークナイザーは必須の入力です。

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

WhisperProcessor は、WhisperFeatureExtractor と WhisperTokenizer のすべての機能を提供します。詳細については、~WhisperFeatureExtractor および ~WhisperTokenizer を参照してください。

__call__

< >

( *args**kwargs )

パラメータ

  • return_tensors (str または TensorType, 省略可) — 設定すると、特定のフレームワークのテンソルを返します。使用可能な値は以下の通りです:
    • 'pt': PyTorchのtorch.Tensorオブジェクトを返します。
    • 'np': NumPyのnp.ndarrayオブジェクトを返します。

from_pretrained

< >

( pretrained_model_name_or_path: str | os.PathLikecache_dir: str | os.PathLike | None = Noneforce_download: bool = Falselocal_files_only: bool = Falsetoken: str | bool | None = Nonerevision: str = 'main'**kwargs )

パラメータ

  • pretrained_model_name_or_path (str または os.PathLike) — 次のいずれかです:
    • 文字列、huggingface.co上のモデルリポジトリにホストされている事前学習済みfeature_extractorのmodel id
    • save_pretrained() メソッドを使用して保存されたフィーチャーエクストラクターファイルを含むディレクトリへのパス。例: ./my_model_directory/
    • 保存されたフィーチャーエクストラクターの./my_model_directory/preprocessor_config.jsonのようなファイルへのパス
  • **kwargs — from_pretrained() と ~tokenization_utils_base.PreTrainedTokenizer.from_pretrained の両方に渡される追加のキーワード引数。

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

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

save_pretrained

< >

( save_directorypush_to_hub: bool = False**kwargs )

パラメータ

  • save_directory (str または os.PathLike) — フィーチャーエクストラクターの JSON ファイルとトークナイザーのファイルを保存するディレクトリです(存在しない場合は作成されます)。
  • push_to_hub (bool、省略可、デフォルトは False) — モデルを保存した後、Hugging Face モデルハブにプッシュするかどうかを指定します。プッシュ先のリポジトリは repo_id で指定できます(指定しない場合、save_directory の名前があなたのネームスペース内でデフォルトとして使用されます)。
  • kwargs (dict[str, Any]、省略可) — push_to_hub() メソッドに渡される追加のキーワード引数。

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

このクラスメソッドは、save_pretrained()とsave_pretrained()を呼び出すだけです。詳細については、上記のメソッドのドキュメント文字列を参照してください。

batch_decode

< >

( *args**kwargs )

このメソッドは、すべての引数を PreTrainedTokenizer の batch_decode() に転送します。詳細については、このメソッドのドキュメント文字列を参照してください。

decode

< >

( *args**kwargs )

このメソッドは、すべての引数を PreTrainedTokenizer の decode() に転送します。詳細については、このメソッドのドキュメント文字列を参照してください。

WhisperModel

class transformers.WhisperModel

< >

( config: WhisperConfig )

パラメータ

  • config (WhisperConfig) — モデルのパラメータをすべて含むモデル設定クラス。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。

特定のヘッドを付加せずに、生のhidden-statesを出力する素のWhisper Model。

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

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

forward

< >

( input_features: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: tuple[tuple[torch.Tensor]] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonedecoder_inputs_embeds: tuple[torch.Tensor] | None = Nonedecoder_position_ids: tuple[torch.LongTensor] | None = Noneuse_cache: bool | None = None**kwargs ) → Seq2SeqModelOutput or tuple(torch.Tensor)

パラメータ

  • input_features (torch.Tensor、形状 (batch_size, sequence_length, feature_dim)、任意) — 入力音声特徴に対応するテンソルです。音声特徴は WhisperFeatureExtractor を使用して取得できます。詳細は WhisperFeatureExtractor.call() を参照してください(WhisperProcessor は音声の処理に WhisperFeatureExtractor を使用します)。
  • attention_mask (torch.LongTensor の形状 (batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。 [0, 1]:
    • マスクされていないトークンに対して1
    • マスクされたトークンに対しては 0 です。

    アテンションマスクとは?

  • decoder_input_ids (torch.LongTensor の形状 (batch_size, target_sequence_length), 、省略可) — 語彙におけるデコーダー入力シーケンスのトークンインデックスです。

    インデックスはWhisperTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。

    デコーダー入力IDとは何ですか?

    Whisper は decoder_input_ids の生成を開始するトークンとして decoder_start_token_id を使用します。past_key_values を使用する場合、decoder_input_ids の最後の要素のみを入力すればよい場合があります(past_key_values を参照)。

  • decoder_attention_mask (torch.LongTensor の形状 (batch_size, target_sequence_length), 、任意) — デフォルトの動作: decoder_input_ids. デフォルトでは、causal mask も使用されます。パディングの動作を変更する場合は、modeling_whisper._prepare_decoder_attention_mask を読み、必要に応じて修正してください。デフォルトの戦略の詳細については、BART 論文の図 1 を参照してください。

    パディングの動作を変更したい場合は、modeling_whisper._prepare_decoder_attention_mask を読み、必要に応じて修正してください。デフォルトの戦略に関する詳細は、BART の論文の図 1 を参照してください。

  • encoder_outputs (tuple[tuple[torch.Tensor]]、任意) — (last_hidden_state、任意: hidden_states、任意: attentions) のタプル last_hidden_state は形状 (batch_size, sequence_length, hidden_size)、任意) で、エンコーダーの最終層の出力における隠れ状態のシーケンスです。デコーダーのクロスアテンションで使用されます。
  • past_key_values (~cache_utils.Cache, 省略可) — 逐次デコードを高速化するために使用できる、事前計算された隠れ状態(自己アテンションブロックおよびクロスアテンションブロックのキーとバリュー)。通常、これはデコードの以前の段階でモデルが返した past_key_values であり、 use_cache=True または config.use_cache=True.

    入力として許可されるのは Cache インスタンスのみです。kv cache ガイドを参照してください。 past_key_values が渡されない場合、デフォルトで DynamicCache が初期化されます。

    モデルは、入力として与えられたのと同じキャッシュ形式を出力します。

    past_key_values を使用する場合、すべての input_ids(形状 (batch_size, sequence_length))ではなく、このモデルに過去のキー・バリュー状態が与えられていない未処理の input_ids(形状 (batch_size, unprocessed_length))のみを入力することになります。

  • decoder_inputs_embeds (tuple[torch.Tensor] 形状 (batch_size, target_sequence_length, hidden_size), 任意) — 任意で、 decoder_input_ids の代わりに、埋め込み表現を直接渡すこともできます。 past_key_values が使用されている場合、最後の decoder_inputs_embeds のみを入力すればよい場合があります( past_key_values). は、 decoder_input_ids のインデックスを関連するベクトルに変換する方法を、モデル内部の埋め込み検索行列よりも細かく制御したい場合に便利です。

    decoder_input_ids と decoder_inputs_embeds の両方が設定されていない場合、decoder_inputs_embeds は inputs_embeds の値を採ります。

  • decoder_position_ids (torch.LongTensor 形状 (batch_size, sequence_length), 、任意) — 。位置埋め込みにおける各入力シーケンスのトークンの位置のインデックス。範囲 [0, config.n_positions - 1].

    ポジションIDとは?

  • use_cache (bool、任意) — True に設定すると、past_key_values のキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_values を参照)。

戻り値

Seq2SeqModelOutput または tuple(torch.Tensor)

torch.Tensor のタプル、または Seq2SeqModelOutput(return_dict=False が渡された場合、または config.return_dict=False の場合)。設定(WhisperConfig)と入力に応じて、さまざまな要素で構成されます。

WhisperModelのforwardメソッドは、__call__特殊メソッドをオーバーライドします。

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

  • last_hidden_state (torch.Tensor、形状 (batch_size, sequence_length, hidden_size)) — モデルのデコーダーの最終層の出力における、隠れ状態のシーケンスです。

    past_key_valuesが使用されている場合、出力されるのは、形状(batch_size, 1, hidden_size)のシーケンスの最後の隠れ状態のみです。

  • past_key_values (EncoderDecoderCache、任意、use_cache=True が渡された場合または config.use_cache=True の場合に返されます) — EncoderDecoderCache のインスタンスです。詳細については、kv cache ガイドを参照してください。

    自己注意ブロックおよび相互注意ブロック内のキーとバリューの事前計算済み隠れ状態(hidden-states)を保持しており、シーケンシャルデコーディングを高速化するために使用できます(past_key_values 入力参照)。

  • decoder_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、および任意の初期埋め込み出力。

  • decoder_attentions (tuple(torch.Tensor)、任意、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます) — torch.Tensor のタプル(各レイヤーごとに1つ)、形状は (batch_size, num_heads, sequence_length, sequence_length)。

    自己アテンションヘッドにおける加重平均を計算するために使用される、アテンションのsoftmax後のデコーダーのアテンション重み。

  • cross_attentions (tuple(torch.Tensor)、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます)— torch.Tensor のタプル(各レイヤーごとに1つ)、形状は (batch_size, num_heads, sequence_length, sequence_length) です。

    クロスアテンション層のアテンション重みは、アテンションのsoftmax適用後に計算され、クロスアテンションヘッドにおける加重平均の計算に使用されます。

  • encoder_last_hidden_state (torch.Tensor、形状 (batch_size, sequence_length, hidden_size)、任意) — モデルのエンコーダーの最終層の出力における隠れ状態のシーケンス。

  • encoder_hidden_states (tuple(torch.Tensor)、optional、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返されます) — torch.Tensor のタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size) です。

    各層の出力におけるエンコーダーのHidden-states、および任意の初期埋め込み出力。

  • encoder_attentions (tuple(torch.Tensor)、任意、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます) — torch.Tensor のタプル(各レイヤーごとに1つ)、形状は (batch_size, num_heads, sequence_length, sequence_length)。

    アテンションのsoftmaxを適用した後のエンコーダーのアテンション重み。自己アテンションヘッドにおける加重平均の計算に使用されます。

例:

>>> import torch
>>> from transformers import AutoFeatureExtractor, WhisperModel
>>> from datasets import load_dataset

>>> model = WhisperModel.from_pretrained("openai/whisper-base")
>>> feature_extractor = AutoFeatureExtractor.from_pretrained("openai/whisper-base")
>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> inputs = feature_extractor(ds[0]["audio"]["array"], return_tensors="pt")
>>> input_features = inputs.input_features
>>> decoder_input_ids = torch.tensor([[1, 1]]) * model.config.decoder_start_token_id
>>> last_hidden_state = model(input_features, decoder_input_ids=decoder_input_ids).last_hidden_state
>>> list(last_hidden_state.shape)
[1, 2, 512]

_mask_input_features

< >

( input_features: Tensorattention_mask: typing.Optional[torch.LongTensor] = None )

SpecAugment に従って、時間軸および/または特徴量軸に沿った特徴をマスクします。

WhisperForConditionalGeneration

class transformers.WhisperForConditionalGeneration

< >

( config: WhisperConfig )

パラメータ

  • config (WhisperConfig) — モデルのパラメータをすべて含むモデル設定クラス。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。

言語モデリングヘッドを備えたWhisperモデル。自動音声認識に使用できます。

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

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

forward

< >

( input_features: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.LongTensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: tuple[tuple[torch.Tensor]] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonedecoder_inputs_embeds: tuple[torch.Tensor] | None = Nonedecoder_position_ids: tuple[torch.LongTensor] | None = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = None**kwargs ) → Seq2SeqLMOutput or tuple(torch.Tensor)

パラメータ

  • input_features (torch.Tensor、形状 (batch_size, sequence_length, feature_dim)、任意) — 入力音声特徴に対応するテンソルです。音声特徴は WhisperFeatureExtractor を使用して取得できます。詳細は WhisperFeatureExtractor.call() を参照してください(WhisperProcessor は音声の処理に WhisperFeatureExtractor を使用します)。
  • attention_mask (torch.LongTensor の形状 (batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。 [0, 1]:
    • マスクされていないトークンに対して1
    • マスクされたトークンに対しては 0 です。

    アテンションマスクとは?

  • decoder_input_ids (torch.LongTensor の形状 (batch_size, target_sequence_length), 、省略可) — 語彙におけるデコーダー入力シーケンスのトークンインデックスです。

    インデックスはWhisperTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。

    デコーダー入力IDとは何ですか?

    Whisper は decoder_input_ids の生成を開始するトークンとして decoder_start_token_id を使用します。past_key_values を使用する場合、decoder_input_ids の最後の要素のみを入力すればよい場合があります(past_key_values を参照)。

  • decoder_attention_mask (torch.LongTensor の形状 (batch_size, target_sequence_length), 、任意) — デフォルトの動作: decoder_input_ids. デフォルトでは、causal mask も使用されます。パディングの動作を変更する場合は、modeling_whisper._prepare_decoder_attention_mask を読み、必要に応じて修正してください。デフォルトの戦略の詳細については、BART 論文の図 1 を参照してください。

    パディングの動作を変更したい場合は、modeling_whisper._prepare_decoder_attention_mask を読み、必要に応じて修正してください。デフォルトの戦略に関する詳細は、BART の論文の図 1 を参照してください。

  • encoder_outputs (tuple[tuple[torch.Tensor]]、任意) — (last_hidden_state、任意: hidden_states、任意: attentions) のタプル last_hidden_state は形状 (batch_size, sequence_length, hidden_size)、任意) で、エンコーダーの最終層の出力における隠れ状態のシーケンスです。デコーダーのクロスアテンションで使用されます。
  • past_key_values (~cache_utils.Cache, 省略可) — 逐次デコードを高速化するために使用できる、事前計算された隠れ状態(自己アテンションブロックおよびクロスアテンションブロックのキーとバリュー)。通常、これはデコードの以前の段階でモデルが返した past_key_values であり、 use_cache=True または config.use_cache=True.

    入力として許可されるのは Cache インスタンスのみです。kv cache ガイドを参照してください。 past_key_values が渡されない場合、デフォルトで DynamicCache が初期化されます。

    モデルは、入力として与えられたのと同じキャッシュ形式を出力します。

    past_key_values を使用する場合、すべての input_ids(形状 (batch_size, sequence_length))ではなく、このモデルに過去のキー・バリュー状態が与えられていない未処理の input_ids(形状 (batch_size, unprocessed_length))のみを入力することになります。

  • decoder_inputs_embeds (tuple[torch.Tensor] 形状 (batch_size, target_sequence_length, hidden_size), 任意) — 任意で、 decoder_input_ids の代わりに、埋め込み表現を直接渡すこともできます。 past_key_values が使用されている場合、最後の decoder_inputs_embeds のみを入力すればよい場合があります( past_key_values). は、 decoder_input_ids のインデックスを関連するベクトルに変換する方法を、モデル内部の埋め込み検索行列よりも細かく制御したい場合に便利です。

    decoder_input_ids と decoder_inputs_embeds の両方が設定されていない場合、decoder_inputs_embeds は inputs_embeds の値を採ります。

  • decoder_position_ids (torch.LongTensor 形状 (batch_size, sequence_length), 、任意) — 。位置埋め込みにおける各入力シーケンスのトークンの位置のインデックス。範囲 [0, config.n_positions - 1].

    ポジションIDとは?

  • labels (torch.LongTensor、shape (batch_size, sequence_length)、任意) — 言語モデリング損失の計算に使用するラベル。インデックスは [0, ..., config.vocab_size] の範囲内であるか、-100 である必要があります(input_ids の docstring を参照)。インデックスが -100 に設定されたトークンは無視(マスク)され、損失は [0, ..., config.vocab_size] の範囲内のラベルを持つトークンに対してのみ計算されます。sequence_length は config.max_target_positions 以下である必要があります。
  • use_cache (bool、任意) — True に設定すると、past_key_values のキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_values を参照)。

戻り値

Seq2SeqLMOutput または tuple(torch.Tensor)

torch.Tensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)または Seq2SeqLMOutput。設定(WhisperConfig)と入力に応じて、さまざまな要素で構成されます。

WhisperForConditionalGenerationのforwardメソッドは、__call__特殊メソッドをオーバーライドします。

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

  • loss (torch.Tensor、形状 (1,)、任意、labels が指定された場合に返されます) — 言語モデリングの損失。

  • logits (torch.Tensor、形状 (batch_size, sequence_length, config.vocab_size)) — 言語モデリングヘッドの予測スコア(SoftMax 適用前の各語彙トークンのスコア)。

  • past_key_values (EncoderDecoderCache、任意、use_cache=True が渡された場合または config.use_cache=True の場合に返されます) — EncoderDecoderCache のインスタンスです。詳細については、kv cache ガイドを参照してください。

    自己注意ブロックおよび相互注意ブロック内のキーとバリューの事前計算済み隠れ状態(hidden-states)を保持しており、シーケンシャルデコーディングを高速化するために使用できます(past_key_values 入力参照)。

  • decoder_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) です。

    各層の出力および初期埋め込み出力における、デコーダーの隠れ状態。

  • decoder_attentions (tuple(torch.Tensor)、任意、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます) — torch.Tensor のタプル(各レイヤーごとに1つ)、形状は (batch_size, num_heads, sequence_length, sequence_length)。

    自己アテンションヘッドにおける加重平均を計算するために使用される、アテンションのsoftmax後のデコーダーのアテンション重み。

  • cross_attentions (tuple(torch.Tensor)、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます)— torch.Tensor のタプル(各レイヤーごとに1つ)、形状は (batch_size, num_heads, sequence_length, sequence_length) です。

    クロスアテンション層のアテンション重みは、アテンションのsoftmax適用後に計算され、クロスアテンションヘッドにおける加重平均の計算に使用されます。

  • encoder_last_hidden_state (torch.Tensor、形状 (batch_size, sequence_length, hidden_size)、任意) — モデルのエンコーダーの最終層の出力における隠れ状態のシーケンス。

  • encoder_hidden_states (tuple(torch.Tensor)、optional、output_hidden_states=True が渡された場合または config.output_hidden_states=True の場合に返されます) — torch.Tensor のタプル(埋め込み層を持つモデルの場合、埋め込みの出力が 1 つ、各層の出力がそれぞれ 1 つずつ)で、形状は (batch_size, sequence_length, hidden_size) です。

    各層の出力および初期埋め込み出力におけるエンコーダーの隠れ状態。

  • encoder_attentions (tuple(torch.Tensor)、任意、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます) — torch.Tensor のタプル(各レイヤーごとに1つ)、形状は (batch_size, num_heads, sequence_length, sequence_length)。

    アテンションのsoftmaxを適用した後のエンコーダーのアテンション重み。自己アテンションヘッドにおける加重平均の計算に使用されます。

例:

>>> import torch
>>> from transformers import AutoProcessor, WhisperForConditionalGeneration
>>> from datasets import load_dataset

>>> processor = AutoProcessor.from_pretrained("openai/whisper-tiny.en")
>>> model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-tiny.en")

>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")

>>> inputs = processor(ds[0]["audio"]["array"], return_tensors="pt")
>>> input_features = inputs.input_features

>>> generated_ids = model.generate(inputs=input_features)

>>> transcription = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
>>> transcription
' Mr. Quilter is the apostle of the middle classes, and we are glad to welcome his gospel.'

generate

< >

( input_features: typing.Optional[torch.Tensor] = Nonegeneration_config: transformers.generation.configuration_utils.GenerationConfig | None = Nonelogits_processor: transformers.generation.logits_process.LogitsProcessorList | None = Nonestopping_criteria: transformers.generation.stopping_criteria.StoppingCriteriaList | None = Noneprefix_allowed_tokens_fn: collections.abc.Callable[[int, torch.Tensor], list[int]] | None = Nonesynced_gpus: bool = Falsereturn_timestamps: bool | None = Nonetask: str | None = Nonelanguage: str | list[str] | None = Noneis_multilingual: bool | None = Noneprompt_ids: typing.Optional[torch.Tensor] = Noneprompt_condition_type: str | None = Nonecondition_on_prev_tokens: bool | None = Nonetemperature: float | tuple[float, ...] | None = Nonecompression_ratio_threshold: float | None = Nonelogprob_threshold: float | None = Noneno_speech_threshold: float | None = Nonenum_segment_frames: int | None = Noneattention_mask: typing.Optional[torch.Tensor] = Nonetime_precision: float = 0.02time_precision_features: float = 0.01return_token_timestamps: bool | None = Nonereturn_segments: bool = Falsereturn_dict_in_generate: bool | None = Noneforce_unique_generate_call: bool | None = Nonemonitor_progress: collections.abc.Callable[[torch.Tensor], None] | None = None**kwargs ) → ModelOutput or dict[str, Any] or torch.LongTensor

パラメータ

  • input_features (torch.Tensor、形状 (batch_size, feature_size, sequence_length)、任意) — 生の音声波形から抽出されたログメル特徴量の浮動小数点数値です。生の音声波形は、.flac または .wav 形式のオーディオファイルを list[float]、numpy.ndarray、または torch.Tensor 型の配列として読み込むことで取得できます。 例えば、torchcodec ライブラリ(pip install torchcodec)や soundfile ライブラリ(pip install soundfile)を通じて行います。 配列を input_features に変換するには、メル特徴量の抽出、パディング、および torch.Tensor 型へのテンソル変換を行うため、AutoFeatureExtractor を使用してください。 詳細は call() を参照してください。
  • generation_config (GenerationConfig、任意) — 生成呼び出しのベースパラメータ化として使用される生成設定です。**kwargs で generate に渡され、generation_config の属性と一致するものは、それらをオーバーライドします。 generation_config が指定されない場合、デフォルトが使用されます。その読み込み優先順位は以下の通りです: 1) 存在する場合、generation_config.json モデルファイルから; 2) モデル設定から。未指定のパラメータは GenerationConfig のデフォルト値を継承することに注意してください。生成をパラメータ化するには、そのドキュメントを確認する必要があります。
  • logits_processor (LogitsProcessorList、省略可) — 引数や生成設定から構築されるデフォルトの logits プロセッサを補完する、カスタムの logits プロセッサです。引数や生成設定によってすでに作成済みの logits プロセッサが渡された場合、エラーが発生します。この機能は上級ユーザー向けに設計されています。
  • stopping_criteria (StoppingCriteriaList, 任意) — 引数と generation config から構築されるデフォルトの停止条件を補完する、カスタムの停止条件です。引数や generation config で既に作成済みの停止条件が渡された場合、エラーが発生します。この機能は上級ユーザー向けに設計されています。
  • prefix_allowed_tokens_fn (Callable[[int, torch.Tensor], list[int]], 省略可) — 指定された場合、この関数は各ステップにおいてビームサーチを許可されたトークンのみに制限します。指定されない場合、制限は適用されません。この関数は 2 つの引数を受け取ります: バッチ ID batch_id と input_ids です。バッチ ID batch_id と以前に生成されたトークン inputs_ids に基づいて、次の生成ステップで許可されるトークンのリストを返す必要があります。この引数は、Autoregressive Entity Retrieval に記載されているような、プレフィックスに条件付けられた制約付き生成に有用です。
  • synced_gpus (bool、省略可、デフォルトは False) — FullyShardedDataParallel および DeepSpeed ZeRO Stage 3 でのデッドロックを回避するために、max_length まで while ループの実行を継続するかどうか。
  • return_timestamps (bool, 任意) — テキストとともにタイムスタンプを返すかどうかを指定します。これによりWhisperTimestampsLogitsProcessorが有効になります。 30秒を超える音声の場合、return_timestamps=Trueを設定する必要があります。
  • task (str, 省略可) — 生成に使用するタスク。“translate”または“transcribe”のいずれかです。
  • language (str または str のリスト、任意) — 生成に使用する言語トークンです。<|en|>、en、または english のいずれかの形式で指定できます。バッチ生成を行う場合は、言語トークンのリストを渡すことができます。使用可能なすべての言語トークンは、model.generation_config.lang_to_id ディクショナリで確認できます。
  • is_multilingual (bool, 任意) — モデルが多言語対応かどうかを示します。
  • prompt_ids (torch.Tensor, 任意) — get_prompt_ids() にテキストを渡して作成されるトークン ID の Rank-1 テンソルで、各チャンクのプロンプトとして提供されます。これにより、文字起こしのためのコンテキストを提供したり、「プロンプトエンジニアリング」したりできます。例えば、カスタム語彙や固有名詞を指定することで、それらの単語が正しく予測される可能性を高めることができます。decoder_start_token_id と併用することはできません。この値を上書きするためです。
  • prompt_condition_type (str, 任意) — 長文転写の場合のみ関連します。prompt_ids の条件付けタイプです。‘first-segment’ は、最初のセグメントのみが prompt_ids に条件付けられることを意味します。‘all-segments’ は、各セグメントが prompt_ids に条件付けられることを意味します。‘all-segments’ を使用する場合は、condition_on_prev_tokens を有効にしてください。 デフォルト値は ‘first-segment’ です。短文転写では ‘first-segment’ のみ可能です。
  • condition_on_prev_tokens (bool、任意) — 長文の文字起こしでのみ関連します。各セグメントを直前のセグメントに条件付けするかどうかを指定します。 Whisper の論文に示されているように、これによりパフォーマンスを向上させることができます。
  • temperature (float または float のリスト、任意) — 生成に使用する温度です。単一の float 値を渡し、do_sample=True を設定すると、サンプリングによる生成が有効になります。長文の文字起こしでは、(0.0, 0.2, 0.4, 0.6, 0.8, 1.0) のような float 値のリストを渡すことで、温度フォールバックを有効にできます。Whisper の論文 に示されているように、これによりパフォーマンスの向上が期待できます。
  • compression_ratio_threshold (float, 任意) — 長文の文字起こしにのみ関連します。定義されている場合、各セグメントの zlib 圧縮率が計算されます。セグメントの圧縮率が compression_ratio_threshold より高い場合、temperature fallback が有効になります。生成されたセグメントは破棄され、より高い temperature を使用して生成が繰り返されます。この機能の根拠は、圧縮率が非常に高いセグメントは多くの反復に苦しむという点です。temperature を上げてランダム性を高めることで、不要な反復を軽減できます。compression_ratio_threshold が定義されている場合、temperature が値のリストであることを確認してください。compression_ratio_threshold の一般的な値は 1.35 です。Whisper の論文 に示されているように、これによりパフォーマンスを向上させることができます。
  • logprob_threshold (float, 任意) — 長文の文字起こしでのみ関連します。定義されている場合、各セグメントの平均対数尤度が計算されます。特定のセグメントの対数尤度がlogprob_thresholdより低い場合、temperature fallback が有効になります。生成されたセグメントは破棄され、より高い temperature を使用して生成が繰り返されます。この機能の根底にある考え方は、対数尤度の低いセグメントは、temperature を上げてランダム性を高めることで改善できるというものです。logprob_thresholdが定義されている場合、temperatureが値のリストであることを確認してください。logprob_thresholdの一般的な値は -1.0 です。Whisper の論文に示されているように、これによりパフォーマンスを向上させることができます。
  • no_speech_threshold (float、任意) — 長時間の文字起こしでのみ関連します。定義されている場合、“no-speech”トークンとlogprob_thresholdを組み合わせることで、セグメントが沈黙のみを含むかどうかを判定します。この場合、該当セグメントの文字起こしはスキップされます。 Whisper の論文に示されているように、これによりパフォーマンスを向上させることができます。
  • num_segment_frames (int, 任意) — 1つのセグメントを構成するフレーム数です。定義されていない場合、num_segment_frames は、モデルのストライドに最大入力長を掛けた値がデフォルトとして使用されます。
  • attention_mask (torch.Tensor, 任意) — バッチサイズが 1 より大きい場合の長文書き起こしには、attention_mask を渡す必要があります。
  • time_precision (int、任意、デフォルトは 0.02) — 出力トークンの秒数です。例えば、0.02 は、生成されたトークンが平均して 20 ms を占めることを意味します。
  • time_precision_features (int、省略可能、デフォルトは 0.01) — 特徴フレームが表す秒数です。
  • return_token_timestamps (bool, 任意) — テキストとともにトークン単位のタイムスタンプを返すかどうかを指定します。このオプションは、return_timestamps オプションの有無にかかわらず使用できます。単語単位のタイムスタンプを取得するには、トークナイザーを使用してトークンを単語にグループ化してください。
  • return_segments (bool、任意、デフォルトは False) — すべてのセグメントのリストを返すかどうかを指定します。なお、このオプションは、長文の文字起こしを行う場合にのみ有効にできます。
  • return_dict_in_generate (bool、任意、デフォルトは False) — 生成されたトークンを返すだけでなく、ModelOutput を返すかどうかを指定します。 長文の文字起こしを行う場合、return_dict_in_generate を有効にするには、return_segments が True に設定されている必要があります。この場合、各セグメントの生成出力が各セグメントに追加されます。
  • force_unique_generate_call (bool、任意) — GenerationMixin の generate() メソッドへの呼び出しを一意に強制するかどうか。これは、アシストデコーディングやテストにおいて、generate() への呼び出しが1回のみ行われることを保証し、それによりデコーダーの入力トークン ID と eos トークン ID が返されることを確認するために有用です。
  • monitor_progress (Callable[[torch.Tensor], None], 省略可) — 指定された場合、音声転写の進捗を報告するためにこの関数を呼び出すことができます。この関数は、n がバッチサイズである形状 (n, 2) のテンソル引数 p を受け取ります。p[i, 0] には、バッチ項目 i について現在転写中の音声フレームのインデックスが含まれます。p[i, 1] には、バッチ項目 i の総フレーム数が含まれます。戻り値は期待されません。
  • kwargs (dict[str, Any], 省略可) — generate_config のアドホックなパラメータ化、およびモデルの forward 関数に転送される追加のモデル固有の kwargs です。モデルがエンコーダー・デコーダーモデルの場合、エンコーダー固有の kwargs にはプレフィックスを付与せず、デコーダー固有の kwargs には decoder_ をプレフィックスとして付与してください。

戻り値

ModelOutput または dict[str, Any] または torch.LongTensor

次のいずれか:

  • return_dict_in_generate=True かつ (return_timestamps=False または force_unique_generate_call=True) の場合、ModelOutput を返します。デコーダーの入力 ID とシーケンス終了 ID を含みます。
  • dict[str, Any](return_dict_in_generate=True かつ return_timestamps=True の場合、または return_segments=True または return_token_timestamps=True の場合)。
  • デコーダー入力IDおよびシーケンス終了IDを除く、その他のすべてのケースではtorch.LongTensorです。

考えられるModelOutputの型は以下の通りです:

segments は segment のリストのリスト(バッチ要素ごとに1つのリスト)です。 segment は、キーとして start、end、tokens、idxs、result を持つ辞書です。

  • start: セグメントの開始タイムスタンプ。
  • end: セグメントの終了タイムスタンプ。
  • tokens: セグメントのトークン。デコーダー入力IDおよびシーケンス終了IDは除外されます。
  • idxs: result に含まれる、GenerationMixin の generate() への元の呼び出しにおける、そのセグメントの tokens の開始インデックス(含む)と終了インデックス(含まない)。
  • result: generate() への GenerationMixin による内部呼び出しの結果。

return_timestamps=True の場合、return_dict_in_generate=True は、基盤となる GenerationMixin の generate() の各呼び出しに適用され、出力は各 segment の result に格納されます。

log-mel入力特徴を、自己回帰的に生成されたトークンIDのシーケンスに転写または翻訳します。

生成を制御するほとんどのパラメータはgeneration_configで設定されます。この引数が渡されない場合、モデルのデフォルトの生成設定が使用されます。generation_configの任意の値は、generate() に対応するパラメータを渡すことで上書きできます。例えば、.generate(inputs, num_beams=4, do_sample=True) のように指定します。

生成戦略の概要とコード例については、次のガイドを参照してください。

例:

  • Longform transcription: To transcribe or translate audios longer than 30 seconds, process the audio files without truncation and pass all mel features at once to generate. It is necessary to set return_timestamps=True. Indeed, long-form transcription uses a sequential algorithm based on timestamps predictions, with heuristics like compression ratio threshold, log probability threshold and temperature fallback. This algorithm is described in the the Whisper original paper, section 3.8. Long-form Transcription.
>>> import torch
>>> from transformers import AutoProcessor, WhisperForConditionalGeneration
>>> from datasets import load_dataset, Audio

>>> processor = AutoProcessor.from_pretrained("openai/whisper-tiny.en")
>>> model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-tiny.en")
>>> model.cuda()
>>> # load audios > 30 seconds
>>> ds = load_dataset("distil-whisper/meanwhile", "default")["test"]
>>> # resample to 16kHz
>>> ds = ds.cast_column("audio", Audio(sampling_rate=16000))
>>> # take first 8 audios and retrieve array
>>> audio = ds[:8]["audio"]
>>> audio = [x["array"] for x in audio]

>>> # make sure to NOT truncate the input audio, to return the `attention_mask` and to pad to the longest audio
>>> inputs = processor(audio, return_tensors="pt", truncation=False, padding="longest", return_attention_mask=True, sampling_rate=16_000)
>>> inputs = inputs.to("cuda", torch.float32)

>>> # transcribe audio to ids
>>> generated_ids = model.generate(**inputs, return_timestamps=True)

>>> transcription = processor.batch_decode(generated_ids, skip_special_tokens=True)
>>> transcription[0]
" Folks, if you watch the show, you know, I spent a lot of time right over there. Patiently and astutely scrutinizing the boxwood and mahogany chest set of the day's biggest stories developing the central headline pawns, definitely maneuvering an oso topical night to F6, fainting a classic Sicilian, nade door variation on the news, all the while seeing eight moves deep and patiently marshalling the latest press releases into a fisher's shows in Lip Nitsky attack that culminates in the elegant lethal slow-played, all-passant checkmate that is my nightly monologue. But sometimes, sometimes, folks, I. CHEERING AND APPLAUSE Sometimes I startle away, cubside down in the monkey bars of a condemned playground on a super fun site. Get all hept up on goofballs. Rummage that were discarded tag bag of defective toys. Yank out a fist bowl of disembodied doll limbs, toss them on a stained kid's place mat from a defunct dennies. set up a table inside a rusty cargo container down by the Wharf and challenged toothless drifters to the godless bughouse blitz of tournament that is my segment. Meanwhile."

monitor_progress コールバックは、文字起こしの進捗を監視するために使用できます。

>>> from tqdm import tqdm

>>> # prepare inputs like above

>>> # define a callback to monitor the progress of the transcription.
>>> with tqdm(desc="Progress") as pbar:
>>>     def monitor_progress(p_batch):
>>>         i = torch.argmax(p_batch[:, 1])
>>>         p = p_batch[i].detach().cpu()
>>>         pbar.total = int(p[1])
>>>         pbar.n = int(p[0])
>>>         pbar.update()

>>>     # transcribe audio to ids
>>>     generated_ids = model.generate(**inputs, return_timestamps=True, monitor_progress=monitor_progress)

>>> transcription = processor.batch_decode(generated_ids, skip_special_tokens=True)
>>> transcription[0]
Progress:  95%|█████████████████████████████████████████████████████████████████████████████████████████████████▎    | 8497/8901 [00:04<00:00, 2052.79it/s]
" Folks, if you watch the show, you know, I spent a lot of time right over there. Patiently and astutely scrutinizing the boxwood and mahogany chest set of the day's biggest stories developing the central headline pawns, definitely maneuvering an oso topical night to F6, fainting a classic Sicilian, nade door variation on the news, all the while seeing eight moves deep and patiently marshalling the latest press releases into a fisher's shows in Lip Nitsky attack that culminates in the elegant lethal slow-played, all-passant checkmate that is my nightly monologue. But sometimes, sometimes, folks, I. CHEERING AND APPLAUSE Sometimes I startle away, cubside down in the monkey bars of a condemned playground on a super fun site. Get all hept up on goofballs. Rummage that were discarded tag bag of defective toys. Yank out a fist bowl of disembodied doll limbs, toss them on a stained kid's place mat from a defunct dennies. set up a table inside a rusty cargo container down by the Wharf and challenged toothless drifters to the godless bughouse blitz of tournament that is my segment. Meanwhile."
  • ショートフォーム文字起こし: 渡された mel 入力特徴が 30 秒以下の場合、以下の 2 つの可能性があります:
    • return_timestamps=False: 音声全体が、GenerationMixinのgenerate()への単一の呼び出しによって転写されます。
    • return_timestamps=True: 音声は、長尺トランスクリプションと同じロジックを使用して文字起こしされます。
>>> import torch
>>> from transformers import AutoProcessor, WhisperForConditionalGeneration
>>> from datasets import load_dataset

>>> processor = AutoProcessor.from_pretrained("openai/whisper-tiny.en")
>>> model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-tiny.en")

>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")

>>> inputs = processor(ds[0]["audio"]["array"], return_tensors="pt")
>>> input_features = inputs.input_features

>>> generated_ids = model.generate(inputs=input_features)

>>> transcription = processor.batch_decode(generated_ids, skip_special_tokens=True)[0]
>>> transcription
' Mr. Quilter is the apostle of the middle classes, and we are glad to welcome his gospel.'

WhisperForCausalLM

class transformers.WhisperForCausalLM

< >

( config: WhisperConfig )

パラメータ

  • config (WhisperConfig) — モデルのパラメータをすべて含むモデル設定クラス。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。

Whisperデコーダーの上部に言語モデリングヘッド(入力埋め込みの重みと共有される線形層)を備えた構成。

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

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

forward

< >

( input_ids: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Noneencoder_outputs: tuple[torch.Tensor] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneinputs_embeds: typing.Optional[torch.Tensor] = Nonelabels: typing.Optional[torch.LongTensor] = Noneuse_cache: bool | None = None**kwargs ) → CausalLMOutputWithCrossAttentions or tuple(torch.Tensor)

パラメータ

  • input_ids (torch.LongTensor の形状 (batch_size, sequence_length), 、省略可) — 語彙における入力シーケンスのトークンインデックスです。デフォルトではパディングは無視されます。

    インデックスはAutoTokenizerを使用して取得できます。詳細については、PreTrainedTokenizer.encode()およびPreTrainedTokenizer.call()を参照してください。

    入力IDとは何ですか?

  • attention_mask (torch.Tensor の形状 (batch_size, sequence_length), 、任意) — パディングトークンのインデックスに対するアテンションを回避するためのマスク。 [0, 1]:
    • マスクされていないトークンに対して1
    • マスクされたトークンに対しては 0 です。

    アテンションマスクとは?

  • encoder_outputs (torch.Tensor、形状 (batch_size, sequence_length, hidden_size)、任意) — エンコーダーの最終層の出力における隠れ状態のシーケンスです。モデルがデコーダーとして設定されている場合、クロスアテンションで使用されます。
  • past_key_values (~cache_utils.Cache, 省略可) — 逐次デコードを高速化するために使用できる、事前計算された隠れ状態(自己アテンションブロックおよびクロスアテンションブロックのキーとバリュー)。通常、これはデコードの以前の段階でモデルが返した past_key_values であり、 use_cache=True または config.use_cache=True.

    入力として許可されるのは Cache インスタンスのみです。kv cache ガイドを参照してください。 past_key_values が渡されない場合、デフォルトで DynamicCache が初期化されます。

    モデルは、入力として与えられたのと同じキャッシュ形式を出力します。

    past_key_values を使用する場合、すべての input_ids(形状 (batch_size, sequence_length))ではなく、このモデルに過去のキー・バリュー状態が与えられていない未処理の input_ids(形状 (batch_size, unprocessed_length))のみを入力することになります。

  • inputs_embeds (torch.Tensor、形状 (batch_size, sequence_length, hidden_size)、任意) — input_ids を渡す代わりに、埋め込み表現を直接渡すこともできます。これは、モデル内部の埋め込み参照行列よりも、input_ids のインデックスを対応するベクトルに変換する方法をより細かく制御したい場合に有用です。
  • labels (torch.LongTensor、shape (batch_size, sequence_length)、任意) — マスク言語モデリング損失を計算するためのラベルです。インデックスは [0, ..., config.vocab_size] の範囲内であるか、-100 である必要があります(input_ids の docstring を参照)。インデックスが -100 に設定されたトークンは無視(マスク)され、損失は [0, ..., config.vocab_size] の範囲内のラベルを持つトークンに対してのみ計算されます。
  • use_cache (bool、任意) — True に設定すると、past_key_values のキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_values を参照)。

戻り値

CausalLMOutputWithCrossAttentions または tuple(torch.Tensor)

torch.Tensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)または CausalLMOutputWithCrossAttentions。設定(WhisperConfig)と入力に応じて、さまざまな要素で構成されます。

WhisperForCausalLMの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後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

  • cross_attentions (tuple(torch.Tensor)、optional、output_attentions=True が渡された場合または config.output_attentions=True の場合に返されます)— torch.Tensor のタプル(各レイヤーごとに1つ)、形状は (batch_size, num_heads, sequence_length, sequence_length) です。

    アテンションのsoftmax後のクロスアテンションの重み。クロスアテンションヘッドにおける加重平均の計算に使用されます。

  • past_key_values (Cache、任意、use_cache=True が渡された場合または config.use_cache=True の場合に返されます) — Cache のインスタンスです。詳細については、kv cache ガイドを参照してください。

    シーケンシャルなデコーディングを高速化するために使用できる(past_key_values 入力参照)、事前計算済みの hidden-states(アテンションブロック内のキーとバリュー)が含まれます。

例:

>>> from transformers import WhisperForCausalLM, WhisperForConditionalGeneration, WhisperProcessor
>>> import torch
>>> from datasets import load_dataset

>>> processor = WhisperProcessor.from_pretrained("openai/whisper-large-v2")
>>> model = WhisperForConditionalGeneration.from_pretrained("openai/whisper-large-v2")

>>> assistant_model = WhisperForCausalLM.from_pretrained("distil-whisper/distil-large-v2")

>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> sample = ds[0]["audio"]
>>> input_features = processor(
...     sample["array"], sampling_rate=sample["sampling_rate"], return_tensors="pt"
... ).input_features

>>> predicted_ids = model.generate(input_features, assistant_model=assistant_model)

>>> # decode token ids to text
>>> transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True)[0]
>>> transcription
' Mr. Quilter is the apostle of the middle classes and we are glad to welcome his gospel.'

WhisperForAudioClassification

class transformers.WhisperForAudioClassification

< >

( config: WhisperConfig )

パラメータ

  • config (WhisperConfig) — モデルのパラメータをすべて含むモデル設定クラス。設定ファイルで初期化しても、モデルに関連する重みは読み込まれず、設定のみが読み込まれます。モデルの重みをロードするには、from_pretrained() メソッドを参照してください。

SUPERB Keyword Spottingなどのタスク向けに、プーリングされた出力の上にシーケンス分類ヘッド(線形層)を配置したWhisper Encoder Modelです。

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

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

forward

< >

( input_features: typing.Optional[torch.LongTensor] = Noneencoder_outputs: tuple[tuple[torch.Tensor]] | None = Nonelabels: typing.Optional[torch.LongTensor] = None**kwargs ) → SequenceClassifierOutput or tuple(torch.Tensor)

パラメータ

  • input_features (torch.LongTensor、形状 (batch_size, sequence_length, feature_dim)、任意) — 入力音声特徴に対応するテンソルです。音声特徴は WhisperFeatureExtractor を使用して取得できます。詳細は WhisperFeatureExtractor.call() を参照してください(WhisperProcessor は音声の処理に WhisperFeatureExtractor を使用します)。
  • encoder_outputs (tuple[tuple[torch.Tensor]]、任意) — (last_hidden_state、任意: hidden_states、任意: attentions) のタプル last_hidden_state は形状 (batch_size, sequence_length, hidden_size)、任意) で、エンコーダーの最終層の出力における隠れ状態のシーケンスです。デコーダーのクロスアテンションで使用されます。
  • labels (torch.LongTensor、shape (batch_size,)、任意) — シーケンス分類/回帰の損失を計算するためのラベル。インデックスは [0, ..., config.num_labels - 1] の範囲である必要があります。config.num_labels == 1 の場合は回帰損失(平均二乗誤差)が計算され、config.num_labels > 1 の場合は分類損失(クロスエントロピー)が計算されます。

戻り値

SequenceClassifierOutput または tuple(torch.Tensor)

torch.Tensor のタプル、またはreturn_dict=False が渡された場合、またはconfig.return_dict=False の場合、SequenceClassifierOutput。設定(WhisperConfig)と入力に応じて、さまざまな要素で構成されます。

WhisperForAudioClassificationのforwardメソッドは、__call__特殊メソッドをオーバーライドします。

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

  • loss (torch.Tensor、shape (1,)、optional、labels が指定された場合に返されます) — 分類損失(config.num_labels==1 の場合は回帰損失)。

  • logits (torch.Tensor、形状 (batch_size, config.num_labels)) — SoftMax 適用前の分類(または config.num_labels==1 の場合は回帰)スコア。

  • 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後のアテンション重み。自己アテンションヘッド内で加重平均を計算するために使用されます。

例:

>>> import torch
>>> from transformers import AutoFeatureExtractor, WhisperForAudioClassification
>>> from datasets import load_dataset

>>> feature_extractor = AutoFeatureExtractor.from_pretrained("sanchit-gandhi/whisper-medium-fleurs-lang-id")
>>> model = WhisperForAudioClassification.from_pretrained("sanchit-gandhi/whisper-medium-fleurs-lang-id")

>>> ds = load_dataset("google/fleurs", "all", split="validation", streaming=True)
>>> sample = next(iter(ds))

>>> inputs = feature_extractor(
...     sample["audio"]["array"], sampling_rate=sample["audio"]["sampling_rate"], return_tensors="pt"
... )
>>> input_features = inputs.input_features

>>> with torch.no_grad():
...     logits = model(input_features).logits

>>> predicted_class_ids = torch.argmax(logits).item()
>>> predicted_label = model.config.id2label[predicted_class_ids]
>>> predicted_label
'Afrikaans'
Update on GitHub