OBS lets you have audio sources that are active across all scenes, and audio sources included as sources IN scenes. If you do the latter, the source should stop being heard once you switch away from a scene that uses it.
For the global audio sources, you could implement this with a Lua or Python script (you might take a look in the "Resources" section to see if someone has a pre-built solution.)
In script_load, call obs.obs_frontend_add_event_callback to register a callback.
Have the callback handle changes to the program scene (OBS_FRONTEND_EVENT_SCENE_CHANGED)
When the scene changes to your "quiet" scene (or away from your "noisy" scene), mute or unmute one or all audio sources
local source = obs.obs_get_source_by_name(your_audio_source_name)
if source then
obs.obs_source_set_muted(source, your_mute_state)
obs.obs_source_release(source)
end
For more control, you can change the audio level with
obs.obs_source_set_volume(source, your_desired_volume)
There are also frontend events for beginning and end of transitions (OBS_FRONTEND_EVENT_TRANSITION_CHANGED and OBS_FRONTEND_EVENT_TRANSITION_STOPPED), but I haven't had reason to use them.
If you want to FADE the audio rather than abruptly muting it, Google finds lots of automatic fading options, such as
https://www.youtube.com/watch?v=w2L-LI_AZyM