From my own experience (sound and music related applications mainly) Godot is not ready yet for intensive audio works especially if you expect precise syncing and not much latency. Your best bet will be to use rather short samples with SamplePlayer that in my tests was giving best results.
SamplePlayer2D is for other tasks, when you need your sound to be located in the space, so unless it's what your need try to use SamplePlayer.
The audio part of the engine is going to be rewritten in the near future and hopefully it will work much better.
But I also have some thought about what I see on your screen when you play.
I see that you run the scene from Godot and I have an experience thatit can delay some things and run slower than normally it would run from binary file. Have you try to export the release version of the scene and check the delay than? It should make it work slightly better.
Also, I see setfixedprocess(true) in the fragment of your code. Do you use the physics in your game and things that would need to count the precise physics every frame in your game? I ask because counting precise physics might slow things down if not used right.