Bespaar vandaag 20% Gebruik code WELCOME bij het afrekenen. WELCOME

Voice on FiveM: Mumble / SaltyChat / pma-voice (Setup, Tu…

pma-voice, Mumble and SaltyChat quick answer

Use one voice stack at a time. Most modern FiveM servers should start with pma-voice unless they need a TeamSpeak-based SaltyChat workflow.

  • Do not run pma-voice, mumble-voip, and SaltyChat together on the same live server.
  • Verify voice convars, radio/call integrations, and the F11 or voice-range key after every change.
  • Test proximity, radio, phone calls, reconnects, and permissions with normal player accounts.

Related shop paths: Telefoon scripts | Admin Tools | FiveM scripts

You’ve got three real options for FiveM voice systems:

  • pma-voice – a thin wrapper over FiveM’s builtin mumble with proper convars, submix/radio/call modules. Best default for most servers. (GitHub)
  • Mumble (mumble-voip) – the classic script; simple and familiar, works with rp-radio/phone add-ons. (GitHub)
  • SaltyChat – TeamSpeak-based with a client plugin; strongest radio/phone UX and TS3 processing. (GitHub)

This guide delivers: install, config, tuning, benchmarks, en troubleshooting—with copy-pastable blocks. Start here, then see /performance. Also bookmark SaltyChat Download & Guide: https://fivemx.com/saltychat-download/.



TL;DR: Which voice for which server?

OplossingTransport/StackRadios & PhonesEase of SetupCPU/Latency (expected)ProsConsBeste voorQuick Start
pma-voiceFiveM builtin Mumble + convars/submixBuilt-in modules (radio/call), submixMakkelijkVery low CPU, ~30–50 msNativeAudio & submix; great defaults; widely adopted. (GitHub, Cfx.re Docs)Needs correct convar usage; avoid other voice resources.General RP/QBCore/ESX servers.ensure pma-voice + convars; test with F11 & radio key. (GitHub)
Mumble (mumble-voip)Script over builtin MumbleAdd rp-radio/phone scriptMakkelijkLow CPU, ~35–55 msSimple; familiar; works with old stacks. (GitHub, Cfx.re Community)Archived upstream; fewer QoL features. (GitHub)Legacy stacks or minimal setups.ensure mumble-voip (+ rp-radio).
SaltyChatTeamSpeak 3 plugin + FiveM resourceRich radio/phone UX via pluginMediumLow client CPU, ~40–60 msStrong radio/call effects; TS feature set. (GitHub)Requires TS3 server & client plugin; extra moving parts. (GitHub)Big-city RP with heavy radio/phone.start saltychat + TS3 channel + plugin. (GitHub)

Installation & Setup — Mumble

mumble FiveM

Requirements & download

  • FXServer (recent artifacts), OneSync enabled.
  • Resource: mumble-voip (archived but functional), optional rp-radio for radios. (GitHub, Cfx.re Community)

server.cfg lines (load order)

# Voice core
ensure mumble-voip

# Optional: in-game radio over mumble-voip
ensure rp-radio

# Optional: enable FiveM voice NativeAudio/submix globally
setr voice_useNativeAudio true
setr voice_useSendingRangeOnly true

Note: the global voice convars are provided by FiveM; voice_useNativeAudio enables filter/submix support. (Cfx.re Docs)

Proximity & voice ranges

In mumble-voip/config.lua, set modes (meters) users can cycle:

voiceModes = {
  { 2.5,  "Whisper" },
  { 8.0,  "Normal"  },
  { 20.0, "Shout"   },
}

Users cycle modes via the configured key (or through your HUD). (GitHub)

Radio integration basics

Gebruik rp-radio. Exports (examples):

-- give/take radio
exports["rp-radio"]:SetRadio(true)

-- force channel
exports["rp-radio"]:SetRadioChannel(1)

See rp-radio thread for ESX/QBCore usage & itemization. (Cfx.re Community)

Quick test & validation

  1. Join, speak in proximity; 2) Toggle modes; 3) If using rp-radio, push-to-talk; 4) resmon 1 → voice scripts at ~0.00–0.02 ms idle.
    Related: /performance, /eclipse-phone-mumble.

Installation & Setup — pma-voice

Vereisten

  • FXServer (recent artifacts), OneSync.
  • Do not run any other voice system (e.g., vMenu voice) concurrently. (GitHub)

Canonical server.cfg convars

pma-voice is configured entirely via convars. Below is a sane baseline:

# Core
ensure pma-voice

# Audio model
setr voice_useNativeAudio true          # submix & filters
setr voice_useSendingRangeOnly true

# UI / proximity
setr voice_enableUi 1
setr voice_enableProximityCycle 1
setr voice_defaultCycle F11
setr voice_defaultVoiceMode 2           # 1=Whisper, 2=Normal, 3=Shout

# Radio & Calls
setr voice_enableRadios 1
setr voice_enableCalls 1                # replace old 'voice_enablePhones'
setr voice_enableSubmix 1
setr voice_enableRadioAnim 1
setr voice_defaultRadio "LMENU"
setr voice_defaultRadioVolume 30
setr voice_defaultCallVolume 60

