def __init__(self, src_dir, mode, username_ibm=None, password_ibm=None,<EOL>ibm_api_limit_bytes=<NUM_LIT>, verbose=False,<EOL>needed_directories={"<STR_LIT>", "<STR_LIT>"}):
assert mode.lower() in {"<STR_LIT>", "<STR_LIT>"}, (<EOL>"<STR_LIT>")<EOL>self.__mode = mode.lower()<EOL>if self.__mode == "<STR_LIT>":<EOL><INDENT>assert (all([x is None for x in {username_ibm, password_ibm}])), (<EOL>"<STR_LIT>")<EOL><DEDENT>elif self.__mode == "<STR_LIT>":<EOL><INDENT>assert ((username_ibm is not None) and<EOL>(password_ibm is not None)), (<EOL>"<STR_LIT>")<EOL><DEDENT>assert os.path.exists(src_dir), ("<STR_LIT>")<EOL>if src_dir[-<NUM_LIT:1>] == "<STR_LIT:/>":<EOL><INDENT>src_dir = src_dir[:-<NUM_LIT:1>]<EOL><DEDENT>self.src_dir = src_dir<EOL>self.__username_ibm = username_ibm<EOL>self.__password_ibm = password_ibm<EOL>self.verbose = verbose<EOL>self.ibm_api_limit_bytes = ibm_api_limit_bytes<EOL>self.__timestamps = _PrettyDefaultDict(list)<EOL>self.__timestamps_unregulated = _PrettyDefaultDict(list)<EOL>self.__errors = dict()<EOL>self._needed_directories = needed_directories<EOL>
Parameters
----------
src_dir : str
    Absolute path to the source directory of audio files such that the
    absolute path of the audio that'll be indexed would be
    `src_dir/audio_file.wav`
mode : {"ibm", "cmu"}
    specifying whether speech to text engine is IBM's Watson or
    Pocketsphinx. Pros for IBM is its accuracy, Cons is that it's not
    free and you have to upload your audio files.
    Pros for Pocketsphinx is that it's opensource and free, Cons is
    that its accuracy is pre-alpha (currently it's Febuary 2017).
username_ibm : str, None
    Default is `None`, since if mode is "cmu", no username is needed.
password_ibm : str
    Default is `None`, since if mode is "cmu", no password is needed.
ibm_api_limit_bytes : int, optional
    default is 100000000
verbose : bool, optional
    default is False