重要提示

您正在查看 NeMo 2.0 文档。此版本对 API 和新库 NeMo Run 进行了重大更改。我们目前正在将 NeMo 1.0 中的所有功能移植到 2.0。有关先前版本或 2.0 中尚不可用的功能的文档,请参阅 NeMo 24.07 文档

NeMo 语音意图分类和槽位填充集合 API#

模型类#

Mixin 类#

class nemo.collections.asr.parts.mixins.ASRModuleMixin

基类:ASRAdapterModelMixin

ASRModuleMixin 是添加到 ASR 模型的 mixin 类,目的是添加特定于 ASRModel 内部模块特定实例化的方法。

每个方法都应首先检查模块是否存在于子类中,并在相应的模块存在时支持附加功能。

change_attention_model(
self_attention_model: str | None = None,
att_context_size: List[int] | None = None,
update_config: bool = True,
)

如果编码器中存在该功能,则更新 self_attention_model。

参数:
  • self_attention_model (str) –

    注意力层和位置编码的类型

    “rel_pos”

    相对位置嵌入和 Transformer-XL

    “rel_pos_local_attn”

    相对位置嵌入和 Transformer-XL,具有使用重叠窗口的局部注意力。注意力上下文由 att_context_size 参数确定。

    “abs_pos”

    绝对位置嵌入和 Transformer

    如果提供 None,则 self_attention_model 不会更改。默认为 None。

  • att_context_size (List[int]) – 对应于左右注意力上下文大小的 2 个整数的列表,如果为 None,则保持原样。默认为 None。

  • update_config (bool) – 是否使用新的注意力模型更新配置。默认为 True。

change_conv_asr_se_context_window(
context_window: int,
update_config: bool = True,
)

如果提供的模型包含作为 ConvASREncoder 实例的 encoder,则更新 SqueezeExcitation 模块的上下文窗口。

参数:
  • context_window

    一个整数,表示用于计算上下文的输入时间帧数。每个时间帧对应于 STFT 特征的单个窗口步长。

    假设 window_stride = 0.01 秒,则上下文窗口 128 表示 128 * 0.01 秒的上下文来计算 Squeeze 步骤。

  • update_config – 是否使用新的上下文窗口更新配置。

change_subsampling_conv_chunking_factor(
subsampling_conv_chunking_factor: int,
update_config: bool = True,
)

如果编码器中存在该功能,则更新 conv_chunking_factor (int)。默认为 1(自动)如果 conv 子采样层中出现 OOM,则将其设置为 -1(禁用)或特定值(2 的幂)

参数:

conv_chunking_factor (int)

conformer_stream_step(
processed_signal: torch.Tensor,
processed_signal_length: torch.Tensor | None = None,
cache_last_channel: torch.Tensor | None = None,
cache_last_time: torch.Tensor | None = None,
cache_last_channel_len: torch.Tensor | None = None,
keep_all_outputs: bool = True,
previous_hypotheses: List[Hypothesis] | None = None,
previous_pred_out: torch.Tensor | None = None,
drop_extra_pre_encoded: int | None = None,
return_transcription: bool = True,
return_log_probs: bool = False,
)

它模拟了具有缓存的前向步骤,用于流式传输目的。它支持编码器支持流式传输的 ASR 模型,例如 Conformer。 :param processed_signal: 输入音频信号 :param processed_signal_length: 音频的长度 :param cache_last_channel: 最后一个通道层(如 MHA)的缓存张量 :param cache_last_channel_len: cache_last_channel 的长度 :param cache_last_time: 最后一个时间层(如卷积)的缓存张量 :param keep_all_outputs: 如果设置为 True,则不会删除 encoder.streaming_cfg.valid_out_len 指定的额外输出 :param previous_hypotheses: 来自 RNNT 模型上一步的假设 :param previous_pred_out: 来自 CTC 模型上一步的预测输出 :param drop_extra_pre_encoded: 从下采样模块之后的输出开始删除的步数。如果在输入的左侧添加了额外的填充,则可以使用此参数。 :param return_transcription: 是否解码并返回转录。对于 Transducer 模型,无法禁用此参数。 :param return_log_probs: 是否返回对数概率,仅对 ctc 模型有效

返回:

解码器的贪婪预测 all_hyp_or_transcribed_texts:Transducer 模型的解码器假设和 CTC 模型的转录 cache_last_channel_next:更新后的最后一个通道层张量缓存,用于下一步流式传输 cache_last_time_next:更新后的最后一个时间层张量缓存,用于下一步流式传输 cache_last_channel_next_len:更新后的 cache_last_channel 长度 best_hyp:Transducer 模型的最佳假设 log_probs:当前流式传输块的 logits 张量,仅在 return_log_probs=True 时返回 encoded_len:输出 log_probs + 历史块 log_probs 的长度,仅在 return_log_probs=True 时返回

返回类型:

greedy_predictions

transcribe_simulate_cache_aware_streaming(
paths2audio_files: List[str],
batch_size: int = 4,
logprobs: bool = False,
return_hypotheses: bool = False,
online_normalization: bool = False,
)
参数:
  • paths2audio_files – 音频文件路径的列表。

  • batch_size – 在推理期间使用的批大小(int)。越大将产生更好的吞吐量性能,但会使用更多内存。

  • logprobs – (bool) 传递 True 以获取对数概率而不是转录。

  • return_hypotheses – (bool) 返回假设或文本。使用假设可以进行一些后处理,例如获取时间戳或重新评分

  • online_normalization – (bool) 对每个块的运行执行归一化。

返回:

与 paths2audio_files 顺序相同的转录列表(如果 logprobs 为 True,则为原始对数概率)

class nemo.collections.asr.parts.mixins.ASRBPEMixin

基类:ABC

ASR BPE Mixin 类,通过配置设置分词器

此 mixin 类添加了方法 _setup_tokenizer(…),ASR 模型可以使用该方法,这些模型依赖于子词分词。

setup_tokenizer 方法向类添加以下参数 -
  • tokenizer_cfg:提供给分词器的已解析配置(带有 dirtype 参数)。

  • tokenizer_dir:分词器词汇表 + 其他元数据的目录路径。

  • tokenizer_type:分词器的类型。当前支持 bpewpe 以及 agg

  • vocab_path:词汇表文本文件的已解析路径。

除了这些变量之外,如果成功,该方法还将实例化并保留分词器(TokenizerSpec 的子类),并将其分配给 self.tokenizer。

mixin 还支持聚合分词器,聚合分词器由普通单语分词器组成。如果检测到单语分词器和聚合分词器(或反之亦然)之间的转换,则将清理所有注册的工件。

save_tokenizers(directory: str)

将模型分词器保存到指定目录。

参数:

directory – 要将分词器保存到的目录。