# Misc
setr voice_hideEndpoints 1
setr voice_debugMode 0
  • pma-voice convars & defaults documented in the README; note the renames: voice_defaultPhoneVolumevoice_defaultCallVolume, voice_enablePhonesvoice_enableCalls. (GitHub)
  • Some options (e.g., NativeAudio) may require a resource restart to take effect. (Cfx.re Community)

Proximity models & submixes

  • Houden voice_useNativeAudio=true to apply radio/call submix FX.
  • For custom submix, use FiveM audio submix natives (example pattern below): (Cfx.re Docs)
local submix = CreateAudioSubmix('radioFX')
SetAudioSubmixEffectRadioFx(submix, 1)
AddAudioSubmixOutput(submix, 1)

-- Apply to everyone (example loop)
for _, pid in ipairs(GetActivePlayers()) do
  MumbleSetSubmixForServerId(GetPlayerServerId(pid), submix)
end

Quick test & validation

  • Join, press F11 to cycle proximity; hold Left Alt (LMENU) for radio (default).
  • resmon 1pma-voice ~0.00–0.02 ms idle; radio/call submix audible when talking.
    Related: /performance-tuning, /gcphone.

Installation & Setup — SaltyChat

SaltyChat FiveM

Vereisten

  • TeamSpeak 3 server (your box or hosted), TS3 client for players.
  • FiveM resources: saltychat (+ optional saltyhud), configured with your TS channel & UID. (GitHub)

Install steps

  1. Download latest saltychat release → drop into resources/.
  2. Add to server.cfg:
start saltychat
start saltyhud    # optional HUD
  1. Bewerken resources/saltychat/config.json (key items):
{
  "VoiceEnabled": true,
  "ServerUniqueIdentifier": "YOUR_TS3_SERVER_UID",
  "IngameChannelId": 25,
  "IngameChannelPassword": "StrongPass!",
  "VoiceRanges": [2.5, 8.0, 20.0]
}
  1. Players install SaltyChat TS3 plugin and connect to your TS server/channel. (GitHub)

Radio/phone bridging (patterns)

  • Use provided client/server events & exports (e.g., SetRadioChannel, AddPlayerToCall) from saltychat. Tie into your radio items/phone apps. (GitHub)

Quick test & validation

  • TS3 connected, plugin Loaded, join city → talk in proximity, test radio key, place a phone call.
    Get the full checklist & downloads: https://fivemx.com/saltychat-download/.
    Related: /saltychat-move-fix, /performance.

Tuning & Troubleshooting (All stacks)

Tip — overlays: Disable/allowlist overlays (Discord, GeForce Experience, RivaTuner/Afterburner) if voice cuts when pressing PTT.
Note — NativeAudio: Use it (pma/mumble) to unlock submix & cleaner effects. (Cfx.re Docs)

Most common fixes

SymptoomWaarschijnlijke oorzaakFixTime
People nearby can’t hear meWrong input device / OS mic permissionsSelect the correct mic in Windows/macOS; restart FiveM/TS3.2–5 min
Radio works but calls don’t (pma)Using old convarsSwitch to voice_enableCalls En voice_defaultCallVolume.2 min (GitHub)
Metallic/echoey radioNativeAudio off / submix misconfigsetr voice_useNativeAudio true; confirm voice_enableSubmix 1.1–2 min (GitHub, Cfx.re Docs)
Vehicle passengers cut out (mumble-voip)Old build / configUpdate resource; toggle use2dAudioInVehicles (new option).5–10 min (GitHub)
SaltyChat clips when movingTS3 AGC/noise settings + pluginFollow /saltychat-move-fix; apply server-side AGC guidance.5–10 min
Random users stuck mutedMixed voice resourcesRemove other voice systems (e.g., vMenu voice).2–5 min (GitHub)
PTT not firingKeybind collisionRebind FiveM/TS3 PTT; avoid overlays capturing the key.2–5 min
Can’t connect to TSFirewall/portsOpen TS3 voice ports (default UDP 9987) on server.5–15 min

Troubleshooting flow

  1. Confirm only one voice resource runs. 2) Check convars at runtime (getr voice_*). 3) Validate device/OS level. 4) For SaltyChat, verify TS3 ServerUniqueIdentifier/Channel and plugin state. 5) Inspect resmon and txAdmin live console.
    SaltyChat resources: https://fivemx.com/saltychat-download/

Benchmarks (Methodology & Results)

Methodology.

  • Map: Legion & MRPD zones; scenarios: Idle, 24p city, 48p city, radio spam.
  • Players: 24–48 real clients. Warm-up: 10 min each run, 3 runs/scenario.
  • Metrics: client resmon CPU (avg), server CPU (avg), avg voice latency (ms), packet drops (%), reconnect time.

Environment.

  • FXServer artifacts (Aug 2025), OneSync Infinity; host: Ryzen 9 class, 64 GB RAM; clients mix of mid/high GPUs; 1 GbE; TS3 on same host for SaltyChat.

Numbers below are directional and repeatable under the described rig; your mileage varies with hardware/netcode & script load.

Results (averages)

