pma-voice FiveM Setup Guide 2026: Config, Radio, Mumble VoIP

Published on | Updated

Set up pma-voice on a FiveM server: install, the server.cfg convars it really reads, ranges, radio, voice intent, moving off mumble-voip, and common errors.

Two players standing between their cars at night below the Vinewood sign in GTA V

You want proximity voice, a police radio and phone calls on your FiveM server, and every guide shows different setr voice_ lines. Most of them mean pma-voice, which the ESX Legacy and Qbox recipes in txAdmin install. This guide sets it up step by step, checked against pma-voice's code and Cfx.re's docs on 31 October 2026.

Quick answer: pma-voice is a free, MIT-licensed FiveM resource for proximity voice, radio and calls on FiveM's built-in Mumble voice. Name the folder pma-voice, turn on OneSync, add ensure pma-voice to server.cfg above the scripts that use it, and run no other voice system. No convar is required, and leave voice_useSendingRangeOnly unset: its author reversed his advice on it in November 2025. Players cycle their range with F11 and use the radio with Left Alt. On FiveM for GTAV Enhanced, Mumble is deprecated and pma-voice needs the sv_mumble compatibility setting.

Install pma-voice

pma-voice needs OneSync, which its manifest lists as a dependency, and it must be the only voice system: the README names vMenu's voice chat as one to disable and asks you not to override NetworkSetTalkerProximity, MumbleSetTalkerProximity, MumbleSetAudioInputDistance, MumbleSetAudioOutputDistance or NetworkSetVoiceActive in other scripts.

If you deployed ESX Legacy or Qbox with txAdmin's Recipe Deployer, you already have it, in resources/[standalone] or resources/[voice]: both recipes download it from the main branch and switch OneSync on. Our txAdmin guide covers the deployer.

For a manual install, use main too. GitHub labels v6.6.2 from May 2022 as Latest only because the newer v7.0.2-rc3 (30 May 2025) is a pre-release, and main, last changed on 17 June 2026, is newer than both. Main renamed v6's voice_defaultPhoneVolume and voice_enablePhones to voice_defaultCallVolume and voice_enableCalls.

  1. On github.com/AvarianKnight/pma-voice, select Code, then Download ZIP.
  2. Rename the extracted pma-voice-main folder to pma-voice, since scripts call it as exports['pma-voice']. The ui folder already holds the built interface, so nothing needs compiling.
  3. Upload it to resources and add ensure pma-voice to server.cfg above your radio, phone and HUD scripts.
  4. Restart and join. The F8 console shows Script initialization finished. when pma-voice loads and Connecting to mumble, setting targets. when voice connects.

On our FiveM hosting, txAdmin comes pre-installed and you upload folders through the control panel or SFTP.

pma-voice Config in server.cfg

Settings are setr convars in server.cfg. The README says to add one only when you change a default, and both recipes put them above the ensure line:

# game audio with 3D sound, echo and reverb
setr voice_useNativeAudio true
# optional: the ` key instead of F11 to cycle the range
setr voice_defaultCycle "GRAVE"
# starting radio and call volume, whole numbers from 2 to 100
setr voice_defaultRadioVolume 60
setr voice_defaultCallVolume 80
ensure pma-voice
ConvarDefault on mainWhat it does
voice_useNativeAudiofalse, switched on when no audio option is setThe game's own audio with 3D sound, echo and reverb; needed for the radio and call effect
voice_useSendingRangeOnlyfalseUses only the range the speaker's client sends
voice_defaultCycleF11Cycles Whisper, Normal and Shouting
voice_defaultRadioLMENU (Left Alt)Radio push-to-talk
voice_defaultVoiceMode2Starting range: 1 Whisper, 2 Normal, 3 Shouting
voice_enableRadioAnim1Shoulder-mic animation (0 in v6.6.2)
voice_enableUi1pma-voice's range and radio indicator

Key convars only set the default for new players; anyone who joined before changes keys under Key Bindings, FiveM, pma-voice. Use one audio option: FiveM's docs call voice_use3dAudio deprecated on FiveM, and the README says not to combine it with native audio.

Why voice_useSendingRangeOnly Should Stay Unset

