重要
您正在查看 NeMo 2.0 文档。此版本引入了 API 的重大更改和一个新库,NeMo Run。我们目前正在将所有功能从 NeMo 1.0 移植到 2.0。有关以前版本或 2.0 中尚未提供的功能的文档,请参阅 NeMo 24.07 文档。
检查点#
在 NeMo 中加载预训练检查点主要有两种方法,如加载 ASR 检查点中所介绍的。在说话人日志中,日志器加载通过配置文件传递的检查点。
端到端说话人日志模型#
Sortformer 日志器训练#
使用以下命令训练 Sortformer 日志器模型。
# Feed the config for Sortformer diarizer model training
python ${NEMO_ROOT}/examples/speaker_tasks/diarization/neural_diarizer/sortformer_diar_train.py --config-path='../conf/neural_diarizer' \
--config-name='sortformer_diarizer_hybrid_loss_4spk-v1.yaml' \
trainer.devices=1 \
model.train_ds.manifest_filepath="<train_manifest_path>" \
model.validation_ds.manifest_filepath="<dev_manifest_path>" \
exp_manager.name='sample_train' \
exp_manager.exp_dir=./sortformer_diar_train
Sortformer 日志器推理#
使用以下命令在 Sortformer 日志器模型上运行推理。
# Config for post-processing
PP_YAML1=${NEMO_ROOT}/examples/speaker_tasks/diarization/conf/post_processing/sortformer_diar_4spk-v1_dihard3-dev.yaml
PP_YAML2=${NEMO_ROOT}/examples/speaker_tasks/diarization/conf/post_processing/sortformer_diar_4spk-v1_callhome-part1.yaml
python ${NEMO_ROOT}/examples/speaker_tasks/diarization/neural_diarizer/e2e_diarize_speech.py \
batch_size=1 \
model_path=/path/to/diar_sortformer_4spk_v1.nemo \
postprocessing_yaml=${PP_YAML2} \
dataset_manifest=/path/to/diarization_manifest.json
HuggingFace 预训练检查点#
ASR 集合具有在各种数据集上针对各种任务训练的多个模型的检查点。这些检查点可通过 NGC NeMo 自动语音识别集合获得。NGC 上的模型卡片包含有关每个可用检查点的更多信息。
一般来说,您可以使用以下格式的模型名称加载模型,
pip install -U "huggingface_hub[cli]"
huggingface-cli login
from nemo.collections.asr.models import SortformerEncLabelModel
diar_model = SortformerEncLabelModel.from_pretrained("nvidia/diar_sortformer_4spk-v1")
其中模型名称是下表 “模型名称” 条目下的值。
端到端说话人日志模型#
模型名称 |
模型基类 |
模型卡片 |
---|---|---|
diar_sortformer_4spk |
SortformerEncLabelModel |
级联说话人日志管道模型#
加载本地检查点#
加载 VAD 模型
pretrained_vad_model='/path/to/vad_multilingual_marblenet.nemo' # local .nemo or pretrained vad model name
...
# pass with hydra config
config.diarizer.vad.model_path=pretrained_vad_model
加载说话人嵌入模型
pretrained_speaker_model='/path/to/titanet-l.nemo' # local .nemo or pretrained speaker embedding model name
...
# pass with hydra config
config.diarizer.speaker_embeddings.model_path=pretrained_speaker_model
加载神经日志器模型
pretrained_neural_diarizer_model='/path/to/diarizer_msdd_telephonic.nemo' # local .nemo or pretrained neural diarizer model name
...
# pass with hydra config
config.diarizer.msdd_model.model_path=pretrained_neural_diarizer_model
NeMo 将自动以 .nemo 格式保存您正在训练的模型的检查点。您也可以随时使用 model.save_to(<checkpoint_path>.nemo)
手动保存您的模型。
推理#
注意
有关详细信息和深入理解,请参考 <NeMo_root>/tutorials/speaker_tasks/Speaker_Diarization_Inference.ipynb
。
查看 数据集 以准备音频文件和可选标签文件。
使用以下命令运行和评估说话人日志器
# Have a look at the instruction inside the script and pass the arguments you might need.
python <NeMo_root>/examples/speaker_tasks/diarization/offline_diarization.py
NGC 预训练检查点#
ASR 集合具有在各种数据集上针对各种任务训练的多个模型的检查点。这些检查点可通过 NGC NeMo 自动语音识别集合获得。NGC 上的模型卡片包含有关每个可用检查点的更多信息。
一般来说,您可以使用以下格式的模型名称加载模型,
pretrained_vad_model='vad_multilingual_marblenet'
pretrained_speaker_model='titanet_large'
pretrained_neural_diarizer_model='diar_msdd_telephonic'
...
config.diarizer.vad.model_path=retrained_vad_model \
config.diarizer.speaker_embeddings.model_path=pretrained_speaker_model \
config.diarizer.msdd_model.model_path=pretrained_neural_diarizer_model
其中模型名称是下表 “模型名称” 条目下的值。
说话人日志管道模型#
模型名称 |
模型基类 |
模型卡片 |
---|---|---|
vad_multilingual_marblenet |
EncDecClassificationModel |
https://catalog.ngc.nvidia.com/orgs/nvidia/teams/nemo/models/vad_multilingual_marblenet |
vad_marblenet |
EncDecClassificationModel |
https://ngc.nvidia.com/catalog/models/nvidia:nemo:vad_marblenet |
vad_telephony_marblenet |
EncDecClassificationModel |
https://ngc.nvidia.com/catalog/models/nvidia:nemo:vad_telephony_marblenet |
titanet_large |
EncDecSpeakerLabelModel |
https://ngc.nvidia.com/catalog/models/nvidia:nemo:titanet_large |
ecapa_tdnn |
EncDecSpeakerLabelModel |
https://ngc.nvidia.com/catalog/models/nvidia:nemo:ecapa_tdnn |
diar_msdd_telephonic |
EncDecDiarLabelModel |
https://ngc.nvidia.com/catalog/models/nvidia:diar_msdd_telephonic |