fix: ignore AbortError from interrupted audio.play() in useAudioPlayer
stop() pauses the audio element while its play() Promise is
still pending, which rejects with DOMException(AbortError).
The inner catch was treating that as a real failure and
setting errorId, so an intentional interrupt (e.g., user
starts recording during AI auto-play) would leave a phantom
"点击重试" UI on the message that played fine.
Distinguish AbortError from autoplay-policy / decoder errors
the same way the synthesis catch does — silent return.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>