重要提示
您正在查看 NeMo 2.0 文档。此版本对 API 和新库 NeMo Run 进行了重大更改。我们目前正在将 NeMo 1.0 的所有功能移植到 2.0。有关先前版本或 2.0 中尚不可用的功能的文档,请参阅 NeMo 24.07 文档。
检查点#
在 NeMo 中加载预训练检查点主要有两种方法
使用
restore_from()
方法加载本地检查点文件 (.nemo),或使用
from_pretrained()
方法从 NGC 下载并设置检查点。
请参阅以下部分,获取每种方法的说明和示例。
请注意,这些说明用于加载完全训练好的检查点以进行评估或微调。对于恢复未完成的训练实验,请使用实验管理器,方法是将 resume_if_exists
标志设置为 True。
加载本地检查点#
NeMo 会自动以 .nemo 格式保存您正在训练的模型的检查点。您也可以随时使用 model.save_to(<checkpoint_path>.nemo)
手动保存模型。
如果您有本地 .nemo
检查点想要加载,只需使用 restore_from()
方法
import nemo.collections.asr as nemo_asr
model = nemo_asr.models.<MODEL_BASE_CLASS>.restore_from(restore_path="<path/to/checkpoint/file.nemo>")
其中模型基类是原始检查点的 ASR 模型类,或通用的 ASRModel 类。
转录/推理#
音频文件应为 16KHz 单声道 wav 文件。
转录语音命令片段
您可以在加载模型后使用其“transcribe()”方法执行推理并转录语音样本
mbn_model = nemo_asr.models.EncDecClassificationModel.from_pretrained(model_name="<MODEL_NAME>")
mbn_model.transcribe([list of audio files], batch_size=BATCH_SIZE, logprobs=False)
将参数 logprobs
设置为 True 将返回对数概率而不是转录。您可以在 模块 中找到更多详细信息。
了解如何微调您自己的数据或 <NeMo_git_root>/tutorials/asr/Speech_Commands.ipynb
中的子集类
运行 VAD 推理
python <NeMo-git-root>/examples/asr/speech_classification/vad_infer.py --config-path="../conf/vad" --config-name="vad_inference_postprocessing.yaml" dataset=<Path of json file of evaluation data. Audio files should have unique names>
此脚本将执行 vad 帧级预测,并帮助您执行后处理并在需要时生成语音段。
查看配置文件 <NeMo-git-root>/examples/asr/conf/vad/vad_inference_postprocessing.yaml
和 <NeMo-git-root>/scripts/voice_activity_detection
下的脚本,了解有关后验处理、后处理和阈值调整的详细信息。
后验处理包括使用重叠输入段生成预测。然后应用平滑滤波器来确定多个段跨越的帧的标签。
对于 VAD 后处理,我们引入了
- 二值化
onset
和offset
阈值,用于检测语音的开始和结束。填充持续时间
pad_onset
在每个语音段之前和填充持续时间pad_offset
之后;
- 过滤
min_duration_on
短语音段删除的阈值,min_duration_on
小静音删除的阈值,filter_speech_first
控制是否首先执行短语音段删除。
识别话语的语言
您可以加载模型并使用 get_label() 方法识别音频文件的语言
langid_model = nemo_asr.models.EncDecSpeakerLabelModel.from_pretrained(model_name="<MODEL_NAME>")
lang = langid_model.get_label('<audio_path>')
或者您可以运行 batch_inference() 以对清单执行推理,使用选定的 batch_size 获取训练的模型标签和带有 logits 的 gt_labels
langid_model = nemo_asr.models.EncDecSpeakerLabelModel.from_pretrained(model_name="<MODEL_NAME>")
lang_embs, logits, gt_labels, trained_labels = langid_model.batch_inference(manifest_filepath, batch_size=32)
NGC 预训练检查点#
语音分类集合具有在各种数据集上针对各种任务训练的多个模型的检查点。这些检查点可通过 NGC NeMo 自动语音识别集合 获取。NGC 上的模型卡包含有关每个可用检查点的更多信息。
下表列出了 NGC 提供的语音分类模型,可以通过 ASR 模型类中的 from_pretrained()
方法访问这些模型。
通常,您可以使用以下格式的代码加载任何这些模型。
import nemo.collections.asr as nemo_asr
model = nemo_asr.models.EncDecClassificationModel.from_pretrained(model_name="<MODEL_NAME>")
其中模型名称是下表“模型名称”条目下的值。
例如,要加载用于语音命令检测的 MatchboxNet3x2x64_v1 模型,请运行
model = nemo_asr.models.EncDecClassificationModel.from_pretrained(model_name="commandrecognition_en_matchboxnet3x2x64_v1")
如果您需要访问特定的模型功能,您也可以从特定的模型类(例如 MatchboxNet 和 MarbleNet 的 EncDecClassificationModel
)调用 from_pretrained()
。
如果您想以编程方式列出特定基类可用的模型,可以使用 list_available_models()
方法。
nemo_asr.models.<MODEL_BASE_CLASS>.list_available_models()