Romania XPlayZM.CSBlackDevil.COM # Zombie Plague UltimateX [ Respawn + FDL + VIP 22-12PM + POINTS] ® 15/32
Unknown ❤ RESPAWN.ZAFEST.RO | VIP FREE | FREE FOR ALL ❤ 0/32
France EMIRATES.KiNGS 亗 GAMEAREA ||͇̿P͇̿U͇̿B͇̿L͇̿I͇̿C͇̿| ✪ 32/32
Promouvoir serveur

Fix: Non-Steam Players Have No Voice (ReVoice) #7

Open counter-strike-boost.com wants to merge 1 commits from tutorial/fix-revoice-no-voice-nonsteam-en into main
1 changed file with 99 additions and 0 deletions
+99 -0 fix-revoice-no-voice-nonsteam/en.md A
@@ -0,0 +1,99 @@
1 +---
2 +title: "Fix: Non-Steam Players Have No Voice (ReVoice)"
3 +excerpt: "Steam players hear each other but non-Steam players are silent, one-way or robotic? Walk the ReVoice chain from the server stack to the client and find the exact link that breaks."
4 +category: "errors"
5 +tags: "revoice, voice, non-steam, reunion, rehlds"
6 +image: ""
7 +read_time: "8 min read"
8 +---
9 +<p>The classic report: Steam players talk to each other fine, but nobody hears the non-Steam players and they hear nobody. Sometimes it is one-way, sometimes robotic. It is all one chain breaking at different links. This page assumes you followed <a href="/tutorials/install-revoice">the ReVoice install guide</a> and walks the chain in the order it usually breaks, so stop at the first link that fails.</p>
10 +
11 +<h2>Why voice splits along Steam lines</h2>
12 +<p>Steam builds of CS 1.6 send voice in Steam's own format: SILK on older Steam builds, Opus on current ones. Older non-Steam builds send Speex. The engine converts nothing. It relays each voice packet to the listeners exactly as it arrived, so a Speex packet reaching a Steam client, or an Opus packet reaching a non-Steam client, is data the receiver cannot decode. Steam-to-Steam works without help because both ends already agree.</p>
13 +<p>ReVoice is the translator: it takes over voice handling in ReHLDS, decodes each packet and re-encodes it for every listener, Speex for old builds and Steam format for Steam clients. So a broken ReVoice has a recognisable signature: Steam players keep talking while everyone on a non-Steam build goes silent.</p>
14 +
15 +<h2>1. Is ReVoice actually running?</h2>
16 +<p>The file on disk proves nothing. In the server console:</p>
17 +<pre><code>version
18 +meta list</code></pre>
19 +<p><code>version</code> must print a <code>ReHLDS version:</code> line. In <code>meta list</code>, ReVoice must show <code>RUN</code>, and Reunion must be listed <strong>above</strong> it. The order matters: ReVoice asks for Reunion's API the moment it attaches (it uses Reunion to learn each client's protocol) and refuses to start if Reunion is not loaded yet. Your <code>cstrike/addons/metamod/plugins.ini</code> should read:</p>
20 +<pre><code>linux addons/reunion/reunion_mm_i386.so
21 +linux addons/revoice/revoice_mm_i386.so
22 +linux addons/amxmodx/dlls/amxmodx_mm_i386.so</code></pre>
23 +<p>On Windows the lines start with <code>win32</code> and point at <code>reunion_mm.dll</code> and <code>revoice_mm.dll</code>. If ReVoice shows <code>fail</code>, scroll back through the startup output (or the server log) for its own error:</p>
24 +<ul>
25 +<li><code>[REVOICE]: Failed to locate REHLDS API</code> - you are on stock HLDS. ReVoice only runs on ReHLDS.</li>
26 +<li><code>[REVOICE]: Failed to locate Reunion api</code> - Reunion is missing, failed to load, or sits below ReVoice. Fix it with <a href="/tutorials/install-reunion">the Reunion install guide</a>. ReVoice needs Reunion specifically; dproto does not provide that API.</li>
27 +<li>A <code>Reunion API</code> version mismatch line - your Reunion build is too old for your ReVoice build. Update Reunion.</li>
28 +</ul>
29 +<p>ReVoice can only be loaded when the server process starts, so after any of these fixes, restart the server. A map change is not enough.</p>
30 +
31 +<h2>2. Ask ReVoice how it sees each player</h2>
32 +<p>ReVoice can tell you which codec it assigned to each connected player:</p>
33 +<pre><code>rev status</code></pre>
34 +<p>It lists each player with a codec (<code>speex</code>, <code>opus</code>, <code>silk</code> or <code>none</code>), a voice rate and the protocol. Run it in the server's own console: the per-player lines go to the server process's terminal, so over rcon you may only see the header. If it prints nothing at all, ReVoice is not loaded.</p>
35 +<p>How the codec is chosen: on connect, ReVoice asks the client for its <code>sv_version</code>. A build number above 4554 is treated as a Steam-style client and gets <code>opus</code>. Everything else, including a client that never answers the query, gets the value of <code>REV_DefaultCodec</code>, which should be <code>speex</code>. What you want to see:</p>
36 +<ul>
37 +<li>Steam players on <code>opus</code>.</li>
38 +<li>Classic non-Steam builds on <code>speex</code>.</li>
39 +<li>Nobody on <code>none</code>. A player on <code>none</code> is not handled at all, and ReVoice drops their voice.</li>
40 +</ul>
41 +<p>A player on the wrong codec is the usual cause of one-way or garbled voice: their packets go through the wrong decoder, so the other side gets noise or nothing. ReVoice classifies by build number alone, so a non-Steam pack built on a newer engine build is treated exactly like Steam.</p>
42 +
43 +<h2>3. Server cvars: one matters, two do not exist</h2>
44 +<pre><code>sv_voiceenable</code></pre>
45 +<p>Typed alone it prints the current value, which must be <code>1</code>. With <code>0</code>, ReVoice reads every voice packet and throws it away, so nobody hears anybody, Steam or not.</p>
46 +<p>Many guides also set <code>sv_voicecodec</code> and <code>sv_voicequality</code>. ReHLDS does not have these cvars, so setting them does nothing, and ReHLDS stays silent about unknown commands unless <code>sv_echo_unknown_cmd 1</code> is set. ReVoice writes the voice setup each client receives on connect itself, always Speex at quality 5, so there is nothing to tune. Delete those lines from <code>server.cfg</code> so they stop misleading whoever debugs voice next.</p>
47 +
48 +<h2>4. revoice.cfg has two settings</h2>
49 +<p>This is the file the current release ships, and these are the only two settings ReVoice registers:</p>
50 +<pre><code>REV_HltvCodec opus // speex, opus
51 +REV_DefaultCodec speex // speex, opus</code></pre>
52 +<p>ReVoice executes it from its own folder, <code>cstrike/addons/revoice/revoice.cfg</code>, at every map start, so a copy in <code>cstrike/</code> is never read. <code>REV_DefaultCodec</code> is the codec for every client that does not identify as a newer build: leave it on <code>speex</code>. Set to <code>opus</code>, ReVoice decodes the old builds' Speex packets as Opus. <code>REV_HltvCodec</code> only affects HLTV. Any other line in a forum copy of this file (bitrates, quality levels) is not a ReVoice setting and does nothing.</p>
53 +
54 +<h2>5. Rule out the game's own voice rules</h2>
55 +<p>Transcoding decides whether a packet can be understood; the game decides who may hear whom, and its default rules look exactly like a ReVoice fault. On ReGameDLL, <code>sv_alltalk</code> takes these values:</p>
56 +<ul>
57 +<li><code>0</code> (default) - teams cannot hear each other; dead players hear their whole team, alive players hear only alive teammates.</li>
58 +<li><code>1</code> - everybody hears everybody.</li>
59 +<li><code>2</code> - teammates hear each other, alive or dead.</li>
60 +<li><code>3</code> - as 2, plus spectators hear everybody.</li>
61 +<li><code>4</code> - alive hear alive, dead hear dead and alive.</li>
62 +<li><code>5</code> - alive hear alive teammates, dead hear dead and alive.</li>
63 +</ul>
64 +<p>Values 2 to 5 are ReGameDLL additions; the stock game DLL only knows 0 and 1. To test, set <code>sv_alltalk 1</code> with a Steam and a non-Steam player on the server. If they now hear each other both ways, your "voice bug" was the game rules.</p>
65 +
66 +<h2>6. AMXX plugins that mute voice</h2>
67 +<p>Gag plugins, dead-talk or alltalk managers and "voice for VIPs only" plugins switch voice off per player, and a misconfigured one can silence a whole group. They usually work through the engine module's <code>set_speak</code> with <code>SPEAK_MUTED</code>, fakemeta's <code>FM_Voice_SetClientListening</code> forward, or ReAPI's <code>RG_CSGameRules_CanPlayerHearPlayer</code> hook. If you have the sources, search them:</p>
68 +<pre><code>grep -rlE &quot;set_speak|Voice_SetClientListening|CanPlayerHearPlayer|VTC_&quot; /home/steam/hlds/cstrike/addons/amxmodx/scripting/</code></pre>
69 +<p>With only <code>.amxx</code> files, list what runs with <code>amxx plugins</code>, disable suspects one at a time (see <a href="/tutorials/plugins-ini-load-order">disabling plugins in plugins.ini</a>) and retest after a map change. <a href="/tutorials/amx-gag-mute-players">Gagging and muting players</a> covers how gag plugins behave.</p>
70 +<p>A hit on <code>VTC_</code> means a plugin is written for VoiceTranscoder, a separate transcoder. Run one transcoder, not two: if VoiceTranscoder is also in the Metamod <code>plugins.ini</code>, remove one of them.</p>
71 +
72 +<h2>7. The client side</h2>
73 +<p>When one particular player is silent, have them run this in their own console:</p>
74 +<pre><code>voice_enable 1
75 +voice_modenable 1
76 +voice_scale 1
77 +bind &quot;k&quot; &quot;+voicerecord&quot;</code></pre>
78 +<p><code>voice_enable 0</code> switches the client's voice system off entirely. <code>voice_modenable 0</code> is sneakier: the game only builds a hearing list for players who report it as on, so that player hears nobody even though everyone hears them. <code>voice_scale</code> is the playback volume of other players. Holding the bound key should show the microphone icon; no icon means a bind, input device or Windows microphone permission problem, all covered in <a href="/tutorials/cs16-mic-not-working">microphone not working</a>.</p>
79 +<p><code>voice_loopback 1</code> plays the player's own voice back to them, but ReVoice returns your own packet untouched, so loopback proves the microphone and the client, not the transcoding. A player who cannot hear one specific person may have muted them on the scoreboard; those mutes are saved in <code>voice_ban.dt</code> in the client's <code>cstrike</code> folder and survive reconnects.</p>
80 +
81 +<h2>Common errors by symptom</h2>
82 +<ul>
83 +<li><strong>Steam players hear each other, non-Steam players are silent both ways</strong> - ReVoice is not running. Check <code>meta list</code> for <code>fail</code> or <code>badf</code>, make sure Reunion is above ReVoice and ReHLDS is present, then restart the server.</li>
84 +<li><strong>One-way between Steam and non-Steam</strong> - run <code>rev status</code> while the silent player is on. A Steam player on <code>speex</code> or an old build on <code>opus</code> is misclassified: put <code>REV_DefaultCodec</code> back to <code>speex</code>; if it already is, the client is misreporting its build.</li>
85 +<li><strong>One-way between teammates, Steam or not</strong> - usually the alive/dead rule of <code>sv_alltalk 0</code>: the dead hear the living, the living do not hear the dead. That is working as designed.</li>
86 +<li><strong>One player cannot hear one other player</strong> - a scoreboard mute or a gag, not ReVoice.</li>
87 +<li><strong>Garbled or robotic voice</strong> - have the speaker try <code>voice_loopback 1</code>. Robotic to themselves means their microphone level or boost. Clean loopback: check <code>rev status</code> for a wrong codec, then packet loss and very low client <code>rate</code> values, since voice rides in the unreliable part of each update and is skipped when there is no room.</li>
88 +<li><strong>Nobody hears anyone, not even Steam to Steam</strong> - <code>sv_voiceenable</code> is 0, a plugin is muting everyone (step 6), or a second transcoder is loaded.</li>
89 +</ul>
90 +
91 +<h2>Verification checklist</h2>
92 +<ul>
93 +<li><code>version</code> shows ReHLDS, and <code>meta list</code> shows Reunion <code>RUN</code> above ReVoice <code>RUN</code>.</li>
94 +<li>No <code>[REVOICE]</code> errors in the startup output.</li>
95 +<li><code>sv_voiceenable</code> prints 1, and <code>server.cfg</code> no longer sets <code>sv_voicecodec</code> or <code>sv_voicequality</code>.</li>
96 +<li><code>addons/revoice/revoice.cfg</code> has <code>REV_DefaultCodec speex</code>.</li>
97 +<li><code>rev status</code> shows Steam players on <code>opus</code>, non-Steam players on <code>speex</code>, nobody on <code>none</code>.</li>
98 +<li>With <code>sv_alltalk 1</code> as a test, a Steam and a non-Steam player hear each other in both directions. Then restore your normal value.</li>
99 +</ul>
0 100