Promotiraj s'rv'r
89 lines 8.2 KiB Markdown Source Rendered Raw Permalink History
---
title: "How to Install ReVoice for Non-Steam Voice Chat"
excerpt: "Install the ReVoice Metamod plugin so Steam and non-Steam CS 1.6 clients can hear each other, configure the codecs, and fix the silent-voice problems."
category: "installation"
tags: "revoice, voice"
image: ""
read_time: "8 min read"
---
<p>Voice chat in CS 1.6 is a codec problem. Steam clients send voice in Steam's own format: <strong>Opus</strong> on current builds, <strong>SILK</strong> on older Steam builds. Clients on older builds, including classic non-Steam builds, speak the legacy <strong>Speex</strong> codec. On a mixed server, half your players press their voice key and the other half hear nothing. <strong>ReVoice</strong> is a Metamod plugin that transcodes between these codecs on the server, so everyone hears everyone.</p>

<p>If your server is Steam-only, you do not need ReVoice. If you accept non-Steam players — which, if you run <a href="/tutorials/install-reunion">Reunion</a> or <a href="/tutorials/install-dproto">dproto</a>, you do — you almost certainly do.</p>

<h2>1. Prerequisites</h2>
<ul>
<li>ReHLDS. ReVoice will not load on stock HLDS: it stops with <code>[REVOICE]: Failed to locate REHLDS API</code>.</li>
<li>Metamod loaded — <code>meta version</code> must answer. See <a href="/tutorials/install-metamod-r">Metamod-r</a>.</li>
<li><a href="/tutorials/install-reunion">Reunion</a>, loaded above ReVoice. ReVoice asks for Reunion's API when it loads and refuses to start without it (<code>[REVOICE]: Failed to locate Reunion api</code>). It needs Reunion specifically, so it does not work with dproto.</li>
<li>Voice enabled at all on the server. This is easy to forget:
<pre>sv_voiceenable 1</pre>
Older guides also set <code>sv_voicecodec</code> and <code>sv_voicequality</code> here. ReHLDS does not have those cvars, so they do nothing; ReVoice sends each client its codec setup itself.
</li>
</ul>

