class_docstr: Reader class for 'wav.scp'.
  
  Examples:
      wav.scp is a text file that looks like the following:
  
      key1 /some/path/a.wav
      key2 /some/path/b.wav
      key3 /some/path/c.wav
      key4 /some/path/d.wav
      ...
  
      >>> reader = SoundScpReader('wav.scp')
      >>> rate, array = reader['key1']
  
      If multi_columns=True is given and
      multiple files are given in one line
      with space delimiter, and  the output array are concatenated
      along channel direction
  
      key1 /some/path/a.wav /some/path/a2.wav
      key2 /some/path/b.wav /some/path/b2.wav
      ...
  
      >>> reader = SoundScpReader('wav.scp', multi_columns=True)
      >>> rate, array = reader['key1']
  
      In the above case, a.wav and a2.wav are concatenated.
  
      Note that even if multi_columns=True is given,
      SoundScpReader still supports a normal wav.scp,
      i.e., a wav file is given per line,
      but this option is disable by default
      because dict[str, list[str]] object is needed to be kept,
      but it increases the required amount of memory.
code: def keys(self):
      return self.data.keys()
  
imports: import collections.abc
  from pathlib import Path
  from typing import List, Tuple, Union
  import numpy
  import soundfile
  from typeguard import check_argument_types
  from espnet2.fileio.read_text import read_2columns_text, read_multi_columns_text
label_desc: Use image node_id 7 for calling the SoundScpReader obj's underlying member method code with example usage: obj.keys() and returns: self