def _staging_step(self, basename):
        """
        Checks the size of audio file, splits it if it's needed to manage api
        limit and then moves to `staged` directory while appending `*` to
        the end of the filename for self.split_audio_by_duration to replace
        it by a number.

        Parameters
        ----------
        basename : str
            A basename of `/home/random-guy/some-audio-file.wav` is
            `some-audio-file.wav`
        """
        name = ''.join(basename.split('.')[:-1])

        if self.get_mode() == "ibm":
            # Checks the file size. It's better to use 95% of the allocated
            # size per file since the upper limit is not always respected.
            total_size = os.path.getsize("{}/filtered/{}.wav".format(
                self.src_dir, name))
            if total_size >= self.ibm_api_limit_bytes:
                if self.get_verbosity():
                    print(("{}'s size over API limit ({}). Splitting").format(
                        name, self.ibm_api_limit_bytes))
                self._split_audio_by_size(
                    "{}/filtered/{}.wav".format(self.src_dir, name),
                    "{}/staging/{}*.wav".format(self.src_dir, name),
                    self.ibm_api_limit_bytes * 95 / 100)
            else:
                if self.get_verbosity():
                    print("{}'s size is fine. Moving to staging dir'".format(
                        name))
                subprocess.Popen((
                    "mv {}/filtered/{}.wav {}/staging/{}000.wav").format(
                                    self.src_dir, name, self.src_dir, name),
                                 shell=True,
                                 universal_newlines=True).communicate()

        elif self.get_mode() == "cmu":
            if self.get_verbosity():
                print("Converting {} to a readable wav".format(basename))
            ffmpeg = os.path.basename(find_executable("ffmpeg") or
                                      find_executable("avconv"))
            if ffmpeg is None:
                raise Exception(("Either ffmpeg or avconv is needed. "
                                 "Neither is installed or accessible"))
            try:
                # ffmpeg log levels:
                # https://ffmpeg.org/ffmpeg.html#Generic-options
                ffmpeg_log_level = "8"  # fatal errors.
                if self.get_verbosity():
                    ffmpeg_log_level = "32"  # info `default for ffmpeg`
                subprocess.check_call([
                    str(ffmpeg), "-y", "-i", "{}/filtered/{}.wav".format(
                        self.src_dir, str(name)), "-acodec", "pcm_s16le",
                    "-ac", "1", "-ar", "16000", "{}/staging/{}000.wav".format(
                        self.src_dir, name),
                    "-v", ffmpeg_log_level], universal_newlines=True)
            except subprocess.CalledProcessError as e:
                print(e)
            if os.path.exists("{}/staging/{}000.wav".format(
                    self.src_dir, name)):
                if self.get_verbosity():
                    print(("{}/filtered/{} was converted to "
                           "{}/staging/{}000.wav Now removing the copy of "
                           "{} in filtered sub directory").format(
                                self.src_dir, basename,
                                self.src_dir, name, basename))
                subprocess.Popen([
                    "rm", "{}/filtered/{}".format(self.src_dir, basename)],
                                    universal_newlines=True).communicate()
            else:
                raise Exception("Something went wrong with ffmpeg conversion!")