Transformers documentation

Speech2Text

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

このモデルは2020年10月11日にHF papersで公開され、2021年3月10日にHugging Face Transformersに貢献されました。

Speech2Text

概要

Speech2Text モデルは、Changhan Wang、Yun Tang、Xutai Ma、Anne Wu、Dmytro Okhonko、Juan Pino によって fairseq S2T: Fast Speech-to-Text Modeling with fairseq で提案されました。これは、エンドツーエンドの自動音声認識 (ASR) と音声翻訳 (ST) 用に設計された、transformer ベースの seq2seq (エンコーダー-デコーダー) モデルです。このモデルは、音声入力をエンコーダーに渡す前にその長さを 3/4 に短縮するために、畳み込みダウンサンプラーを使用します。モデルは標準的な自己回帰型クロスエントロピー損失で訓練され、自己回帰的に文字起こし/翻訳を生成します。Speech2Text は、ASR と ST 用の複数のデータセットでファインチューニングされています: LibriSpeech、CoVoST 2、MuST-C。

このモデルは valhalla によって提供されました。元のコードは こちら で確認できます。

推論

Speech2Text は、音声信号から抽出された log-mel フィルターバンク特徴量の float テンソルを受け取る音声モデルです。これは transformer ベースの seq2seq モデルであり、文字起こしや翻訳は自己回帰的に生成されます。推論には generate() メソッドを使用できます。

Speech2TextFeatureExtractor クラスは、log-mel フィルターバンク特徴量の抽出を担当します。Speech2TextProcessor は、Speech2TextFeatureExtractor と Speech2TextTokenizer を単一のインスタンスにラップし、入力特徴量の抽出と予測されたトークン ID のデコードの両方を行います。

特徴量抽出器はtorchaudioに、トークナイザーはsentencepieceに依存しているため、例を実行する前にこれらのパッケージをインストールしてください。pip install transformers"[speech, sentencepiece]"で追加の音声依存関係としてインストールするか、pip install torchaudio sentencepieceで個別にインストールすることもできます。また、torchaudioにはlibsndfileパッケージの開発版が必要であり、システムのパッケージマネージャーでインストールできます。Ubuntuでは、次のようにインストールできます: apt install libsndfile1-dev

  • ASRと音声翻訳
from datasets import load_dataset

from transformers import Speech2TextForConditionalGeneration, Speech2TextProcessor


model = Speech2TextForConditionalGeneration.from_pretrained("facebook/s2t-small-librispeech-asr", device_map="auto")
processor = Speech2TextProcessor.from_pretrained("facebook/s2t-small-librispeech-asr")


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

inputs = processor(ds[0]["audio"]["array"], sampling_rate=ds[0]["audio"]["sampling_rate"], return_tensors="pt").to(model.device)
generated_ids = model.generate(inputs["input_features"], attention_mask=inputs["attention_mask"])

transcription = processor.batch_decode(generated_ids, skip_special_tokens=True)
transcription
['mister quilter is the apostle of the middle classes and we are glad to welcome his gospel']
  • 多言語音声翻訳

    多言語音声翻訳モデルでは、eos_token_id が decoder_start_token_id として使用され、ターゲット言語の ID が最初の生成トークンとして強制されます。ターゲット言語の ID を最初の生成トークンとして強制するには、generate() メソッドに forced_bos_token_id パラメータを渡します。以下の例では、facebook/s2t-medium-mustc-multilingual-st チェックポイントを使用して、英語の音声をフランス語のテキストに翻訳する方法を示しています。

from datasets import load_dataset

from transformers import Speech2TextForConditionalGeneration, Speech2TextProcessor


model = Speech2TextForConditionalGeneration.from_pretrained("facebook/s2t-medium-mustc-multilingual-st", device_map="auto")
processor = Speech2TextProcessor.from_pretrained("facebook/s2t-medium-mustc-multilingual-st")

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

