I’ve recently got into streaming for friends, and I decided to write up a guide on how I’ve set up my audio system such that I can hear my friends talking to me on Discord, but they won’t be heard on stream (which would cause an awkward echoing for them).
You’re going to need two pieces of (free) software: VoiceMeeter and the Virtual Audio Cable, by the same company. We’ll also be using OBS as our streaming software, and Discord in this example, though it’ll work with Skype, XSplit, and any other streaming/chatting program that allows you to pick both input and output.
You can also use the more complicated version, VoiceMeeter Banana, since they’re both donationware. Install both; you may have to restart your computer. Go into Playback Devices. Set “VoiceMeeter Input” as the default playback device.
Open up VoiceMeeter. We’re going to set channel 1 as the microphone, and channel 2 as Discord. You can right-click the names of the channels to rename them. Set A1, on the far right panel labelled “Hardware Out”, to your default speakers. Click the box marked 1, and pick your microphone from the drop down list. I usually stick to “WDM”. Then, make sure channel A is unchecked, but channel B is checked.
In Discord, under Settings > Voice, make sure that “Input Device” is set to VoiceMeeter Output, and that “Output Device” is set to CABLE Input (that would be your virtual audio cable).
Back in VoiceMeeter, under channel 2, set it to CABLE Output. Make sure A is checked, and B is unchecked. Lastly, under Virtual Input, make sure both A and B are checked.
Now this bit is important: mute yourself in Discord. This will stop your mic audio AND desktop audio coming through in Discord.
In OBS, under Settings > Audio, pick ONE of the audio devices (here I’ve gone for Mic/Auxiliary Audio Device). Set it to VoiceMeeter Output. Mute or delete all others.
That’s it! You’re all done. Double-check by recording something while chatting on Discord. Only your voice, not anyone talking on Discord, should come through on the recording.
How It Works
In VoiceMeeter, anything running to bus A goes to a physical output—something actually plugged into your computer, usually your speakers. Anything running to B goes to virtual output, or VoiceMeeter VAIO (Virtual Audio I/O).
Because we’ve set our default playback device as VB-Audio VoiceMeeter, anything that would play sound through your speakers normally is now being routed through VoiceMeeter. Specifically, all that stuff is coming through the panel labelled “Virtual Input” (third from the left). And, to borrow a little diagram from the user manual,
Anything set to receive input from “VoiceMeeter Output” (that is, Discord and OBS) receives the sum of all inputs that have checked B. Your speakers, meanwhile, will output the sum of all inputs checked A.
This means input #1, which we’ve set as our microphone, is outputting only to VoiceMeeter Output, without broadcasting back through our own speakers. Input #2, Discord, outputs only to speakers without going back through VoiceMeeter Output. Input #3, which handles all desktop and game sound, is outputting to both our speakers and to VoiceMeeter Output.
Here’s a diagram.
What if I want to talk in Discord, but only output game audio to OBS?
The easiest way is to untick B in panel 1, then set your input device in Discord as your actual microphone. Doing it inside of VoiceMeeter will require you to use the more complicated VoiceMeeter Banana, which gives you two virtual outputs (VB Audio and VB Audio Aux).