code: def test_save_restore_artifact(self, asr_model):
      with tempfile.TemporaryDirectory() as tmpdir:
          save_path = os.path.join(tmpdir, "ctc_bpe.nemo")
          asr_model.train()
          asr_model.save_to(save_path)
  
          new_model = EncDecCTCModelBPE.restore_from(save_path)
          assert isinstance(new_model, type(asr_model))
          assert new_model.vocab_path.endswith("_vocab.txt")
  
          assert len(new_model.tokenizer.tokenizer.get_vocab()) == 128
  
imports: import copy
  import os
  import shutil
  import tempfile
  import pytest
  import torch
  from omegaconf import DictConfig
  from nemo.collections.asr.data import audio_to_text
  from nemo.collections.asr.models import configs
  from nemo.collections.asr.models.ctc_bpe_models import EncDecCTCModelBPE
  from nemo.collections.asr.parts.submodules.ctc_decoding import CTCBPEDecoding, CTCBPEDecodingConfig
  from nemo.collections.common import tokenizers
  from nemo.utils.config_utils import assert_dataclass_signature_match
label_desc: Use image node_id 3 for calling the TestEncDecCTCModel obj's underlying member method code with example usage: obj.test_save_restore_artifact(asr_model) without return types