inputs = processor(ds[0]["audio"]["array"], sampling_rate=ds[0]["audio"]["sampling_rate"], return_tensors="pt").to(model.device)
generated_ids = model.generate(
    inputs["input_features"],
    attention_mask=inputs["attention_mask"],
    forced_bos_token_id=processor.tokenizer.lang_code_to_id["fr"],
)

translation = processor.batch_decode(generated_ids, skip_special_tokens=True)
translation
["(Vidéo) Si M. Kilder est l'apossible des classes moyennes, et nous sommes heureux d'être accueillis dans son évangile."]

Speech2Textのチェックポイントを探すには、モデルハブを参照してください。

Speech2TextConfig

クラス transformers.Speech2TextConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0id2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Noneis_encoder_decoder: bool = Truevocab_size: int = 10000encoder_layers: int = 12encoder_ffn_dim: int = 2048encoder_attention_heads: int = 4decoder_layers: int = 6decoder_ffn_dim: int = 2048decoder_attention_heads: int = 4encoder_layerdrop: float | int = 0.0decoder_layerdrop: float | int = 0.0use_cache: bool = Trueactivation_function: str = 'relu'd_model: int = 256dropout: float | int = 0.1attention_dropout: float | int = 0.0activation_dropout: float | int = 0.0init_std: float = 0.02decoder_start_token_id: int = 2scale_embedding: bool = Truepad_token_id: int | None = 1bos_token_id: int | None = 0eos_token_id: int | list[int] | None = 2max_source_positions: int = 6000max_target_positions: int = 1024num_conv_layers: int = 2conv_kernel_sizes: list[int] | tuple[int, ...] = (5, 5)conv_channels: int = 1024input_feat_per_channel: int = 80input_channels: int = 1tie_word_embeddings: bool = True )

パラメータ

  • is_encoder_decoder (bool、任意、デフォルトはTrue) — モデルがエンコーダー/デコーダーとして使用されるかどうかを示します。
  • vocab_size (int、任意、デフォルトは 10000) — モデルの語彙サイズです。input_ids で表現できるトークンの種類数を定義します。
  • encoder_layers (int、任意、デフォルト値は 12) — Transformer エンコーダーの隠れ層の数です。設定されていない場合、num_layers と同じ値が使用されます。
  • encoder_ffn_dim (int、任意、デフォルトは 2048) — エンコーダー内の「中間」層(フィードフォワード層と呼ばれることが多い)の次元数。
  • encoder_attention_heads (int、任意、デフォルトは4) — Transformerエンコーダーの各アテンション層におけるアテンションヘッドの数。
  • decoder_layers (int、任意、デフォルトは 6) — Transformer デコーダーの隠れ層の数です。設定されていない場合、num_layers と同じ値が使用されます。
  • decoder_ffn_dim (int、任意、デフォルトは 2048) — デコーダー内の「中間」(feed-forward と呼ばれることが多い) レイヤーの次元数。
  • decoder_attention_heads (int、任意、デフォルトは 4) — Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。
  • encoder_layerdrop (Union[float, int]、任意、デフォルトは 0.0) — エンコーダーの LayerDrop 確率です。詳細は [LayerDrop の論文](https://huggingface.co/papers/1909.11556 を参照)をご覧ください。
  • decoder_layerdrop (Union[float, int]、省略可、デフォルト値は 0.0) — デコーダーの LayerDrop 確率です。詳細は [LayerDrop の論文](https://huggingface.co/papers/1909.11556 を参照)をご覧ください。
  • use_cache (bool、任意、デフォルトは True) — モデルが最後のキー/バリューの注意を返すかどうか(すべてのモデルで利用されるわけではありません)。config.is_decoder=True の場合、またはモデルがデコーダー専用の生成モデルである場合にのみ関連します。
  • activation_function (str、任意、デフォルトは relu) — デコーダーで使用する非線形活性化関数(関数または文字列)。例えば、"gelu"、"relu"、"silu" など。
  • d_model (int、省略可、デフォルトは 256) — エンコーダ層とプーラ層のサイズ。
  • dropout (Union[float, int]、任意、デフォルト値は0.1) — すべての dropout レイヤーの比率です。
  • attention_dropout (Union[float, int]、任意、デフォルトは 0.0) — アテンション確率のドロップアウト率です。
  • activation_dropout (Union[float, int]、任意、デフォルトは 0.0) — 全結合層内の活性化に対する dropout 率です。
  • init_std (float、任意、デフォルトは 0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。
  • decoder_start_token_id (int、任意、デフォルトは 2) — エンコーダー・デコーダーモデルが bos とは異なるトークンでデコーディングを開始する場合、そのトークンの ID。
  • scale_embedding (bool、任意、デフォルトはTrue) — 埋め込みを sqrt(d_model) で割ってスケーリングするかどうかを指定します。
  • pad_token_id (int、任意、デフォルトは 1) — 語彙内でパディングに使用されるトークン ID。
  • bos_token_id (int、任意、デフォルトは 0) — 語彙におけるストリーム開始に使用されるトークン ID。
  • eos_token_id (Union[int, list[int]]、任意、デフォルトは 2) — 語彙内でストリーム終了に使用されるトークン ID。
  • max_source_positions (int、任意、デフォルトは 6000) — このモデルが使用される可能性がある log-mel フィルターバンク特徴量の最大シーケンス長です。
  • max_target_positions (int、任意、デフォルト値は 1024) — このモデルが使用される可能性のある最大シーケンス長です。念のため、大きめの値(例: 512、1024、2048 など)に設定するのが一般的です。
  • num_conv_layers (int、任意、デフォルトは 2) — conv モジュール内の 1 次元畳み込み層の数。
  • conv_kernel_sizes (tuple[int]、任意、デフォルトは (5, 5)) — conv モジュール内の各 1 次元畳み込み層のカーネルサイズを定義する整数のタプルです。conv_kernel_sizes の長さは num_conv_layers と一致する必要があります。
  • conv_channels (int、任意、デフォルトは 1024) — conv モジュール内の最終層を除く各畳み込み層の出力チャネル数を定義する整数です。
  • input_feat_per_channel (int, 省略可能、デフォルトは 80) — 特徴量ベクトルのサイズを指定する整数です。これは log-mel フィルターバンク特徴量の次元数でもあります。
  • input_channels (int、任意、デフォルトは 1) — 入力チャネル数です。
  • tie_word_embeddings (bool、任意、デフォルトは True) — モデルの tied_weights_keys マッピングに従って重み埋め込みを共有するかどうかを指定します。

これは、Speech2TextModel の設定を保存するための設定クラスです。指定された引数に基づいて Speech To Text モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、facebook/s2t-small-librispeech-asr と同様の設定が得られます。

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

例:

>>> from transformers import Speech2TextConfig, Speech2TextModel

>>> # Initializing a Speech2Text s2t_transformer_s style configuration
>>> configuration = Speech2TextConfig()

>>> # Initializing a model (with random weights) from the s2t_transformer_s style configuration
>>> model = Speech2TextModel(configuration)

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

Speech2TextTokenizer

class transformers.Speech2TextTokenizer

< >

( vocab_filespm_filebos_token = '<s>'eos_token = '</s>'pad_token = '<pad>'unk_token = '<unk>'do_upper_case = Falsedo_lower_case = Falsetgt_lang = Nonelang_codes = Noneadditional_special_tokens = Nonesp_model_kwargs: dict[str, typing.Any] | None = None**kwargs )

パラメータ

  • vocab_file (str) — 語彙を含むファイル。
  • spm_file (str) — SentencePieceモデルファイルへのパス
  • bos_token (str、任意、デフォルトは "<s>") — 文の開始トークンです。
  • eos_token (str、任意、デフォルトは "</s>") — 文の終了トークンです。
  • unk_token (str、任意、デフォルトは "<unk>") — 不明トークンです。語彙に存在しないトークンは ID に変換できず、代わりにこのトークンが設定されます。
  • pad_token (str、任意、デフォルトは "<pad>") — パディングに使用されるトークンです。例えば、長さが異なるシーケンスをバッチ処理する際に使用します。
  • do_upper_case (bool、省略可能、デフォルトは False) — デコード時に出力を大文字に変換するかどうかを指定します。
  • do_lower_case (bool、省略可、デフォルトは False) — トークン化時に、入力を小文字に変換するかどうかを指定します。
  • tgt_lang (str, 任意) — ターゲット言語を表す文字列。
  • sp_model_kwargs (dict, 省略可) — は SentencePieceProcessor.__init__() メソッドに渡されます。 SentencePiece の Python ラッパー は、次のような設定を行うために使用できます:
    • enable_sampling: サブワード正規化を有効にします。

    • nbest_size: unigramのサンプリングパラメータ。BPE-Dropoutでは無効です。

      • nbest_size = {0,1}: サンプリングは行われません。
      • nbest_size > 1: nbest_size 個の結果からサンプリングします。
      • nbest_size < 0: nbest_size が無限大であると仮定し、forward-filtering-and-backward-sampling アルゴリズムを使用して、すべての仮説(ラティス)からサンプリングします。
    • alpha: 単一語サンプリングの平滑化パラメータ、および BPE-dropout におけるマージ操作のドロップアウト確率。

  • **kwargs — PreTrainedTokenizer に渡される追加のキーワード引数

Speech2Text トークナイザーを構築します。

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

build_inputs_with_special_tokens

< >

( token_ids_0token_ids_1 = None )

シーケンスからモデルのインプットを構築し、eos_token_id を追加します。

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メソッドを使用して特殊トークンを追加する際に呼び出されます。

create_token_type_ids_from_sequences

< >

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

パラメータ

  • token_ids_0 (list[int]) — ID のリストです。
  • token_ids_1 (list[int]、省略可) — シーケンスペア用の第2のIDリスト(任意)。

戻り値

list[int]

設定されたパターンに従ったトークンタイプID。

シーケンスペア分類タスクで使用するために、渡された2つのシーケンスからマスクを作成します。

このメソッドは、トークナイザーの設定属性に基づいてトークンタイプIDを動的に構築します:

  • token_type_ids_pattern: 使用するパターン(“all_zeros”または“bert_style”)
  • token_type_ids_include_special_tokens: 長さの計算に特殊トークンを考慮するかどうか

例:

# All zeros pattern (default, used by RoBERTa, BART, etc.)
tokenizer.token_type_ids_pattern = "all_zeros"
# Returns: [0, 0, 0, ...] for both sequences

# BERT-style pattern (first sequence gets 0s, second gets 1s)
tokenizer.token_type_ids_pattern = "bert_style"
# Returns: [0, 0, 0, ..., 1, 1, 1, ...] for sequence pairs

save_vocabulary

< >

( save_directory: strfilename_prefix: str | None = None )

Speech2TextFeatureExtractor

クラス transformers.Speech2TextFeatureExtractor

< >

( feature_size = 80sampling_rate = 16000num_mel_bins = 80padding_value = 0.0dither = 0.0do_ceptral_normalize = Truenormalize_means = Truenormalize_vars = True**kwargs )

パラメータ

  • feature_size (int、任意、デフォルトは 80) — 抽出された特徴量の次元数。
  • sampling_rate (int、任意、デフォルトは 16000) — オーディオファイルをデジタル化するためのサンプリングレート(ヘルツ (Hz) 表記)。
  • num_mel_bins (int、省略可、デフォルト値は 80) — Mel 周波数ビンの数。
  • padding_value (float、任意、デフォルトは 0.0) — パディングベクトルを埋めるために使用される値です。
  • dither (float、任意、デフォルト値は 0.0) — ディザリングを追加します。つまり、各フレームに小さなガウスノイズを加えます。 例えば、4.0 を使用すると、平均 0.0、標準偏差 4.0 の正規分布によるディザリングが追加されます(kaldi 波形の範囲が [-32k, +32k] であると仮定)。 値 0.0 はディザリングを行わないことを意味します。 ディザリングは mel_floor と同様の効果を持ちます。信号に VAD カットオフが存在する場合、ハードゼロ区間を持つ信号の log_mel_fbank の高値を低減します。
  • do_ceptral_normalize (bool、省略可、デフォルトは True) — 抽出された特徴量に対して、発話レベルのセプトル平均・分散正規化を適用するかどうかを指定します。
  • normalize_means (bool、任意、デフォルトは True) — 抽出された特徴量を平均ゼロ化(ゼロミーン正規化)するかどうかを指定します。
  • normalize_vars (bool、任意、デフォルトは True) — 抽出された特徴量を単位分散で正規化するか否かを指定します。

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

この feature extractor は Speech2TextFeatureExtractor を継承しており、主要なメソッドの大部分が含まれています。これらのメソッドに関する詳細については、このスーパークラスを参照してください。

このクラスは、TorchAudioがインストールされている場合はそれを使用し、そうでない場合はnumpyを使用して、生音声からメルフィルタバンク特徴量を抽出します。また、抽出された特徴量に対して、発話レベルのセプトル平均・分散正規化を適用します。

__call__

< >

( raw_speech: numpy.ndarray | list[float] | list[numpy.ndarray] | list[list[float]]padding: bool | str | transformers.utils.generic.PaddingStrategy = Falsemax_length: int | None = Nonetruncation: bool = Falsepad_to_multiple_of: int | None = Nonereturn_tensors: str | transformers.utils.generic.TensorType | None = Nonesampling_rate: int | None = Nonereturn_attention_mask: bool | None = None**kwargs )

パラメータ

  • raw_speech (np.ndarray、list[float]、list[np.ndarray]、list[list[float]]) — パディング対象のシーケンスまたはシーケンスのバッチです。各シーケンスは、NumPy 配列、浮動小数点数の値のリスト、NumPy 配列のリスト、または浮動小数点数の値のリストのリストであることができます。モノラル音声(ステレオではなく、タイムステップごとに単一の浮動小数点数)である必要があります。
  • padding (bool, str または PaddingStrategy, 省略可, デフォルトは True) — 返されるシーケンスのパディング戦略(モデルのパディング側およびパディングインデックスに従う)として、以下から選択します:
    • Trueまたは'longest': バッチ内の最長のシーケンスの長さにパディングします(単一のシーケンスのみが提供された場合は、パディングを行いません)。
    • 'max_length': 引数 max_length で指定された最大長、またはその引数が指定されていない場合はモデルが受け入れ可能な最大入力長までパディングします。
    • False または 'do_not_pad'(デフォルト):パディングを行いません(つまり、長さが異なるシーケンスのバッチを出力できます)。
  • max_length (int, 任意) — 返されるリストの最大長、および必要に応じてパディングの長さ(上記を参照)。
  • truncation (bool) — max_length を超える長さの入力シーケンスを max_length に切り詰めるための切り詰め処理を有効にします。
  • pad_to_multiple_of (int, 省略可能) — 設定すると、シーケンスを指定された値の倍数にパディングします。

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

  • return_attention_mask (bool, 省略可能) — attention mask を返すかどうか。デフォルトのままにすると、特定の feature_extractor のデフォルトに従って attention mask を返します。

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

    Speech2TextTransformer モデルでは、バッチ推論を行う際に attention_mask を常に渡す必要があります。これにより、微妙なバグを回避できます。

  • return_tensors (str または TensorType, 省略可) — 設定すると、Python の整数のリストではなくテンソルを返します。指定可能な値は以下の通りです:
    • 'pt': PyTorchのtorch.Tensorオブジェクトを返します。
    • 'np': Numpy の np.ndarray オブジェクトを返します。
  • sampling_rate (int, 任意) — raw_speech 入力がサンプリングされたレートです。サイレントエラーを防ぐため、forward 呼び出し時に sampling_rate を渡すことを強く推奨します。
  • padding_value (float、任意、デフォルトは 0.0) — パディングの値やベクトルを埋めるために使用される値です。

1つ以上のシーケンスを特徴量化し、モデル用に準備するための主要なメソッド。

Speech2TextProcessor

class transformers.Speech2TextProcessor

< >

( feature_extractortokenizer )

パラメータ

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

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

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

__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() に転送します。詳細については、このメソッドのドキュメント文字列を参照してください。

Speech2TextModel

class transformers.Speech2TextModel

< >

( config: Speech2TextConfig )

パラメータ

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

特定のヘッドを上に載せず、生のhidden-statesを出力する、素のSpeech To Text Text Modelです。

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

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

forward

< >

( input_features: typing.Optional[torch.LongTensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_attention_mask: typing.Optional[torch.LongTensor] = Noneencoder_outputs: tuple[tuple[torch.Tensor]] | None = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonedecoder_inputs_embeds: typing.Optional[torch.Tensor] = Noneuse_cache: bool | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → Seq2SeqLMOutput or tuple(torch.Tensor)

パラメータ

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

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

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

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

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

    SpeechToText は decoder_input_ids の生成の開始トークンとして eos_token_id を使用します。past_key_values を使用する場合、任意で最後の decoder_input_ids だけを入力すれば十分です(past_key_values を参照)。

  • decoder_attention_mask (torch.LongTensor の形状 (batch_size, target_sequence_length), 、任意) — デフォルトの動作: decoder_input_ids. デフォルトでは、因果マスクも使用されます。

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

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

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

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

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

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

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

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

戻り値

Seq2SeqLMOutput または tuple(torch.Tensor)

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

Speech2TextModelの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 Speech2TextModel, AutoFeatureExtractor
>>> from datasets import load_dataset

>>> model = Speech2TextModel.from_pretrained("facebook/s2t-small-librispeech-asr")
>>> feature_extractor = AutoFeatureExtractor.from_pretrained("facebook/s2t-small-librispeech-asr")
>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> inputs = feature_extractor(
...     ds[0]["audio"]["array"], sampling_rate=ds[0]["audio"]["sampling_rate"], return_tensors="pt"
... )
>>> input_features = inputs.input_features
>>> decoder_input_ids = torch.tensor([[1, 1]]) * model.config.decoder_start_token_id
>>> last_hidden_state = model(input_features, decoder_input_ids=decoder_input_ids).last_hidden_state
>>> list(last_hidden_state.shape)
[1, 2, 256]

Speech2TextForConditionalGeneration

クラス transformers.Speech2TextForConditionalGeneration

< >

( config: Speech2TextConfig )

パラメータ

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

言語モデリングヘッドを備えたSpeech2Textモデル。要約に使用できます。

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

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

forward

< >

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

パラメータ

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

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

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

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

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

    SpeechToText は decoder_input_ids の生成の開始トークンとして eos_token_id を使用します。past_key_values を使用する場合、任意で最後の decoder_input_ids だけを入力すれば十分です(past_key_values を参照)。

  • decoder_attention_mask (torch.LongTensor の形状 (batch_size, target_sequence_length), 、任意) — デフォルトの動作: decoder_input_ids. デフォルトでは、因果マスクも使用されます。

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

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

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

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

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

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

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

  • labels (torch.LongTensor、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 を参照)。

戻り値

Seq2SeqLMOutput または tuple(torch.Tensor)

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

Speech2TextForConditionalGenerationの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 Speech2TextProcessor, Speech2TextForConditionalGeneration
>>> from datasets import load_dataset

>>> model = Speech2TextForConditionalGeneration.from_pretrained("facebook/s2t-small-librispeech-asr")
>>> processor = Speech2TextProcessor.from_pretrained("facebook/s2t-small-librispeech-asr")


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

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

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

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