Looks like you're restarting the UnderWater
sound every frame underwater.
Try:
if not $UnderWater.playing:
$UnderWater.play()
Bonus: if you don't wanna start the sound at the beginning every time, record the playback position before you stop it:
var playback_pos = 0
if underwater:
if not $UnderWater.playing:
$UnderWater.play(playback_pos)
else:
playback_pos = $UnderWater.get_playback_position()
$UnderWater.stop()