重要提示

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

NeMo 语音分类配置文件#

本页介绍 NeMo 配置文件设置,该设置特定于语音分类集合中的模型。有关如何设置和运行所有 NeMo 模型通用的实验(例如,实验管理器和 PyTorch Lightning 训练器参数)的常规信息,请参阅 NeMo 模型 页面。

NeMo 语音分类配置文件的模型部分通常需要有关正在使用的数据集、音频文件的预处理器、正在执行的任何增强的参数以及模型架构规范的信息。本页的各节更详细地介绍了其中的每一项。

所有 NeMo ASR 脚本的示例配置文件都可以在 <NeMo_git_root>/examples/asr/conf> 中找到。

数据集配置#

训练、验证和测试参数分别使用配置文件的 train_dsvalidation_dstest_ds 部分指定。根据任务的不同,您可能有指定音频文件采样率、标签、是否打乱数据集等的参数。您也可以决定将 manifest_filepath 等字段留空,以便在运行时通过命令行指定。

在配置文件中可以设置实验中使用的 Dataset 类接受的任何初始化参数。有关数据集及其各自参数的列表,请参阅 API 的 Datasets 部分。

语音分类训练和验证配置示例可能如下所示

model:
  sample_rate: 16000
  repeat: 2 # number of convolutional sub-blocks within a block, R in <MODEL>_[BxRxC]
  dropout: 0.0
  kernel_size_factor: 1.0
  labels: ['bed', 'bird', 'cat', 'dog', 'down', 'eight', 'five', 'four', 'go', 'happy', 'house', 'left', 'marvin',
  'nine', 'no', 'off', 'on', 'one', 'right', 'seven', 'sheila', 'six', 'stop', 'three', 'tree', 'two', 'up',
  'wow', 'yes', 'zero']

  train_ds:
    manifest_filepath: ???
    sample_rate: ${model.sample_rate}
    labels: ${model.labels} # Uses the labels above
    batch_size: 128
    shuffle: True

  validation_ds:
    manifest_filepath: ???
    sample_rate: ${model.sample_rate}
    labels: ${model.labels} # Uses the labels above
    batch_size: 128
    shuffle: False # No need to shuffle the validation data

如果您想使用 tarred 数据集,请查看 数据集配置

预处理器配置#

预处理器有助于计算 MFCC 或 mel 频谱图特征,这些特征作为模型的输入。有关如何编写此部分的详细信息,请参阅 预处理器配置

检查 <NeMo_git_root>/examples/asr/conf 中的 config yaml 文件,以查找语音分类模型使用的处理器。

增强配置#

NeMo ASR 有一些即时频谱图增强选项,可以通过使用 augmentorspec_augment 部分的配置文件来指定。有关如何编写此部分的详细信息,请参阅 增强配置

检查 <NeMo_git_root>/tutorials/asr/conf 中的 config yaml 文件,以查找语音分类模型使用的处理器。

模型架构配置#

每个配置文件都应描述用于实验的模型架构。NeMo ASR 集合中的模型需要 encoder 部分和 decoder 部分,其中 _target_ 字段指定要用于每个部分的模块。

以下各节将更详细地介绍每种模型架构的具体配置。

MatchboxNetMarbleNet 模型非常相似,它们基于 QuartzNet,因此其配置中的组件也非常相似。

解码器配置#

从 ConvASREncoder 计算出特征后,我们将特征传递给解码器以计算嵌入,然后计算 log_probs 以训练模型。

model:
  ...
  decoder:
    _target_: nemo.collections.asr.modules.ConvASRDecoderClassification
    feat_in: *enc_final_filters
    return_logits: true # return logits if true, else return softmax output
    pooling_type: 'avg' # AdaptiveAvgPool1d 'avg' or AdaptiveMaxPool1d 'max'

微调执行流程图#

在准备您自己的训练或微调脚本时,请遵循执行流程图顺序以进行正确的推理。

根据模型类型的不同,可能需要执行额外的步骤 -