重要提示
您正在查看 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_ds
、validation_ds
和 test_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 有一些即时频谱图增强选项,可以通过使用 augmentor
和 spec_augment
部分的配置文件来指定。有关如何编写此部分的详细信息,请参阅 增强配置
检查 <NeMo_git_root>/tutorials/asr/conf
中的 config yaml 文件,以查找语音分类模型使用的处理器。
模型架构配置#
每个配置文件都应描述用于实验的模型架构。NeMo ASR 集合中的模型需要 encoder
部分和 decoder
部分,其中 _target_
字段指定要用于每个部分的模块。
以下各节将更详细地介绍每种模型架构的具体配置。
MatchboxNet 和 MarbleNet 模型非常相似,它们基于 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'
微调执行流程图#
在准备您自己的训练或微调脚本时,请遵循执行流程图顺序以进行正确的推理。
根据模型类型的不同,可能需要执行额外的步骤 -
语音分类模型 - 分类模型示例目录