<h2>2. Install the plugin</h2>
<p>ReVoice is a <strong>Metamod plugin</strong>, not an AMXX plugin. It goes in its own directory under <code>addons/</code> and it is registered in <code>metamod/plugins.ini</code>, not in AMXX's <code>plugins.ini</code>. Mixing those two files up is the most common installation mistake.</p>
<pre>mkdir -p /home/steam/hlds/cstrike/addons/revoice
cp revoice_mm_i386.so /home/steam/hlds/cstrike/addons/revoice/
cp revoice.cfg        /home/steam/hlds/cstrike/addons/revoice/
chmod 644 /home/steam/hlds/cstrike/addons/revoice/*</pre>
<p>Add it to <code>cstrike/addons/metamod/plugins.ini</code>:</p>
<pre>linux addons/reunion/reunion_mm_i386.so
linux addons/revoice/revoice_mm_i386.so
linux addons/amxmodx/dlls/amxmodx_mm_i386.so</pre>
<p>Order in <code>plugins.ini</code> is load order, and here it matters: Reunion must be above ReVoice, because ReVoice looks up Reunion's API at the moment it loads and refuses to start if Reunion is not loaded yet. Keeping both above AMXX is the convention. On Windows the lines start with <code>win32</code> and point at <code>reunion_mm.dll</code> and <code>revoice_mm.dll</code>.</p>

<h2>3. Configure revoice.cfg</h2>
<p>The release ships a two-line <code>revoice.cfg</code>, and these are the only two settings ReVoice has:</p>
<pre>REV_HltvCodec opus        // speex, opus
REV_DefaultCodec speex    // speex, opus</pre>
<p><code>REV_DefaultCodec</code> is the codec ReVoice assumes for a client unless it identifies as a newer build: on connect, ReVoice asks a protocol 48 client for its <code>sv_version</code> and handles build numbers above 4554 as Opus. Everyone else gets this value, so leave it on <code>speex</code>; set to <code>opus</code>, ReVoice would decode the old builds' Speex packets as Opus. <code>REV_HltvCodec</code> is the codec used for HLTV. There is no bitrate or quality setting: ReVoice tells every client to use Speex at quality 5 by itself.</p>
<p>ReVoice executes this file from its own folder, <code>cstrike/addons/revoice/revoice.cfg</code>, at every map start, so a copy anywhere else is never read. Any other cvar name you find in a forum copy of this file (bitrates, quality levels) is not a ReVoice setting and does nothing.</p>

<h2>4. Restart and verify</h2>
<p>Metamod plugins load at server start.</p>
<pre>meta list</pre>
<pre>Currently loaded plugins:
      description      stat pend  file                vers   src  load  unload
 [ 1] Reunion          RUN   -    reunion_mm_i386.so  0.2.x  ini  Start Never
 [ 2] Revoice          RUN   -    revoice_mm_i386.so  0.1.x  ini  Start Never
 [ 3] AMX Mod X        RUN   -    amxmodx_mm_i386.so  1.9.0  ini  Start ANY
3 plugins, 3 running</pre>
<p>ReVoice must be <code>RUN</code>. <code>bad load</code> means the binary is the wrong architecture or built against an incompatible Metamod API — see <a href="/tutorials/fix-metamod-bad-load">bad load</a>.</p>
<p><code>fail</code> means the file loaded but ReVoice refused to start. The startup output says why: <code>[REVOICE]: Failed to locate REHLDS API</code> (you are on stock HLDS) or <code>[REVOICE]: Failed to locate Reunion api</code> (Reunion is missing or listed below ReVoice).</p>

<h2>5. The real test</h2>
<p>Console output proves nothing about voice. You need two clients:</p>
<ol>
<li>One <strong>Steam</strong> client and one <strong>non-Steam</strong> client on the server at once.</li>
<li>Both on the same team, both with <code>voice_enable 1</code> and a bound <code>+voicerecord</code> key.</li>
<li>Steam client talks → non-Steam client must hear it.</li>
<li>Non-Steam client talks → Steam client must hear it.</li>
</ol>
<p>Both directions. It is entirely possible to have transcoding working one way and not the other, and testing with two clients of the same kind proves nothing at all — they could hear each other without ReVoice.</p>

<h2>Client-side settings that break voice</h2>
<p>Half of "ReVoice doesn't work" is client configuration. Have the player run, in their own console:</p>
<pre>voice_enable 1
voice_scale 1.0
voice_loopback 1   // temporarily: they hear themselves back</pre>
<p><code>voice_loopback 1</code> is the quickest triage. If they cannot hear their own voice looped back, the problem is their microphone or their client, and no server-side change will fix it.</p>

<h2>Common errors</h2>
<ul>
<li><strong>ReVoice is <code>RUN</code> but nobody hears anything</strong> - <code>sv_voiceenable</code> is 0, and ReVoice discards every voice packet. Check in the console with <code>sv_voiceenable</code> (no argument prints the value).</li>
<li><strong>Only Steam players hear each other</strong> - ReVoice is not actually loaded (check <code>meta list</code>, not the file on disk), or <code>REV_DefaultCodec</code> is set to something other than <code>speex</code>.</li>
<li><strong>Voice is choppy or robotic</strong> - ReVoice has no bitrate to tune. Run <code>rev status</code> in the server console to see the codec ReVoice assigned each player (Steam clients should show <code>opus</code>, old non-Steam builds <code>speex</code>); a player on the wrong codec comes out as noise. Otherwise look at packet loss and the players' <code>rate</code>: voice travels in the unreliable part of each update and is dropped when there is no room.</li>
<li><strong><code>fail</code> in <code>meta list</code></strong> - ReHLDS or Reunion is missing, or Reunion is listed below ReVoice. The <code>[REVOICE]:</code> line in the startup output names which.</li>
<li><strong><code>bad load</code></strong> — wrong architecture. <code>file revoice_mm_i386.so</code> must report <em>ELF 32-bit, Intel 80386</em>.</li>
<li><strong>Works on Steam clients, silent on non-Steam</strong> — the classic case; walk through <a href="/tutorials/fix-revoice-no-voice-nonsteam">non-Steam players have no voice</a>.</li>
</ul>

<h2>Verification checklist</h2>
<ol>
<li><code>meta list</code> - Reunion and ReVoice both <code>RUN</code>, Reunion listed above ReVoice.</li>
<li><code>sv_voiceenable</code> prints <code>1</code>.</li>
<li>A Steam client and a non-Steam client hear each other, in both directions.</li>
<li>No voice-related spam in the server log during a full map.</li>
</ol>
<p>If you run a mixed server, ReVoice belongs in the same install batch as <a href="/tutorials/install-reunion">Reunion</a> and <a href="/tutorials/install-rechecker">ReChecker</a> — they are the three Metamod plugins that make a non-Steam-friendly server behave like a proper one.</p>