Skip to the content
Docs

Voice & Voice Changer

On this page4

Every character gets a hidden voice frequency the moment it is created. It has nothing to do with the player's real voice — it is a value attached to the character and kept on the server. Recognising a voice means recognising that frequency.

The voice bar only fills face to face. A voice over the radio or a phone does not count.

Picking a voice system

KeyDefaultAllowed
Config.VoiceSystem'auto'auto · pma-voice · saltychat · yaca-voice · tokovoip_script · enhanced · native · custom

Auto order: pma-voice → saltychat → yaca-voice → tokovoip_script → native.

SystemTalk detectionAudible changer
pma-voicefullyes
SaltyChatyes (needs its RequestTalkStates = true)no
YaCAyesno
TokoVOIPbest effortno
native Mumbleyesno
enhanced (FiveM for GTA V Enhanced)native, voice results flagged for admins — betano

Details per system, including the settings to change on their side: Voice Systems.

Config.Voice

KeyDefaultAllowedWhat it does
RequireBothReportstruetrue / falseThe scanner must hear the target and the target's own game must report talking.
IgnoreRadiotruetrue / falseA voice heard over the radio never fills the bar.
IgnoreCalltruetrue / falseA voice heard over a phone call never fills the bar.
UseVoiceRangetruetrue / falseOnly count talking while the scanner is inside the target's voice range.
MinRange1.5metresA voice range smaller than this is treated as this.
SampleMs200100–250How often talking is sampled during a scan.
LowTrustSelfReporttruetrue / falseOn voice scripts that cannot see other players talking, use the target's own report and flag the voice result for admins.
ConflictCreditShare0.50.0–1.0When the players' games disagree about whether someone talked, the share of the heard time that still counts. Leave as is.

The automatic voice check

Config.Voice.AutoLowTrust watches for voice scripts that report talking unreliably. When it switches on, voice results on your server are flagged for admins, and the console says so:

Code
[5code-recognition] Voice detection is low-trust on this server (provider: enhanced). Voice results are flagged for admins.
KeyDefaultWhat it does
AutoLowTrust.EnabledtrueTurn the automatic check on or off.
AutoLowTrust.MinSpokeMs, .MinTargets, .MinScanners, .ExpireMinutessee config.luaHow sure the check must be before it acts, and how long the flag lasts. Leave them as they are.

recognition:status shows your players' voice providers and whether that flag is on.

The voice changer

lua
Config.VoiceChanger = {
    BatterySeconds = 600,
    DrainWhile = 'on',
    AudibleEffect = 'auto',
    EffectRange = 30.0,
    DefaultPreset = 'random',
    CheckpointPct = 10,
    ResetFlashMs = 1000,
}
KeyDefaultAllowedWhat it does
BatterySeconds600 (10 min)secondsUse per full battery.
DrainWhile'on''on' · 'talking'on = drains whenever the device is switched on. talking = only while the wearer talks.
AudibleEffect'auto''auto' · 'off'Whether people nearby also hear the effect. auto = yes on pma-voice, nothing elsewhere.
EffectRange30.0metresWho gets the sound effect. It is sent only to players this close.
DefaultPreset'random''random' or a preset nameThe sound of a brand-new device. One fake voice per device, forever.
CheckpointPct101–50Save the battery level to the database every N % of drain.
ResetFlashMs1000msHow long the scanner's voice icon flashes orange when the voice bar resets.

Presets

Three ship by default. They are pma-voice radio-filter settings.

PresetLabel
robotRobot
radioRadio
muffledMuffled
lua
Presets = {
    robot   = { label = 'Robot',   fx = { freq_low = 200.0, freq_hi = 5000.0, rm_mod_freq = 50.0, rm_mix = 0.55, fudge = 0.0, o_freq_lo = 200.0, o_freq_hi = 5000.0 } },
    radio   = { label = 'Radio',   fx = { freq_low = 500.0, freq_hi = 3000.0, rm_mod_freq = 0.0,  rm_mix = 0.0,  fudge = 0.4, o_freq_lo = 500.0, o_freq_hi = 3000.0 } },
    muffled = { label = 'Muffled', fx = { freq_low = 100.0, freq_hi = 1200.0, rm_mod_freq = 0.0,  rm_mix = 0.0,  fudge = 0.0, o_freq_lo = 100.0, o_freq_hi = 1200.0 } },
}

What the battery running out does

The device stops. The scanner's voice bar resets to zero and the icon flashes orange, and from that moment the scan starts learning the wearer's real frequency. The wearer is warned before it happens (Config.Battery.WarnAtPct, default at 20 % and 5 %).

What a fake voice is worth

Config.Scoring.FakeVoiceFactor (default 0.50) halves the voice points a changed voice contributes — 20 of the 40. See Scanning & Scoring.

The bar itself still fills to 100 %, because bars show what you observed. You did hear a voice clearly; it just was not theirs.

Being caught with one

Config.MagneticScanner.DetectVoiceChanger decides whether a magnetic scanner picks up a voice changer at all. Default: 'off'. See Devices & Reports.

Batteries

KeyDefaultAllowedWhat it does
Config.Battery.RechargeTo1001–100What % a battery item charges a device to.
Config.Battery.Consumetruetrue / falseThe battery item is used up.
Config.Battery.NewDevicePct1000–100Charge of a brand-new device.
Config.Battery.WarnAtPct{ 20, 5 }list of %Warn the wearer when charge drops below these.
Config.Battery.ShowAsDurabilitytruetrue / falseox_inventory: draw the battery as the item's durability bar.