class_docstr: ``LazyNeMoIterator`` reads a NeMo (non-tarred) JSON manifest and converts it on the fly to an ``Iterable[Cut]``.
  It's used to create a ``lhotse.CutSet``.
  
  Currently, it requires the following keys in NeMo manifests:
  - "audio_filepath"
  - "duration"
  - "text" (overridable with text_field argument)
  
  Every other key found in the manifest will be attached to Lhotse Cut and accessible via ``cut.custom[key]``.
  
  .. caution:: If sampling rate is not specified, we will perform some I/O (as much as required by soundfile.info)
      to discover the sampling rate of the audio file. Otherwise, if sampling rate is provided, we assume every
      audio file has the same sampling rate.
  
  Example::
  
      >>> cuts = lhotse.CutSet(LazyNeMoIterator("nemo_manifests/train.json", sampling_rate=16000))
code: def __add__(self, other):
      return LazyIteratorChain(self, other)
  
imports: import random
  import re
  import secrets
  import tarfile
  from io import BytesIO
  from pathlib import Path
  from typing import Iterable, List
  import soundfile
  from cytoolz import groupby
  from lhotse import AudioSource, Recording, SupervisionSegment
  from lhotse.lazy import ImitatesDict, LazyIteratorChain, LazyJsonlIterator
  from lhotse.serialization import open_best
  from lhotse.utils import compute_num_samples
label_desc: Use image node_id 5 for calling the LazyNeMoIterator obj's underlying member method code with example usage: obj.__add__(other) and returns: LazyIteratorChain