Transformers documentation

Nemotron ASR 流式

Hugging Face's logo
Join the Hugging Face community

and get access to the augmented documentation experience

to get started

该模型于 2023-05-08 在 HF papers 上发布,并于 2026-06-18 贡献至 Hugging Face Transformers。

Nemotron ASR 流式

概述

Nemotron ASR Streaming 是 NVIDIA 推出的 6 亿参数英语语音识别模型,专为低延迟流式和高吞吐批量场景下的高质量转录而构建,并原生支持标点符号和大小写。在流式处理方面,它提供可配置的块大小——80ms、160ms、560ms 和 1120ms,允许用户根据应用需求在延迟与准确性之间进行权衡。其缓存感知的 FastConformer-RNNT 架构是这一能力的核心:与反复重新处理重叠音频窗口的传统缓冲式流式处理不同,该模型仅处理每个新到达的块,同时复用来自先前块的缓存编码器上下文。这消除了冗余计算,显著提升了效率,并在不牺牲准确性的前提下将端到端延迟降至最低,使其非常适合实时转录工作负载。

用法

离线转录

Pipeline
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 决定,即每个块在输出前等待的右侧注意力上下文(在子采样编码器帧中的前瞻)。较大的值使每个块能看到更多的未来音频:以更高的延迟为代价换取更高的准确性。查看支持的权衡选项,选择其中一个,并读取由此产生的延迟:

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(在上面的代码片段中,它通过 **inputs/**first_chunk_inputs 传递,其中包含 num_lookahead_tokens)。流式 generate 在省略该参数时会抛出异常。

NemotronAsrStreamingConfig

class 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 可以表示的不同 token 数量。
  • 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) — 词表中用于填充的 token id。
  • blank_token_id (int,可选,默认为 1024) — 空白 token 的 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) — 注意力概率的 dropout 比率。
  • 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 —— 在所有支持的 lookahead 中均相同。
  • 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) — 用于获取梅尔频率系数的 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,从而使对数 mel 特征与原始前端保持一致;而频谱图本身始终在 float32 下计算。

构建 NemotronAsrStreaming 特征提取器。

该特征提取器继承自 SequenceFeatureExtractor,其中包含了大部分主要方法。用户应参考该父类以获取有关这些方法的更多信息。

此类使用自定义的 numpy 实现的Short Time Fourier Transform从原始语音中提取 mel 滤波器组特征,其结果应与 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],可选) — 模型训练时使用的右侧注意力上下文(即子采样编码器帧中的 lookahead)。 处理器是该集合的唯一权威来源: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.processing_utils.ProcessingKwargs'> ) → 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。该值应与特征提取器所期望的采样率一致(默认为 16000 Hz)。如果提供了该参数,则会将其与处理器所期望的采样率进行校验,若两者不匹配则抛出错误。如果未提供,则会发出警告并假定使用默认采样率。
  • 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_mm_token_type_ids (bool, kwargs) — 是否返回多模态 token 类型 id,用于指示多模态占位符 token 的位置。
  • return_text_replacement_offsets (bool, kwargs) — 是否返回每个多模态占位符及其替换内容的字符偏移量。
  • return_tensors (str 或 TensorType, 可选) — 如果设置,将返回特定框架的张量。可接受的值为:
    • 'pt':返回 PyTorch torch.Tensor 对象。
    • 'np':返回 NumPy np.ndarray 对象。
  • **kwargs (ProcessingKwargs,可选) — 每种模态(文本、图像、视频、音频)的额外处理选项。模型特定参数已在上方列出;有关支持参数的完整列表,请参阅 TypedDict 类。

返回值

BatchFeature

特征提取器(以及可选的分词器)的输出,并补充以下内容:

  • num_lookahead_tokens — 右侧注意力上下文(在子采样编码器帧中的前瞻), 即 default_num_lookahead_tokens(通过 set_num_lookahead_tokens() 设置)。 将其传递给模型/编码器的前向传播(或 generate);它的作用相当于 Voxtral Realtime 的 num_delay_tokens。

decode

< >

( *argsdurations = None**kwargs )

将参数传递给 decode(),并像 NeMo 库那样对 token 级时间戳进行后处理(如果提供了 durations)。

NemotronAsrStreamingEncoderModelOutput

class transformers.NemotronAsrStreamingEncoderModelOutput

< >

( last_hidden_state: typing.Optional[torch.Tensor] = Nonepooler_output: typing.Optional[torch.Tensor] = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | 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.Tensor,形状为 (batch_size, sequence_length, hidden_size)) — 模型最后一层输出的隐藏状态序列。
  • pooler_output (torch.Tensor,形状为 (batch_size, hidden_size)) — 序列中第一个 token(分类 token)的最后一层隐藏状态,经过用于辅助预训练任务的层进一步处理后的结果。例如,对于 BERT 系列模型,这返回的是分类 token 经过线性层和 tanh 激活函数处理后的结果。线性层的权重在预训练期间通过下一句预测(分类)目标进行训练。
  • hidden_states (tuple(torch.Tensor), 可选, 当传入 output_hidden_states=True 或 config.output_hidden_states=True) — 的元组 torch.Tensor ((如果模型有嵌入层,则包含嵌入层输出的一个张量,加上每一层输出的一个张量),形状为 (batch_size, sequence_length, hidden_size).

    模型在每一层输出处的隐藏状态,以及可选的初始嵌入输出。

  • attentions (tuple(torch.Tensor), 可选, 在传入 output_attentions=True 或 config.output_attentions=True) — 的元组 torch.Tensor ((每层一个),形状为 (batch_size, num_heads, sequence_length, sequence_length).

    注意力权重,即经过注意力 softmax 之后的权重,用于在自注意力头中计算加权平均值。

  • attention_mask (torch.Tensor 形状为 (batch_size, sequence_length), ,可选) — 用于在序列压缩后避免对填充 token 索引执行注意力的掩码。由于序列长度可能与输入序列长度不同,因此会返回该掩码。掩码值取自 [0, 1]:
    • 1 表示未被屏蔽的 token,
    • 对于被掩码的 token,值为 0。
  • past_key_values (Cache,可选) — 来自编码器的已更新注意力 K/V 滑动窗口缓存。请将其传递给下一个分块调用。
  • padding_cache (NemotronAsrStreamingEncoderCausalConvPaddingCache,可选) — 为子采样 Conv2d 层和 conformer 深度可分离 Conv1d 提供支持的统一流式缓存。

扩展了 ParakeetEncoderModelOutput,并支持可选的流式缓存。仅当 use_cache=True 时,才会为支持缓存的模型填充缓存。

NemotronAsrStreamingRNNTOutput

class transformers.NemotronAsrStreamingRNNTOutput

< >

( last_hidden_state: typing.Optional[torch.Tensor] = Nonepooler_output: typing.Optional[torch.Tensor] = Nonehidden_states: tuple[torch.Tensor, ...] | None = Noneattentions: tuple[torch.Tensor, ...] | None = Noneloss: typing.Optional[torch.Tensor] = Nonelogits: typing.Optional[torch.Tensor] = 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, 可选): 更新后的编码器注意力 K/V 滑动窗口缓存,在使用 use_cache=True 对音频进行编码时返回(支持缓存的流式处理)。请将其传递给下一个数据块的 forward。 padding_cache (NemotronAsrStreamingEncoderCausalConvPaddingCache, 可选): 更新后的统一流式卷积缓存(下采样 Conv2d + conformer 深度可分离 Conv1d),在使用 use_cache=True 对音频进行编码时返回。请将其传递给下一个数据块的 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.Tensor)

参数

  • 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), ,可选) — 用于避免对填充 token 索引执行注意力机制的掩码。掩码值取自 [0, 1]:
    • 1 表示未被屏蔽的 token,
    • 对于被掩码的 token,值为 0。

    什么是注意力掩码?

  • position_ids (torch.LongTensor 形状为 (batch_size, sequence_length), 可选) — 输入序列中每个 token 在位置嵌入中的位置索引。取值范围为 [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,可选) — 为子采样 Conv2d 层和 conformer 深度可分离 Conv1d 提供支持的统一流式缓存。
  • num_lookahead_tokens (int, 可选) — 用于覆盖本次前向传播中右侧注意力上下文(即子采样编码器帧中的前瞻部分)。与左侧上下文 config.sliding_window - 1 结合使用。默认值为 config.default_num_lookahead_tokens。

返回值

BaseModelOutput 或 tuple(torch.Tensor)

一个 BaseModelOutput 或 torch.Tensor 元组(如果传入了 return_dict=False 或 config.return_dict=False),其包含的元素取决于配置(None)和输入。

NemotronAsrStreamingEncoder 的 forward 方法重写了 __call__ 特殊方法。

尽管前向传播的实现需要在此函数中定义,但之后应调用 Module 实例,而不是直接调用此函数,因为前者会负责执行预处理和后处理步骤,而后者则会静默地忽略这些步骤。

  • last_hidden_state(形状为 (batch_size, sequence_length, hidden_size) 的 torch.Tensor)— 模型最后一层输出的隐藏状态序列。

  • hidden_states (tuple(torch.Tensor),可选,当传入 output_hidden_states=True 或 config.output_hidden_states=True 时返回) — 一个 torch.Tensor 元组(如果模型具有嵌入层,则包含嵌入层的输出,以及每一层的输出),形状为 (batch_size, sequence_length, hidden_size)。

    模型在每一层输出处的隐藏状态,以及可选的初始嵌入输出。

  • attentions (tuple(torch.Tensor),可选,当传入 output_attentions=True 或 config.output_attentions=True 时返回) — 一个 torch.Tensor 元组(每层一个),形状为 (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() 方法以加载模型权重。

NemotronAsrStreaming 编码器,带有 RNN-T(循环神经网络转换器)头。

该模型继承自 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.Tensor)

参数

  • 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), ,可选) — 用于避免对填充 token 索引执行注意力机制的掩码。掩码值取自 [0, 1]:
    • 1 表示未被屏蔽的 token,
    • 对于被掩码的 token,值为 0。

    什么是注意力掩码?

  • decoder_input_ids (torch.LongTensor,形状为 (batch_size, 1),可选) — 用于单步推理的解码器输入 token id。
  • decoder_cache (NemotronAsrStreamingRNNTDecoderCache,可选) — 解码器 LSTM 缓存。在预测为空白时复用,以跳过 LSTM 步骤。
  • use_decoder_cache (bool,可选) — 在未提供解码器缓存时,是否分配并使用解码器缓存。
  • encoder_outputs (NemotronAsrStreamingEncoderModelOutput,可选) — 预计算的编码器输出(last_hidden_state、pooler_output 等)。
  • labels(形状为 (batch_size, sequence_length) 的 torch.Tensor,可选)— 用于计算掩码语言建模损失的标签。索引值应在 [0, ..., config.vocab_size] 范围内,或为 -100(参见 input_ids 的文档字符串)。索引值设为 -100 的 token 将被忽略(即被掩码),损失仅针对标签位于 [0, ..., config.vocab_size] 范围内的 token 进行计算。
  • num_lookahead_tokens (int, 可选) — 转发给编码器的右侧注意力上下文(前瞻,以子采样编码器帧为单位)。 默认值为 config.encoder_config.default_num_lookahead_tokens。

返回值

NemotronAsrStreamingRNNTOutput 或 tuple(torch.Tensor)

一个 NemotronAsrStreamingRNNTOutput 或 torch.Tensor 元组(如果传入了 return_dict=False 或当 config.return_dict=False 时),包含根据配置(None)和输入而定的各种元素。

NemotronAsrStreamingForRNNT 的 forward 方法重写了 __call__ 特殊方法。

尽管前向传播的实现需要在此函数中定义,但之后应调用 Module 实例,而不是直接调用此函数,因为前者会负责执行预处理和后处理步骤,而后者则会静默地忽略这些步骤。

  • encoder_past_key_values(Cache,可选)——更新后的编码器注意力 K/V 滑动窗口缓存,在使用 use_cache=True 对音频进行编码时返回(支持缓存的流式处理)。请将其传入下一个数据块的 forward 调用中。
  • padding_cache (NemotronAsrStreamingEncoderCausalConvPaddingCache,可选) — 更新后的统一流式卷积缓存(子采样 Conv2d + conformer 深度可分离 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