Voice chat makes or breaks a FiveM roleplay server. Players expect proximity audio that fades with distance, radios that crackle to life when they press a key, and phone calls that work across the map. The community standard for all of this is pma-voice, a lightweight resource that wraps FiveM’s built-in Mumble voice system. This guide walks through installing it, the convars that matter, and how to migrate away from the older default voice resource.
What pma-voice actually is
FiveM has shipped with the Mumble client handling in-game voice for a long time. pma-voice does not replace Mumble — it is a drag-and-drop wrapper around that built-in system, written and maintained on the AvarianKnight/pma-voice GitHub repository. It adds the parts the base game does not give you out of the box: proximity ranges you can cycle, radio channels, phone calls, and a clean UI showing who is talking.
Because it hooks directly into Mumble natives, pma-voice is not compatible with other voice systems. If you are running vMenu’s built-in voice, an ESX/legacy voice script, or any other voice resource, you have to disable it first. Running two at once is the single most common cause of “voice doesn’t work” tickets.
Replacing the old voice resource
Older server builds and many starter templates ship with a default voice resource (commonly referenced as mumble-voip) or bundle voice into vMenu. Before installing pma-voice, remove or stop those. Comment out or delete any line that starts the old voice resource in your server.cfg, and make sure no other script is calling the Mumble proximity natives — more on that below.
- Remove legacy/conflicting voice resources: vMenu voice,
mumble-voip,esx_voice,vdk_voice, or similar. - Confirm no other resource overrides Mumble — keep proximity control with pma-voice only.
- Then add pma-voice as your single voice resource.
Installing pma-voice
Installation is genuinely drag-and-drop. Download the latest release from the repository, drop the folder into your resources directory, and add a single line to server.cfg. The resource folder should be named pma-voice exactly so that ensure pma-voice resolves correctly.
# server.cfg — start pma-voice as your only voice resource
ensure pma-voice
That is the minimum needed to get proximity voice working. Everything else is tuning. If you are unsure how your resources directory and start order are laid out, our FiveM server artifacts explainer covers where files live and how the server loads them.
The convars that matter
pma-voice is configured almost entirely through convars set in server.cfg. Place these before the ensure pma-voice line so they are read on startup. Below are the documented convars and their default values straight from the project README — do not invent values, and check the current README if a setting behaves unexpectedly, since defaults can change between releases.
| Convar | Default | What it does |
|---|---|---|
| voice_enableRadios | 1 | Enables the radio system |
| voice_enableCalls | 1 | Enables phone/call audio |
| voice_defaultRadio | LMENU | Push-to-talk key for radio |
| voice_defaultCycle | F11 | Key to cycle proximity range |
| voice_enableProximityCycle | 1 | Allows players to cycle proximity |
| voice_defaultVoiceMode | 2 | Default proximity (1 whisper, 2 normal, 3 shout) |
| voice_defaultRadioVolume | 30 | Default radio volume |
| voice_defaultCallVolume | 60 | Default call volume |
| voice_enableSubmix | 1 | Audio submix effects (radio static, etc.) |
| voice_enableUi | 1 | Built-in talking UI |
A typical starting block looks like this. Note that convars use the setr prefix so they are replicated to clients:
# Voice config — set BEFORE ensure pma-voice
setr voice_enableRadios 1
setr voice_enableCalls 1
setr voice_defaultVoiceMode 2
setr voice_enableSubmix 1
ensure pma-voice
Proximity, radio, and calls
Proximity voice is the default behaviour the moment pma-voice starts. Players talk and their audio attenuates with distance. With voice_enableProximityCycle on, pressing the voice_defaultCycle key (F11 by default) lets them switch between whisper, normal, and shout ranges set by voice_defaultVoiceMode.
Radio and calls are driven by exports rather than convars alone — your framework or a radio script (for example a QBCore or ESX radio item) calls pma-voice exports to put players on a shared frequency. When a player holds the radio key, their voice broadcasts to everyone on that channel. If you are building on QBCore, pair this with our QBCore installation guide so the radio item and job logic line up with your voice setup.
The one warning that breaks everything
The README is explicit about this, and it is worth repeating because it causes silent, hard-to-debug failures. Do not let any other script override these natives:
NetworkSetTalkerProximity
MumbleSetTalkerProximity
MumbleSetAudioInputDistance
MumbleSetAudioOutputDistance
NetworkSetVoiceActive
If a custom or old script touches any of these, pma-voice can break in ways that look like a hosting problem but are not. The official FiveM docs note that MUMBLE_SET_TALKER_PROXIMITY is the native used to limit voice distance — let pma-voice own it exclusively. For the full picture on the underlying voice system, see the Cfx.re voice documentation and our own FiveM hosting docs.
Solid voice performance also depends on having enough headroom on your machine — a struggling box drops voice packets first. If you are planning a populated RP server, reliable dedicated FiveM server hosting keeps Mumble voice smooth even with a full grid of players.
Frequently asked questions
Do I need a separate Mumble server for pma-voice?
No. pma-voice wraps the Mumble voice system that is already built into FiveM. You do not run or pay for an external Mumble or SaltyChat TeamSpeak server. Just ensure pma-voice and the built-in system handles transport.
How do I change the radio push-to-talk key?
Set the voice_defaultRadio convar in server.cfg before ensure pma-voice. The default is LMENU (left Alt). Use a valid FiveM control name and reload the resource for it to apply.
Voice stopped working after I added another resource — why?
Almost always a conflict. Either a second voice system is running, or a new script overrides one of the Mumble proximity natives listed above. Disable the other voice resource and audit any script that touches voice. Confirm pma-voice is the only one calling those natives.
Ready to play?
Run your own FiveM server with XGamingServer
Spin up an always-on FiveM server your friends can join in minutes — no port-forwarding, no tech headaches.