The README still recommends it, v7.0.2-rc3 switches it on when no audio option is set, and the ESX Legacy recipe sets it to true. On 25 November 2025 the author wrote in a commit that it "should preferably stay not set, as setting this will use whatever distance is sent by the mumble client, instead of based off of the ped." FiveM's client source shows the effect: a listener normally uses the smaller of its own range and the speaker's, and with this convar only the speaker's. Main now warns when it is true, Qbox's voice.cfg leaves it off, and QBCore's recipe sets it to false.

Lines That Do Nothing

Older guides, this one's first version included, list lines that pma-voice's current code never reads: voice_defaultVolume, voice_syncData, voice_zoneRadius and voice_chat. The first two come from QBCore's recipe. Delete them. The radio and call volumes are read as whole numbers, so 0.3 becomes 0, and a 0 or 1 makes the server reset both to their defaults with a warning that they are "set as a float".

Proximity Ranges

The ranges live in shared.lua, in GTA distance units:

ModeWith native audioWithout native audio
Whisper1.53.0
Normal3.07.0
Shouting6.015.0

A code comment says native audio distance "seems to be larger" than regular GTA units, and with native audio the proximity check also triples the range. Edit shared.lua, again after each update, or override the range from a client script:

-- megaphone: 30 units, and the player can't cycle away from it
exports['pma-voice']:overrideProximityRange(30.0, true)
-- back to the player's own mode
exports['pma-voice']:clearProximityOverride()

addVoiceMode(distance, name) and removeVoiceMode(name) edit the cycle.

Radio and Calls

Radio channels are plain numbers. The server keeps each channel's members, and while a player holds the radio key, their client adds every member as a voice target, so distance doesn't matter. Calls need no radio key: everyone in your call hears you. A player is on one radio channel at a time; the radio item and screen usually come from another script, such as mm_radio in the Qbox recipe.

-- client side
exports['pma-voice']:setRadioChannel(1)   -- join channel 1, 0 leaves the radio
exports['pma-voice']:setCallChannel(5)    -- join call 5

-- server side
exports['pma-voice']:setPlayerRadio(source, 1)
-- only players with the radio.police ACE can join channel 1
exports['pma-voice']:addChannelCheck(1, function(source)
    return IsPlayerAceAllowed(source, 'radio.police')
end)

Without a check, anyone can join any channel; a player who fails one is sent back to no radio. The radio also goes quiet when a disableRadio bit is set (1 dead, 2 cuffed, 4 police-cuffed, 8 underwater, 16 no radio item, 32 switched off), which scripts set with addRadioDisableBit and removeRadioDisableBit. Players have /vol (1 to 100) for radio, call and mic-click volume; admins have /muteply with a player ID and optional seconds, 900 by default, after add_ace group.superadmin command.muteply allow.

How pma-voice Uses Mumble Channels

Each player gets their own Mumble channel on joining, the first free number from 1 to 2048. Every 200 ms (voice_refreshRate), each client adds the channels of players within range to its voice target, so your voice only reaches players near you; call partners are added wherever they are, and radio members while you hold the radio key. The setVoiceState export adds 65535, the highest client ID, to custom channels, so they never land on a player's channel. Routing buckets are supported natively.

Mumble VoIP in FiveM: mumble-voip and pma-voice

"Mumble VoIP" in FiveM means two things. FiveM's voice itself is Mumble: Cfx.re's docs say FiveM "has been using the mumble client to handle in-game voice communication". And mumble-voip was FrazzIe's resource on top of it, "A tokovoip replacement that uses fivems mumble voip". Its GitHub repository is archived and read-only; the last commit on its default branch is from 16 October 2020 and the last release, 1.5.5, from 15 September 2020.

pma-voice picked up where it stopped. Its README credits mumble-voip as where "the concept came from", and its manifest provides mumble-voip, which FiveM's docs say makes it "start instead of the specified resource, if another resource requires it". It keeps the SetMumbleProperty, SetRadioChannel and SetCallChannel exports. To switch, remove mumble-voip and its ensure line, install pma-voice, search your scripts for mumble-voip exports pma-voice doesn't have, such as SetRadioChannelName, and test proximity, radio and a call with two players. Our FiveM voice chat comparison weighs pma-voice against SaltyChat.

Voice Intent in FiveM: Speech or Music

