async def _maybe_emulate_user_speaking(self):
        """Emulate user speaking if we got a transcription but it was not
        detected by VAD. Only do that if the bot is not speaking.

        """
        # Check if we received a transcription but VAD was not able to detect
        # voice (e.g. when you whisper a short utterance). In that case, we need
        # to emulate VAD (i.e. user start/stopped speaking), but we do it only
        # if the bot is not speaking. If the bot is speaking and we really have
        # a short utterance we don't really want to interrupt the bot.
        if not self._user_speaking and not self._waiting_for_aggregation:
            if self._bot_speaking:
                # If we reached this case and the bot is speaking, let's ignore
                # what the user said.
                logger.debug("Ignoring user speaking emulation, bot is speaking.")
                await self.reset()
            else:
                # The bot is not speaking so, let's trigger user speaking
                # emulation.
                await self.push_frame(EmulateUserStartedSpeakingFrame(), FrameDirection.UPSTREAM)
                self._emulating_vad = True
Emulate user speaking if we got a transcription but it was not
        detected by VAD. Only do that if the bot is not speaking.

        
src/pipecat/processors/aggregators/llm_response.py