How to Hear One Player's Voice in a CS2 Demo
Listen to specific players in a CS2 demo. Step-by-step tv_listen_voice_indices setup, how the slot bitmask number works, and how to isolate one team.
You want one voice out of ten - your own comms after a FACEIT match, or how a particular in-game leader runs a mid-round - without everyone else talking over the top. tv_listen_voice_indices does exactly that, once you know what number to give it.
Quick answer: put the bit value of the player's slot in
tv_listen_voice_indices(slot 1 = 1, slot 2 = 2, slot 3 = 4, slot 4 = 8) and settv_listen_voice_indices_hto0. To skip the arithmetic, upload the demo to the CS2 Voice Comms Calculator , tick the player, and copy.
Step 1 - Get a demo that actually has voice in it
Valve matchmaking and Premier demos contain no voice audio data, so there is nothing to isolate.2 Voice comes from FACEIT, ESEA and other SourceTV servers, and FACEIT demos download as .dem.zst. The full guide to voice in CS2 demos covers the exceptions, including why a community-server demo can be silent too.
Step 2 - Find the player's slot
Slots are not labelled. Step through them in the console:
spec_player 1
spec_player 2
spec_player 3
and note which one shows the player you want. Uploading the demo to the calculator reads the whole slot table at once and puts a name and a team next to each, which is the same information without the clicking.
Step 3 - Turn the slot into a number
Each slot is worth double the one before it, and you add up the ones you want:
| Slot | Bit value |
|---|---|
| 1 | 1 |
| 2 | 2 |
| 3 | 4 |
| 4 | 8 |
| 5 | 16 |
| 6 | 32 |
One player is just their own value: slot 3 is 4. Several players is the sum: slots 1, 3 and 4 give 1 + 4 + 8 = 13. Our number base converter will do it from a binary pattern if you prefer to see the bits.
Step 4 - Paste the commands
tv_listen_voice_indices 4
tv_listen_voice_indices_h 0
The _h line is not a typo and not a copy. The two convars are the low and high halves of a single 64-bit bitfield: the first addresses player slots 0 to 31, the second addresses 32 to 63.1 Nobody in a 5v5 is in slot 32, so _h has no one to unmute - setting it to 0 just clears whatever it was left at earlier in the session.
The one time both carry the same value is -1, which fills every bit of both halves and unmutes the lot.
Step 5 - Play the demo
You will hear only the players you picked. Both convars go back to 0 when CS2 closes, so the next session starts silent again; that is the whole explanation for "it worked yesterday".
Hearing one whole team
Add up that side's slots and use the total. The voice comms calculator has All T and All CT buttons for it, which is what you want for a highlight cut or for studying one team's mid-round calling without crosstalk.
If you use CS Demo Manager's voice_ct and voice_t aliases instead, know that they follow each player's starting side, not the side they are on now.3 After the half they say the opposite of what you meant.
Picking the opposing five is a different problem again, because their voice may not be in the file: hearing the enemy team in a demo covers what the server had to allow for it to be there.
Why the number stops working
Slots come from the player entity order recorded in the demo. That is not the scoreboard order, and it has no reason to match between two matches with the same ten people in them. Within one demo the slots are fixed - the file replays the same way every time - but the mask itself does not travel. Build it per demo.
Which is the argument for not building it by hand at all: upload the demo once to the CS2 Voice Comms Calculator , tick the player, copy the two lines.
Sources
Every number in this article traces to a source below. Where a claim could not be sourced, it was cut rather than softened.
- Peer-reviewedb0ink
The verbatim convar descriptions, that tv_listen_voice_indices is a bitfield of player slots 0 to 31 and tv_listen_voice_indices_h the high 32 bits covering slots 32 to 63, and that both default to none.
- Peer-reviewedAkiVer
That Valve matchmaking demos contain no voice audio data at all.
- Primary sourceCS Demo Manager
The voice_ct and voice_t aliases, and that they refer to each player's starting side rather than their current one.
Topics
Tools mentioned in this article
- CS2 Voice Comms Calculator - Hear specific players in a CS2 or FACEIT demo - upload it to auto-fill players and get the tv_listen_voice_indices commands.
- Number Base Converter - Convert numbers between binary, octal, decimal and hexadecimal.
- SteamID Converter - Convert between SteamID64, STEAM_0:Y:Z, SteamID3 [U:1:W], account ID and profile URL.
Get new tools by email
New tools and the occasional deep-dive, about once a month. No spam, no sharing your address, unsubscribe in one click.