What I usually do is differentiate every type of audio. BGMs from SFX, etc... and I have a Singleton that I call passing two arguments, "path" that holds a string for the audio path and "type", a string specifying the type of audio that is going to be played. The singleton instances an AudioStream scene with a Timer node, the path is add and play() is on ready(). The AudioStream, then adds itself to the group(type). Here is where you can make the previous sound stop. On _ready() you could check for every node in the group(type) and queuefree, stop(), or pause, every one of them.
The Timer.waittime() is set as the audio length time. When the timer ends, queuefree().