Skip to main content
Gaming Tools

How to Hear Voice Comms in CS2 and FACEIT Demos

Hear voice comms in any CS2 or FACEIT demo with tv_listen_voice_indices. Which demos record voice, how the slot bitmask works, and how to read text chat.

By 5 min read

Reviewing a demo and hearing nothing but footsteps? Voice in Counter-Strike 2 demos is off by default, and the command that turns it on - tv_listen_voice_indices - takes a number most people never figure out. This guide covers everything: which demos even contain voice, how the slot bitmask works, how to hear one player or one whole team, and how to pull up text chat at the same time.

Just want the commands? Upload your demo to the CS2 Voice Comms Calculator , tick the players you want to hear, and copy the ready-made tv_listen_voice_indices commands. The rest of this page explains why they work.

Which CS2 demos actually contain voice comms?

This is the single biggest reason players think the command is broken. Voice is only recorded in FACEIT, ESEA and other server (SourceTV) demos. Valve matchmaking and Premier demos record no player voice at all.

There is simply no voice data inside an MM or Premier .dem file, so no command - not tv_listen_voice_indices -1, not anything - can play back audio that was never stored. If you want to review comms from a match, grab the FACEIT demo of that match (it downloads as a .dem.zst file), not the Valve one.

Demo sourceRecords voice?
FACEITYes
ESEA / other SourceTV serversYes
Valve matchmakingNo
Valve PremierNo

What does tv_listen_voice_indices do?

tv_listen_voice_indices is the CS2 console variable that decides whose voice you hear while watching a demo through SourceTV. By default it is 0, which means you hear nobody. Its value is a 32-bit bitmask of spectator slots:

  • -1 - hear everyone (every bit set)
  • 0 - hear nobody (the default, and the reset value)
  • any positive number - hear a specific set of slots

There is a companion command, tv_listen_voice_indices_h, which covers the "high" spectator slots 33-64 used in larger SourceTV lobbies. A normal 5v5 only needs the first one, but the safe habit is to set both to the same number - it is harmless and avoids edge cases.

How the spectator-slot bitmask works

Each bit in the number maps to one spectator slot. Bit 0 is slot 1, bit 1 is slot 2, bit 2 is slot 3, and so on. To hear a set of players you add up the bit values for their slots:

SlotBit value
11
22
34
48
516

So to hear the players in slots 1, 3 and 4 you set the command to 1 + 4 + 8 = 13:

tv_listen_voice_indices 13
tv_listen_voice_indices_h 13

If binary maths is not your idea of fun, that is exactly what the voice comms calculator does - you tick the players, it does the addition. You can also convert a slot pattern by hand with our number base converter .

How to find which player is in which slot

Slot order is assigned from the player entity order in the demo, so it is not always intuitive - and it can shift between playback sessions. The manual way is to step through slots in the console:

spec_player 1
spec_player 2
spec_player 3

…and note who appears in each. The faster way is to upload the demo to the calculator, which reads the real slot list for you and fills in every player name and team, so you skip the spec_player 1..16 loop entirely.

How to hear only one team or only the enemy

Once you know which slots belong to which side, you just add up that side's slots. Want only the Terrorists' comms? Add their five slot values and set the command to that total. Only the enemy? Add the other team's slots. The calculator has All / All T / All CT buttons that build the number for a whole side in one click - handy for casting or cutting highlight clips where twenty overlapping voices would drown the round.

How to read text chat in a demo

Voice is only half the story. To bring in the in-game text chat as well, run:

tv_relaytextchat 2

before playback. This relays chat messages into your demo view, which makes it much easier to follow who called what - especially when you cannot identify a voice.

Demo Manager aliases as an alternative

If you review demos a lot, tools like CS Demo Manager add convenience aliases such as voice_ct and voice_t that target a starting side's voices without you computing a bitmask each time. They are a nice shortcut, but under the hood they are still driving the same tv_listen_voice_indices convar this guide explains - so it is worth understanding the underlying command.

CS:GO vs CS2: what changed

In CS:GO the same tv_listen_voice_indices system existed, and CS:GO matchmaking demos did contain voice. In CS2, Valve matchmaking and Premier demos dropped recorded voice entirely, which is why so many players who upgraded found their demos suddenly silent. The command did not change - the data being recorded did. FACEIT and server demos remain the reliable source for comms review.

Putting it together

  1. Get a demo that contains voice (FACEIT or server, not MM/Premier).
  2. Find which players sit in which slots - or let the calculator read them.
  3. Build the bitmask for who you want to hear.
  4. Set tv_listen_voice_indices and tv_listen_voice_indices_h to that number.
  5. Add tv_relaytextchat 2 if you want chat too, then play the demo.

Skip the maths and the spec_player loop with the CS2 Voice Comms Calculator : upload the demo, tick the players, copy the commands.

Tools mentioned in this article

Related articles