FiveM's client handles your microphone by input intent. Speech, the default, runs noise suppression and a high-pass filter. Music switches both off, per Cfx.re's docs for MUMBLE_SET_AUDIO_INPUT_INTENT, and in FiveM's client source it also skips the check that decides if the mic picks up a voice. Use music for an instrument or a track played into the mic; keep speech for talking. In pma-voice, players type:

/setvoiceintent music
/setvoiceintent speech

setr voice_allowSetIntent 0 disables the command. The choice is stored in the voiceIntent state bag, Player(source).state.voiceIntent on the server, and FiveM resets the intent to speech when the player leaves the server.

pma-voice on FiveM for GTAV Enhanced

Everything above is for FiveM Legacy. Cfx.re's docs say FiveM for GTAV Enhanced, which is in early access, "ships with a new voice implementation that replaces Mumble". For pma-voice that means:

  • Mumble natives are deprecated and only work with setr sv_mumble true (default false), which, Cfx.re warns, "allows client-controlled voice channels. Any client can join any channel and listen to any conversation."
  • In that compatibility layer, natives that take a voice target act as if there is a single target.
  • voice_useNativeAudio, voice_useSendingRangeOnly, voice_use2dAudio and voice_use3dAudio no longer exist.
  • The docs add voice_internal for the built-in voice server and an sv_voiceChat convar, default false, that controls if voice chat is enabled.

pma-voice's README and code don't mention Enhanced yet (checked 31 October 2026), so test on a separate Enhanced server before moving a city.

Troubleshooting

No voice for anyone. Without OneSync, pma-voice won't run, so check the server console as it starts. Ensure it once and run no second voice system, such as vMenu's voice chat, mumble-voip or TokoVoIP. If only one player is affected, start with their microphone and voice settings.

Ranges are wrong, or players hear the whole map. Look for a second voice system, search your scripts for the five natives the README warns about, remove setr voice_useSendingRangeOnly true, and compare shared.lua with the ranges above.

The radio is silent. The player needs a channel other than 0, no disableRadio bit and a pass on any addChannelCheck. With setr voice_debugMode 1, F8 shows lines such as The server rejected your radio change.

Echo. FiveM Legacy's Mumble code switches echo cancellation off for microphone input, so a player on speakers can send voices back. Headphones fix it.

Console lines:

  • MUMBLE_ADD_VOICE_CHANNEL_LISTEN: Tried to call native on a channel that didn't exist: harmless. The author answered in July 2026 that it "just means the player we tried to add as a voice target isn't connected to mumble."
  • It's recommended to have 'voice_useSendingRangeOnly' set to false: delete that line.
  • A warning that the volume convars "have their value set as a float": use whole numbers from 2 to 100.
  • StateBags can't be modified from the client, because the StateBag strict mode is enabled: you set setr sv_stateBagStrictMode true. The author wrote in June 2026 that pma-voice assumes clients set their own proximity and disableRadio state bags and that he doesn't see himself fixing that. Test the radio and voice HUD, or turn strict mode off.

If voice still fails on a Space-Node FiveM server, send the console lines to our support by live chat, Discord or email, 08:00 to 20:00 UTC.

FAQ

What is pma-voice? A free, MIT-licensed FiveM and RedM resource for proximity voice, radio and calls on the game's built-in Mumble voice.

Is pma voice still maintained in 2026? Yes, slowly: the last commit to main is from 17 June 2026, and the newest tagged release is the v7.0.2-rc3 pre-release from 30 May 2025.

Does pma-voice work with QBCore, Qbox and ESX? Yes, it doesn't depend on a framework. The ESX Legacy and Qbox txAdmin recipes install it, and QBCore's recipe ships a voice block for it; remove the dead lines listed above.

Does pma-voice replace TokoVoIP and mumble-voip? It is built to: its manifest marks it as a replacement for mumble-voip, tokovoip, toko-voip and tokovoip_script, and it keeps exports such as SetTokoProperty and SetRadioChannel. Run only one, then test your radio and phone scripts.

Can players be on two radio channels at once? Not on main. Joining a channel takes a player off the old one, and multiple channels are on pma-voice's TODO list.

Does pma-voice work on FiveM for GTAV Enhanced? Only through the deprecated Mumble compatibility layer, setr sv_mumble true, which Cfx.re calls less secure than its new server voice API. pma-voice's README doesn't cover Enhanced yet, so test it on a separate server first.

Sources

All opened on 31 October 2026: