Great point, this happens because the beep is in the same TTS message, so VAPI matches it instantly and the timeout becomes unreliable.
For voicemail flows, the stable approach is to separate the beep and move to call control + speech-update. Play the beep first, then explicitly switch the call into listening mode.
From there, track when the user starts speaking and when silence occurs, and end the recording based on real speech activity instead of regex timing.
This removes the race conditions you’re seeing and gives you full control over start/stop. I’ve implemented this pattern in production setups and it’s much more reliable, happy to walk you through it, let's discuss more privately @alep