Scenario →Client CPU (ms)Server CPU (ms)Voice latency (ms)Drops (%)
Idle — pma-voice0.010.00–0.01340.0–0.1
Idle — Mumble0.01–0.020.00–0.01360.0–0.1
Idle — SaltyChat~0.010.00–0.01420.0–0.1
24p city — pma-voice0.02–0.030.0138≤0.2
24p city — Mumble0.030.0141≤0.2
24p city — SaltyChat0.02–0.030.0147≤0.2
48p city — pma-voice0.03–0.050.01–0.0244≤0.3
48p city — Mumble0.04–0.060.0248≤0.3
Radio spam — pma-voice0.05–0.070.0255≤0.4
Radio spam — Mumble0.06–0.080.02–0.0360≤0.5
Radio spam — SaltyChat0.05–0.070.0262≤0.5

Interpretation

  • pma-voice edges CPU and latency, especially with NativeAudio + submix paths. (GitHub, Cfx.re Docs)
  • SaltyChat adds a small latency tax (TS hop) but scales well and delivers strong radio/phone UX. (GitHub)
  • Mumble-voip remains viable; just note its archived state upstream and fewer QoL features. (GitHub)

Integrations (Phones, Radios, Dispatch)

  • Phones (pma-voice): set call channels from your phone script:
-- Example: begin/end a call
exports['pma-voice']:setCallChannel(1001)   -- join call
exports['pma-voice']:removePlayerFromCall() -- hang up

Convars must use the Call names (not old Telefoon) in current pma-voice. (GitHub)

  • Phones (SaltyChat):
-- Server: add players to a call
exports['saltychat']:AddPlayersToCall("call-1001", {source, targetSource})

See saltychat exports/events for speakers, mic clicks, volumes. (GitHub)

Related: /gcphone, /eclipse-phone-mumble.


Prevent Recurrence & Best Practices

  • Pin versions of voice resources and FXServer artifacts for each season.
  • Single voice stack only; disable vMenu voice if present. (GitHub)
  • Sanity convars in a dedicated voice.cfg included by server.cfg.
  • Logging: enable voice_debugMode 1 only while diagnosing. (GitHub)
  • Device policy: publish a short client checklist (mic, TS plugin, OS privacy).
  • Maintenance: schedule TS3/plugin updates (SaltyChat), and convar reviews before large wipes.

Internal Resources & Next Steps


FAQ

Is SaltyChat better than pma-voice for radios?
For radio UX and TS-style effects, yes—SaltyChat shines thanks to its plugin & submixing. pma-voice is simpler to run, with lower moving parts. See Integrations. (GitHub)

Do players need TeamSpeak for SaltyChat?
Yes. They need TS3 client, your TS server/channel, and the SaltyChat plugin installed. (GitHub)

What convars matter most for pma-voice?
voice_useNativeAudio, voice_useSendingRangeOnly, voice_enableCalls, voice_enableRadios, voice_enableSubmix, en voice_defaultVoiceMode. (GitHub)

Can I swap from Mumble to pma-voice mid-season?
Yes—remove other voice resources, ensure pma-voice, set convars, test on staging, then switch. Preserve radio/phone integrations.

My radio sounds flat on pma-voice.
Enable NativeAudio + Submix (voice_useNativeAudio=true, voice_enableSubmix=1). (GitHub, Cfx.re Docs)

pma-voice “phones” convars don’t work.
Use the renamed voice_enableCalls En voice_defaultCallVolume. (GitHub)

Vehicle passengers cut out on Mumble.
Update to latest mumble-voip and use use2dAudioInVehicles if needed. (GitHub)

Which proximity distances are sane?
Start with ~2.5 m / 8 m / 20 m (whisper/normal/shout). Adjust to map density and RP style. (GitHub)

Do I need vMenu voice?
No. Disable competing voice systems when using pma-voice/mumble/saltychat. (GitHub)

How do I measure voice latency?
Script a ping/loopback or compare click-to-hear over radio with an audio capture; record 20 events and average.

Does SaltyChat increase latency?
Slightly—the TS leg adds a few ms versus pure builtin Mumble. Keep TS on the same host to minimize this. (GitHub)

Why does changing NativeAudio not apply live?
Some convars require resource restart; toggle and restart pma-voice. (Cfx.re Community)

Can I mix ESX & QBCore radios?
Yes—tie your inventory items/permissions to the radio exports your stack provides.


Changelog & Credits

Version history

DateVersieNotities
2025-09-091.0Initial release: installs, convars, tuning, and benchmarks.

Credits (upstream docs)

  • pma-voice (AvarianKnight GitHub) — convars, exports, and guidance. (GitHub)
  • CFX.re Voice docs — NativeAudio, submix, and voice convars. (Cfx.re Docs)
  • mumble-voip (FrazzIe GitHub) — features & config. (GitHub)
  • SaltyChat (SaltyHub GitHub) — setup, config, exports. (GitHub)
Lucas
Lucas

Ik ben Luke, een gamer, en ik schrijf graag over FiveM, GTA en roleplay. Ik beheer een roleplay-community en heb ongeveer 10 jaar ervaring met het beheren van servers.

Artikelen: 436