Transformers documentation

Nemotron ASR ストリーミング

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

and get access to the augmented documentation experience

to get started

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

Nemotron ASR ストリーミング

概要

Nemotron ASR Streaming は、NVIDIA による 6 億パラメータの英語音声認識モデルです。低レイテンシのストリーミング環境と高スループットのバッチ環境の両方で高品質な文字起こしを実現するように設計されており、句読点と大文字の自動付与をネイティブでサポートしています。ストリーミング処理では、80ms、160ms、560ms、1120ms の設定可能なチャンクサイズを提供し、アプリケーションの要件に応じてレイテンシと精度のトレードオフを調整できます。この機能の中心となるのは、キャッシュ対応の FastConformer-RNNT アーキテクチャです。従来のバッファリング型ストリーミングでは重複する音声ウィンドウを繰り返し再処理しますが、このモデルは新しい入力のチャンクのみを処理し、以前のチャンクからキャッシュされたエンコーダのコンテキストを再利用します。これにより冗長な計算が排除され、効率が大幅に向上し、精度を犠牲にすることなくエンドツーエンドの遅延を最小限に抑えるため、リアルタイム文字起こしのワークロードに最適です。

使用方法

オフライン文字起こし

パイプライン
AutoModel
from transformers import pipeline

pipe = pipeline(
    "automatic-speech-recognition",
    model="nvidia/nemotron-speech-streaming-en-0.6b",
)
out = pipe("https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/bcn_weather.mp3")
print(out)

ストリーミング文字起こし

これは実験的な機能であり、APIは変更される可能性があります。

リアルタイム文字起こしでは、音声は次のルールに従ってチャンクに分割されます。

from threading import Thread
from transformers import AutoModelForRNNT, AutoProcessor, TextIteratorStreamer
from transformers.audio_utils import load_audio

model_id = "nvidia/nemotron-speech-streaming-en-0.6b"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForRNNT.from_pretrained(model_id, device_map="auto")

processor.set_num_lookahead_tokens(6)
print(f"Streaming latency: {processor.streaming_latency_ms} ms")

sampling_rate = processor.feature_extractor.sampling_rate
audio = load_audio(
    "https://huggingface.co/datasets/hf-internal-testing/dummy-audio-samples/resolve/main/obama.mp3",
    sampling_rate=sampling_rate,
)

first_chunk_inputs = processor(
    audio[: processor.num_samples_first_audio_chunk],
    sampling_rate=sampling_rate,
    is_streaming=True,
    is_first_audio_chunk=True,
    return_tensors="pt",
)
first_chunk_inputs = first_chunk_inputs.to(model.device, dtype=model.dtype)


def input_features_generator():
    yield first_chunk_inputs.input_features[:, : processor.num_mel_frames_first_audio_chunk, :]

    mel_frame_idx = processor.num_mel_frames_first_audio_chunk
    hop_length = processor.feature_extractor.hop_length
    n_fft = processor.feature_extractor.n_fft

    start_idx = mel_frame_idx * hop_length - n_fft // 2
    while (end_idx := start_idx + processor.num_samples_per_audio_chunk) < audio.shape[0]:
        inputs = processor(
            audio[start_idx:end_idx],
            sampling_rate=sampling_rate,
            is_streaming=True,
            is_first_audio_chunk=False,
            return_tensors="pt",
        )
        inputs = inputs.to(model.device, dtype=model.dtype)
        yield inputs.input_features

        mel_frame_idx += processor.num_mel_frames_per_audio_chunk
        start_idx = mel_frame_idx * hop_length - n_fft // 2


streamer = TextIteratorStreamer(processor.tokenizer, skip_special_tokens=True)
generate_kwargs = {
    **first_chunk_inputs,
    "input_features": input_features_generator(),
    "streamer": streamer,
}
thread = Thread(target=model.generate, kwargs=generate_kwargs)
thread.start()

# Iterate over the streamer to get text chunks as they are generated
print("Model output (streaming):", end=" ", flush=True)
for text_chunk in streamer:
    print(text_chunk, end="", flush=True)
thread.join()

ストリーミングのレイテンシ

レイテンシはnum_lookahead_tokensによって設定されます。これは、各チャンクが出力される前に待機する右側のアテンションコンテキスト(サブサンプリングされたエンコーダーフレームにおけるルックアヘッド)です。値を大きくすると、各チャンクがより多くの将来のオーディオを参照できるようになり、レイテンシが高くなる代わりに精度が向上します。サポートされているトレードオフを確認し、1つを選択して、結果として得られるレイテンシを読み取ります。

from transformers import AutoProcessor

processor = AutoProcessor.from_pretrained("nvidia/nemotron-speech-streaming-en-0.6b")

# Each supported `num_lookahead_tokens` mapped to its streaming latency in milliseconds:
print(processor.supported_streaming_latencies_ms)
# {13: 1120, 6: 560, 1: 160, 0: 80}

# Select a right attention context (this also re-derives the streaming chunk sizes used above):
processor.set_num_lookahead_tokens(6)

# Latency of the current selection:
print(processor.streaming_latency_ms)
# 560

set_num_lookahead_tokens はプロセッサが出力するチャンクのサイズを決定し、対応する num_lookahead_tokens は generate に到達する必要があります(上記のスニペットでは、num_lookahead_tokens を保持する **inputs/**first_chunk_inputs を経由して渡されます)。ストリーミング generate では、これが省略されている場合、例外が発生します。

NemotronAsrStreamingConfig

クラス transformers.NemotronAsrStreamingConfig

< >

( 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 = 1025decoder_hidden_size: int = 640num_decoder_layers: int = 2hidden_act: str = 'relu'max_symbols_per_step: int = 10encoder_config: dict | transformers.configuration_utils.PreTrainedConfig | None = Nonepad_token_id: int = 0blank_token_id: int = 1024 )

パラメータ

  • is_encoder_decoder (bool、任意、デフォルトはTrue) — モデルがエンコーダー/デコーダーとして使用されるかどうかを示します。
  • vocab_size (int、任意、デフォルトは 1025) — モデルの語彙サイズ。input_ids で表現できるトークンの種類数を定義します。
  • decoder_hidden_size (int、任意、デフォルト値は 640) — LSTM 予測ネットワークの隠れ層サイズ(NeMo の pred_hidden)です。ジョイントネットワークは、エンコーダーとデコーダーの両方の出力をこのサイズに射影します(NeMo の joint_hidden。既知のチェックポイントではすべて pred_hidden と等しく設定されています)。
  • num_decoder_layers (int, 省略可能、デフォルト値は 2) — 予測ネットワークにおける LSTM レイヤーの数。
  • hidden_act (str、任意、デフォルトは "relu") — ジョイントネットワークにおける活性化関数。
  • max_symbols_per_step (int、任意、デフォルト値は 10)— 貪欲デコーディング中に、エンコーダの各タイムステップで出力される空白以外のシンボルの最大数。
  • encoder_config (Union[dict, NemotronAsrStreamingEncoderConfig], 省略可) — エンコーダーの設定オブジェクトまたは辞書。
  • pad_token_id (int、任意、デフォルトは 0) — 語彙内でパディングに使用されるトークン ID。
  • blank_token_id (int、任意、デフォルト値は 1024)— Blank トークンの ID です。RNN-T では pad_token_id と異なります。

これは NemotronAsrStreamingForRNNT の設定を保存するための設定クラスです。指定された引数に基づいて Nemotron Asr Streaming モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、nvidia/nemotron-speech-streaming-en-0.6b と同様の設定が得られます。

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

例:

>>> from transformers import NemotronAsrStreamingForRNNT, NemotronAsrStreamingConfig

>>> # Initializing a NemotronAsrStreaming RNN-T configuration
>>> configuration = NemotronAsrStreamingConfig()

>>> # Initializing a model from the configuration
>>> model = NemotronAsrStreamingForRNNT(configuration)

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

NemotronAsrStreamingEncoderConfig

class transformers.NemotronAsrStreamingEncoderConfig

< >

( transformers_version: str | None = Nonearchitectures: list[str] | None = Noneoutput_hidden_states: bool | None = Falsereturn_dict: bool | None = Truedtype: str | torch.dtype | None = Nonechunk_size_feed_forward: int = 0is_encoder_decoder: bool = Falseid2label: dict[int, str] | dict[str, str] | None = Nonelabel2id: dict[str, int] | dict[str, str] | None = Noneproblem_type: Literal['regression', 'single_label_classification', 'multi_label_classification'] | None = Nonehidden_size: int = 1024num_hidden_layers: int = 24num_attention_heads: int = 8intermediate_size: int = 4096hidden_act: str = 'silu'attention_bias: bool = Trueconvolution_bias: bool = Trueconv_kernel_size: int = 9subsampling_factor: int = 8subsampling_conv_channels: int = 256num_mel_bins: int = 80subsampling_conv_kernel_size: int = 3subsampling_conv_stride: int = 2dropout: float | int = 0.1dropout_positions: float | int = 0.0layerdrop: float | int = 0.1activation_dropout: float | int = 0.1attention_dropout: float | int = 0.1max_position_embeddings: int = 5000scale_input: bool = Trueinitializer_range: float = 0.02sliding_window: int = 71default_num_lookahead_tokens: int = 13 )

パラメータ

  • hidden_size (int、任意、デフォルトは 1024) — 隠れ表現の次元数。
  • num_hidden_layers (int、任意、デフォルトは24) — Transformer デコーダーの隠れ層の数。
  • num_attention_heads (int、任意、デフォルトは 8) — Transformer デコーダーの各アテンション層におけるアテンションヘッドの数。
  • intermediate_size (int、任意、デフォルトは4096) — MLP 表現の次元数。
  • hidden_act (str、任意、デフォルトは silu) — デコーダーで使用する非線形活性化関数(関数または文字列)。例えば、"gelu"、 "relu"、"silu" など。
  • attention_bias (bool、任意、デフォルトはTrue) — 自己注意機構において、クエリ、キー、バリュー、および出力の投影層にバイアスを使用するかどうかを指定します。
  • convolution_bias (bool、任意、デフォルトはTrue) — Conformer の畳み込みモジュールでバイアスを使用するかどうか。
  • conv_kernel_size (int、任意、デフォルトは 9) — Conformer ブロック内の畳み込み層のカーネルサイズ。
  • subsampling_factor (int、任意、デフォルトは 8) — 入力シーケンスをサブサンプリングする倍率です。
  • subsampling_conv_channels (int、任意、デフォルトは 256) — サブサンプリング畳み込み層のチャネル数です。
  • num_mel_bins (int、任意、デフォルトは 80) — Mel 特徴の数を指定します。
  • subsampling_conv_kernel_size (int、省略可、デフォルトは 3) — サブサンプリング用畳み込み層のカーネルサイズです。
  • subsampling_conv_stride (int, 任意、デフォルトは 2) — サブサンプリング畳み込み層のストライドです。
  • dropout (Union[float, int]、任意、デフォルト値は0.1) — すべての dropout レイヤーの比率です。
  • dropout_positions (float、任意、デフォルト値は 0.0) — 入力シーケンスの位置に対する dropout 率です。
  • layerdrop (Union[float, int]、任意、デフォルトは 0.1) — LayerDrop の確率です。詳細は [LayerDrop の論文](https://huggingface.co/papers/1909.11556 を参照)をご覧ください。
  • activation_dropout (Union[float, int]、任意、デフォルトは 0.1) — 全結合層内の活性化の dropout 率です。
  • attention_dropout (Union[float, int]、任意、デフォルトは 0.1) — アテンション確率のドロップアウト率です。
  • max_position_embeddings (int、任意、デフォルトは 5000) — このモデルが使用される可能性のある最大シーケンス長です。
  • scale_input (bool、任意、デフォルトは True) — 入力埋め込みをスケーリングするかどうかを指定します。
  • initializer_range (float、任意、デフォルトは 0.02) — すべての重み行列を初期化するための truncated_normal_initializer の標準偏差です。
  • sliding_window (int、任意、デフォルト値は 71) — K/V 注意スライディングウィンドウのサイズ(サブサンプリングされたエンコーダーフレーム単位)です。これは left_context + 1(現在のフレームと左コンテキスト)に等しく、左側の注意コンテキストは sliding_window - 1 となります。サポートされているすべてのルックアヘッドで同じ値です。
  • default_num_lookahead_tokens (int、任意、デフォルト値は 13)— forward に何も渡されない場合に使用される、右側の注意コンテキスト(サブサンプリングされたエンコーダーフレームにおける lookahead)です。モデルが学習で使用したサポート対象のセットは、NemotronAsrStreamingProcessor に格納されています。

これは NemotronAsrStreamingForRNNT の設定を保存するための設定クラスです。指定された引数に基づいて Nemotron Asr Streaming モデルをインスタンス化し、モデルのアーキテクチャを定義するために使用されます。デフォルト値で設定をインスタンス化すると、nvidia/nemotron-speech-streaming-en-0.6b と同様の設定が得られます。

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

例:

>>> from transformers import NemotronAsrStreamingEncoder, NemotronAsrStreamingEncoderConfig

>>> # Initializing a `NemotronAsrStreamingEncoder` configuration
>>> configuration = NemotronAsrStreamingEncoderConfig()

>>> # Initializing a model from the configuration
>>> model = NemotronAsrStreamingEncoder(configuration)

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

NemotronAsrStreamingFeatureExtractor

class transformers.NemotronAsrStreamingFeatureExtractor

< >

( feature_size = 80sampling_rate = 16000hop_length = 160n_fft = 512win_length = 400preemphasis = 0.97padding_value = 0.0mel_filters_dtype = 'float32'**kwargs )

パラメータ

  • feature_size (int、任意、デフォルトは 80) — 抽出された特徴量の次元数。
  • sampling_rate (int、任意、デフォルトは 16000) — オーディオファイルをデジタル化するためのサンプリングレート(ヘルツ (Hz) 表記)。
  • hop_length (int, 任意、デフォルトは 160) — Mel 周波数係数を取得するために使用される STFT の、重複ウィンドウの長さ。
  • n_fft (int、任意、デフォルトは 512) — フーリエ変換のサイズ。
  • win_length (int, 任意、デフォルトは 400) — STFT 計算に使用するウィンドウ長です。
  • preemphasis (float、任意、デフォルトは 0.97) — プリエンファシスフィルターの係数です。0.0 はプリエンファシスフィルターを適用しないことを意味します。
  • padding_value (float、任意、デフォルトは 0.0) — オーディオをパディングするために使用される値です。無音に対応する値である必要があります。
  • mel_filters_dtype (str、任意、デフォルトは "float32") — 保存される mel フィルターバンクと STFT ウィンドウの精度です。一部のチェックポイントでは、これらの定数が低減された精度で保持されています(Nemotron 3.5 Transcribe の場合は "bfloat16")。この場合、特徴量が計算される際にフィルターバンクとウィンドウは指定された dtype に丸められ、log-mel 特徴量が元のフロントエンドと一致するようになります。スペクトログラム自体は常に float32 で計算されます。

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

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

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

NemotronAsrStreamingProcessor

class transformers.NemotronAsrStreamingProcessor

< >

( feature_extractortokenizerblank_token = '<blank>'supported_num_lookahead_tokens = Nonedefault_num_lookahead_tokens = None )

パラメータ

  • feature_extractor (NemotronAsrStreamingFeatureExtractor) — フィーチャーエクストラクターは必須の入力です。
  • tokenizer (ParakeetTokenizer) — トークナイザーは必須の入力です。
  • blank_token (str、任意、デフォルトは "<blank>") — RNN-T 復号用の空白トークン。
  • supported_num_lookahead_tokens (list[int]、省略可) — モデルが学習された右側アテンションコンテキスト(サブサンプリングされたエンコーダーフレームにおけるルックアヘッド)です。 このセットの唯一の信頼できる情報源はプロセッサであり、set_num_lookahead_tokens() はこれに対して検証を行います。デフォルトでは、NeMo のキャッシュ対応セット [13, 6, 1, 0] が使用されます。
  • default_num_lookahead_tokens (int, 省略可) — ストリーミングチャンクのサイズ調整に使用され、call() によって出力される右コンテキストです。set_num_lookahead_tokens() で変更できます。デフォルトでは、supported_num_lookahead_tokens の最初のエントリが使用されます。

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

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

__call__

< >

( audio: typing.Union[numpy.ndarray, ForwardRef('torch.Tensor'), collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence['torch.Tensor']]text: str | list[str] | list[list[str]] | None = Nonesampling_rate: int | None = Noneis_streaming: bool = Falseis_first_audio_chunk: bool | None = True**kwargs: *<class 'transformers.models.nemotron_asr_streaming.processing_nemotron_asr_streaming.NemotronAsrStreamingProcessorKwargs'> ) → BatchFeature

パラメータ

  • audio (Union[numpy.ndarray, torch.Tensor, collections.abc.Sequence[numpy.ndarray], collections.abc.Sequence[torch.Tensor]]) — 準備対象のオーディオまたはオーディオのバッチです。各オーディオは NumPy 配列または PyTorch テンソルである必要があります。 NumPy 配列/PyTorch テンソルの場合、各オーディオの形状は (C, T) である必要があります。ここで C はチャネル数、T はオーディオのサンプル長です。
  • text (Union[str, list[str], list[list[str]]]、省略可) — エンコード対象のシーケンスまたはシーケンスのバッチです。各シーケンスは文字列、または文字列のリスト(事前トークン化済み文字列)であることができます。事前トークン化済みの入力を渡す場合は、バッチ入力との曖昧さを避けるために is_split_into_words=True を設定してください。
  • sampling_rate (int, 任意) — 入力オーディオのサンプリングレート (Hz) です。これは、feature extractor が想定するサンプリングレート (デフォルトは 16000 Hz) と一致する必要があります。指定された場合、processor が想定するサンプリングレートと照合され、一致しない場合はエラーが発生します。指定されなかった場合、警告が表示され、デフォルトのサンプリングレートが使用されます。
  • is_streaming (bool、任意、デフォルトは False) — ストリーミングモードでオーディオを処理するかどうか。True の場合、オーディオをチャンク単位で渡すことができ、is_first_audio_chunk を使用して最初のチャンクとそれ以降のチャンクを区別します。
  • is_first_audio_chunk (bool、省略可能、デフォルトは True) — 現在のオーディオがストリーミングセッションの最初のチャンクかどうかを示します。フィーチャーエクストラクターは、最初のチャンク(およびオフライン使用時)に center=True を、それ以降のチャンクに center=False を使用します。これにより、チャンクごとの STFT が、フレーム単位で単一の完全な発話パスを再現します。is_streaming=False の場合は、True である必要があります。
  • return_tensors (str または TensorType, 省略可) — 設定すると、特定のフレームワークのテンソルを返します。使用可能な値は以下の通りです:
    • 'pt': PyTorchのtorch.Tensorオブジェクトを返します。
    • 'np': NumPyのnp.ndarrayオブジェクトを返します。
  • **kwargs (ProcessingKwargs、任意) — 各モダリティ(テキスト、画像、動画、音声)の追加処理オプション。モデル固有のパラメータは上記にリストされています。サポートされている引数の完全なリストについては、TypedDictクラスを参照してください。

戻り値

BatchFeature

feature-extractor(および任意の tokenizer)の出力に、以下を追加したものです:

  • num_lookahead_tokens — 右側の注意コンテキスト(サブサンプリングされたエンコーダーフレームにおけるルックアヘッド)、すなわち default_num_lookahead_tokens(set_num_lookahead_tokens() で設定)です。モデル/エンコーダーの forward(または generate)に渡します。Voxtral Realtime の num_delay_tokens に相当する役割を果たします。

decode

< >

( *argsdurations = None**kwargs )

decode() に引数を転送し、NeMo ライブラリと同様に、durations が提供されている場合はトークンレベルのタイムスタンプを後処理します。

NemotronAsrStreamingEncoderModelOutput

class transformers.NemotronAsrStreamingEncoderModelOutput

< >

( last_hidden_state: typing.Optional[torch.FloatTensor] = Nonepooler_output: typing.Optional[torch.FloatTensor] = Nonehidden_states: tuple[torch.FloatTensor, ...] | None = Noneattentions: tuple[torch.FloatTensor, ...] | None = Noneattention_mask: typing.Optional[torch.Tensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Nonepadding_cache: transformers.models.nemotron_asr_streaming.modeling_nemotron_asr_streaming.NemotronAsrStreamingEncoderCausalConvPaddingCache | None = None )

パラメータ

  • last_hidden_state (torch.FloatTensor、形状 (batch_size, sequence_length, hidden_size)) — モデルの最終層の出力における隠れ状態のシーケンスです。
  • pooler_output (torch.FloatTensor、shape (batch_size, hidden_size)) — シーケンスの最初のトークン(分類トークン)の最終層の隠れ状態を、補助的な事前学習タスクに使用される層でさらに処理した後の出力です。例えば、BERT 系のモデルでは、線形層と tanh 活性化関数を経て処理された分類トークンを返します。この線形層の重みは、事前学習中の次文予測(分類)目的関数から学習されます。
  • hidden_states (tuple(torch.FloatTensor), 省略可能, が返されるのは 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), 省略可能, が返されるのは output_attentions=True が渡された場合、または config.output_attentions=True) — のタプル torch.FloatTensor (の形状を持つ、各レイヤーごとに1つの要素を含む (batch_size, num_heads, sequence_length, sequence_length).

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

  • attention_mask (torch.Tensor の形状 (batch_size, sequence_length), 、任意) — シーケンス圧縮後に、パディングトークンのインデックスに対してアテンションを実行しないためのマスク。入力シーケンスの長さと異なる可能性があるため返されます。マスクの値は [0, 1]:
    • マスクされていないトークンに対して1
    • マスクされたトークンに対しては 0 です。
  • past_key_values (Cache, 任意) — エンコーダーから返された、更新されたアテンション K/V スライディングウィンドウキャッシュ。次のチャンク呼び出しに渡します。
  • padding_cache (NemotronAsrStreamingEncoderCausalConvPaddingCache、optional) — サブサンプリング用の Conv2d 層と conformer の depthwise Conv1d を支える、統合されたストリーミングキャッシュです。

ParakeetEncoderModelOutputを拡張し、オプションのストリーミングキャッシュを追加します。キャッシュは、use_cache=Trueの場合にのみ、キャッシュ対応モデルで設定されます。

NemotronAsrStreamingRNNTOutput

class transformers.NemotronAsrStreamingRNNTOutput

< >

( last_hidden_state: typing.Optional[torch.FloatTensor] = Nonepooler_output: typing.Optional[torch.FloatTensor] = Nonehidden_states: tuple[torch.FloatTensor, ...] | None = Noneattentions: tuple[torch.FloatTensor, ...] | None = Noneloss: typing.Optional[torch.FloatTensor] = Nonelogits: typing.Optional[torch.FloatTensor] = Nonedecoder_cache: transformers.models.nemotron_asr_streaming.generation_nemotron_asr_streaming.NemotronAsrStreamingRNNTDecoderCache | None = Noneencoder_past_key_values: transformers.cache_utils.Cache | None = Nonepadding_cache: transformers.models.nemotron_asr_streaming.modeling_nemotron_asr_streaming.NemotronAsrStreamingEncoderCausalConvPaddingCache | None = None )

encoder_past_key_values (Cache, 任意): use_cache=True でオーディオをエンコードする際に返される、更新されたエンコーダーアテンションの K/V スライディングウィンドウキャッシュです (キャッシュ対応ストリーミング)。次のチャンクの forward に渡してください。 padding_cache (NemotronAsrStreamingEncoderCausalConvPaddingCache, 任意): use_cache=True でオーディオをエンコードする際に返される、更新された統合ストリーミング conv キャッシュ (サブサンプリング Conv2d + conformer depthwise Conv1d) です。次のチャンクの forward に渡してください。

NemotronAsrStreamingEncoder

class transformers.NemotronAsrStreamingEncoder

< >

( config: NemotronAsrStreamingEncoderConfig )

パラメータ

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

Fast ConformerアーキテクチャをベースにしたNemotronAsrStreaming Encoderモデル。

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

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

forward

< >

( input_features: Tensorattention_mask: typing.Optional[torch.Tensor] = Noneposition_ids: typing.Optional[torch.LongTensor] = Nonepast_key_values: transformers.cache_utils.Cache | None = Noneoutput_attention_mask: bool = Trueuse_cache: bool | None = Nonepadding_cache: transformers.models.nemotron_asr_streaming.modeling_nemotron_asr_streaming.NemotronAsrStreamingEncoderCausalConvPaddingCache | None = Nonenum_lookahead_tokens: int | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → BaseModelOutput or tuple(torch.FloatTensor)

パラメータ

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

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

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

    ポジションIDとは?

  • past_key_values (Cache, 任意) — キャッシュ対応ストリーミングアテンション用のスライディングウィンドウ K/V キャッシュ(config.sliding_window から構築された DynamicCache)。
  • output_attention_mask (bool、任意、デフォルトは True) — 出力アテンションマスクを返すかどうか。attention_mask が指定されている場合のみ有効です。
  • use_cache (bool、任意) — True に設定すると、past_key_values のキーバリュー状態が返され、デコーディングの高速化に利用できます(past_key_values を参照)。
  • padding_cache (NemotronAsrStreamingEncoderCausalConvPaddingCache、optional) — サブサンプリング用の Conv2d 層と conformer の depthwise Conv1d を支える、統合されたストリーミングキャッシュです。
  • num_lookahead_tokens (int, 省略可) — この forward pass における右側の attention コンテキスト(サブサンプリングされたエンコーダーフレームにおける lookahead)のオーバーライドです。左コンテキスト config.sliding_window - 1 と組み合わせて使用されます。デフォルト値は config.default_num_lookahead_tokens です。

戻り値

BaseModelOutput または tuple(torch.FloatTensor)

None や入力に応じて、さまざまな要素で構成される BaseModelOutput または torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)。

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

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

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

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

例:

>>> from transformers import AutoProcessor, NemotronAsrStreamingEncoder
>>> from datasets import load_dataset, Audio

>>> model_id = "nvidia/nemotron-speech-streaming-en-0.6b"
>>> processor = AutoProcessor.from_pretrained(model_id)
>>> encoder = NemotronAsrStreamingEncoder.from_pretrained(model_id)

>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> ds = ds.cast_column("audio", Audio(sampling_rate=processor.feature_extractor.sampling_rate))

>>> inputs = processor(ds[0]["audio"]["array"])
>>> encoder_outputs = encoder(**inputs)

>>> print(encoder_outputs.last_hidden_state.shape)

NemotronAsrStreamingForRNNT

class transformers.NemotronAsrStreamingForRNNT

< >

( config: NemotronAsrStreamingConfig )

パラメータ

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

RNN-T(Recurrent Neural Network Transducer)ヘッドを備えたNemotronAsrStreaming Encoder。

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

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

forward

< >

( input_features: typing.Optional[torch.Tensor] = Noneattention_mask: typing.Optional[torch.Tensor] = Nonedecoder_input_ids: typing.Optional[torch.LongTensor] = Nonedecoder_cache: transformers.models.nemotron_asr_streaming.generation_nemotron_asr_streaming.NemotronAsrStreamingRNNTDecoderCache | None = Noneuse_decoder_cache: bool | None = Noneencoder_outputs: transformers.models.nemotron_asr_streaming.modeling_nemotron_asr_streaming.NemotronAsrStreamingEncoderModelOutput | None = Nonelabels: typing.Optional[torch.Tensor] = Nonenum_lookahead_tokens: int | None = None**kwargs: *<class 'transformers.utils.generic.TransformersKwargs'> ) → NemotronAsrStreamingRNNTOutput or tuple(torch.FloatTensor)

パラメータ

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

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

  • decoder_input_ids (torch.LongTensor、形状 (batch_size, 1)、任意) — 単一ステップ推論用のデコーダー入力トークンID。
  • decoder_cache (NemotronAsrStreamingRNNTDecoderCache、optional) — デコーダのLSTMキャッシュです。空白(blank)の予測時に再利用され、LSTMステップをスキップします。
  • use_decoder_cache (bool, 省略可) — デコーダキャッシュが提供されていない場合に、デコーダキャッシュを割り当てて使用するかどうかを指定します。
  • encoder_outputs (NemotronAsrStreamingEncoderModelOutput、任意) — 事前計算されたエンコーダーの出力(last_hidden_state、pooler_output など)。
  • labels (torch.Tensor、shape (batch_size, sequence_length)、任意) — マスク言語モデリング損失を計算するためのラベルです。インデックスは [0, ..., config.vocab_size] の範囲内であるか、-100 である必要があります(input_ids のドキュメント文字列を参照)。インデックスが -100 に設定されたトークンは無視(マスク)され、損失は [0, ..., config.vocab_size] の範囲内のラベルを持つトークンに対してのみ計算されます。
  • num_lookahead_tokens (int, 任意) — エンコーダーに転送される右側のアテンションコンテキスト(サブサンプリングされたエンコーダーフレームにおけるルックアヘッド)。 デフォルト値は config.encoder_config.default_num_lookahead_tokens です。

戻り値

NemotronAsrStreamingRNNTOutput または tuple(torch.FloatTensor)

None や入力に応じて、さまざまな要素で構成される NemotronAsrStreamingRNNTOutput または torch.FloatTensor のタプル(return_dict=False が渡された場合、または config.return_dict=False の場合)。

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

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

  • encoder_past_key_values (Cache、任意) — use_cache=True でオーディオをエンコードする際に返される、更新されたエンコーダーアテンションの K/V スライディングウィンドウキャッシュ(キャッシュ対応ストリーミング)。次のチャンクの forward に渡します。
  • padding_cache (NemotronAsrStreamingEncoderCausalConvPaddingCache、optional) — 更新された統合ストリーミング conv キャッシュ(サブサンプリング Conv2d + conformer depthwise Conv1d)。use_cache=True でオーディオをエンコードする際に返されます。次のチャンクの forward に渡してください。

例:

>>> from transformers import AutoProcessor, NemotronAsrStreamingForRNNT
>>> from datasets import load_dataset, Audio

>>> model_id = "nvidia/nemotron-speech-streaming-en-0.6b"
>>> processor = AutoProcessor.from_pretrained(model_id)
>>> model = NemotronAsrStreamingForRNNT.from_pretrained(model_id)

>>> ds = load_dataset("hf-internal-testing/librispeech_asr_dummy", "clean", split="validation")
>>> ds = ds.cast_column("audio", Audio(sampling_rate=processor.feature_extractor.sampling_rate))

>>> inputs = processor(ds[0]["audio"]["array"])
>>> outputs = model(**inputs)

generate

< >

( inputs = Nonegeneration_config = None**kwargs )

Update on GitHub