play_voice(options, fadeDuration) {
    const src = _.isString(options) ? options : options.src;
    if (this._voice == null || this._voice.get_src() !== src) {
      if (fadeDuration == null) { fadeDuration = CONFIG.VOICE_CROSSFADE_DURATION; }

      // stop currently playing voice
      this.stop_voice(fadeDuration);

      // start new voice
      // get voice or create new for src
      this._voice = this.take_from_pool(src);
      if (this._voice == null) {
        this._voice = new audio_object(options);
      }

      return this._play(this._voice, fadeDuration, this.get_voice_volume());
    }
    return Promise.resolve();
  }
Creates and plays a voice file and returns a promise that resolves when the voice is faded in/out.
@param options
@param [fadeDuration=CONFIG.AUDIO_CROSSFADE_DURATION]
@returns {Promise}