You didn't say *where* you have the audio delay. It's been a known issue for several years now, that the Monitor (physical device) does that, while the Output (stream and recording) doesn't. The reason is that the Monitor locks itself to the device's clock, while everything else stays on OBS's clock. And instead of resampling, the Monitor simply expands the buffer, ad infinitum.
Depending on what device you connect the Monitor to, you may or may not have this problem:
- If you connect it to a virtual loopback, then you probably won't because the loopback gets its clock from the same place that OBS does.
- If you connect it to a physical device that gets its clock from the host computer, then you probably won't for the same reason.
- If you connect it to a physical device that has its own internal clock, then you probably will, even if the sample rates are nominally the same.
It can be hard to tell where a physical device gets its clock, so the end effect is effectively random, whether a given one will drift out of sync or not.
An effective workaround (though only a workaround, not a real solution), is to disrupt the audio to the Monitor, so that the buffer resets. Anything will do:
- Removing and re-adding the source (usually too drastic for frequent use, but it works)
- Changing the routing in Advanced Audio Properties to not use the Monitor, and changing it back
- Muting/unmuting the offending source(s)
The last point can be expedited with hotkeys or a script. And since the Output doesn't have this problem, you might use some additional audio sources to avoid affecting it at all while you "blink" the Monitor copy of the same source.