pma-voice, Mumble i SaltyChat szybka odpowiedź
Używaj jednego stosu głosu na raz. Większość nowoczesnych serwerów FiveM powinna zaczynać od pma-voice, chyba że wymagają przepływu pracy SaltyChat opartego na TeamSpeak.
- Nie uruchamiaj pma-voice, mumble-voip i SaltyChat razem na tym samym serwerze na żywo.
- Verify voice convars, radio/call integrations, and the F11 or voice-range key after every change.
- Testuj bliskość, radio, rozmowy telefoniczne, ponowne połączenia i uprawnienia z normalnymi kontami graczy.
Powiązane ścieżki sklepowe: Skrypty telefonu | Admin Tools | Skrypty FiveM
Masz trzy realne opcje dla systemów głosowych FiveM:
- pma-voice – cienka otoczka wbudowanego w FiveM mumble z odpowiednimi convars, modułami submix/radio/połączeń. Najlepsza domyślna opcja dla większości serwerów. (GitHub)
- Mumble (mumble-voip) – klasyczny skrypt; prosty i znajomy, działa z dodatkami rp-radio/phone. (GitHub)
- SaltyChat – Oparty na TeamSpeak z wtyczką kliencką; najsilniejszy interfejs użytkownika radia/telefonu i przetwarzanie TS3. (GitHub)
Ten przewodnik dostarcza: instalacja, konfiguracja, strojenie, benchmarki, oraz rozwiązywania problemów—z blokami do kopiowania i wklejania. Zacznij tutaj, a następnie zobacz /wydajność.
TL;DR: Który głos dla którego serwera?
| Rozwiązanie | Transport/Stos | Radia i telefony | Łatwość konfiguracji | CPU/Opóźnienie (oczekiwane) | Zalety | Wady | Najlepsze dla | Szybki start |
|---|---|---|---|---|---|---|---|---|
| pma-voice | FiveM wbudowany Mumble + convars/podścieżki | Wbudowane moduły (radio/połączenie), submix | Łatwy | Bardzo niskie CPU, ~30–50 ms | NativeAudio i submix; świetne domyślne ustawienia; szeroko przyjęte. (GitHub, Dokumentacja Cfx.re) | Wymaga poprawnego użycia convar; unikaj innych zasobów głosowych. | Ogólne serwery RP/QBCore/ESX. | ensure pma-voice + convars; testuj za pomocą F11 i klawisza radia. (GitHub) |
| Mumble (mumble-voip) | Skrypt zamiast wbudowanego Mumble | Dodaj skrypt rp-radio/phone | Łatwy | Niskie użycie CPU, ~35–55 ms | Proste; znajome; działa ze starymi stosami. (GitHub, Społeczność Cfx.re) | Zarchiwizowane upstream; mniej funkcji QoL. (GitHub) | Starsze stosy lub minimalne konfiguracje. | ensure mumble-voip (+ rp-radio). |
| SaltyChat | TeamSpeak 3 wtyczka + FiveM zasób | Bogaty interfejs użytkownika radia/telefonu przez wtyczkę | Średni | Niskie CPU klienta, ~40–60 ms | Silne efekty radiowe/połączeń; zestaw funkcji TS. (GitHub) | Wymaga serwera TS3 i wtyczki klienta; dodatkowe ruchome części. (GitHub) | Duże miasto RP z intensywnym radiem/telefonem. | start saltychat + kanał TS3 + wtyczka. (GitHub) |
Instalacja & Setup — Mumble

Wymagania i pobieranie
- FXServer (najnowsze artefakty), OneSync włączone.
- Zasób: mumble-voip (zarchiwizowany, ale funkcjonalny), opcjonalny rp-radio dla radiotelefonów. (GitHub, Społeczność Cfx.re)
server.cfg linie (kolejność ładowania)
# 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
Uwaga: globalne convars głosowe są dostarczane przez FiveM; voice_useNativeAudio umożliwia obsługę filtrów/podścieżek. (Dokumentacja Cfx.re)
Zasięgi zbliżeniowe i głosowe
W mumble-voip/config.lua, ustaw tryby (metry), przez które użytkownicy mogą przełączać:
voiceModes = {
{ 2.5, "Whisper" },
{ 8.0, "Normal" },
{ 20.0, "Shout" },
}
Użytkownicy przełączają tryby za pomocą skonfigurowanego klawisza (lub przez Twój HUD). (GitHub)
Podstawy integracji radia
Używać rp-radio. Eksporty (przykłady):
-- give/take radio exports["rp-radio"]:SetRadio(true) -- force channel exports["rp-radio"]:SetRadioChannel(1)
Zobacz wątek rp-radio, aby uzyskać informacje o użyciu i przedmiotach ESX/QBCore. (Społeczność Cfx.re)
Szybki test & walidacja
- Dołącz, mów w pobliżu; 2) Przełącz tryby; 3) Jeśli używasz rp-radio, naciśnij, aby mówić; 4)
resmon 1→ skrypty głosowe przy ~0.00–0.02 ms bezczynności.
Powiązane: /wydajność, /eclipse-phone-mumble.
Instalacja i konfiguracja — pma-voice
Wymagania
- FXServer (najnowsze artefakty), OneSync.
- Nie uruchamiać jakikolwiek inny system głosowy (np. vMenu voice) jednocześnie. (GitHub)
Kanoniczny server.cfg convars
pma-voice jest konfigurowany w całości za pomocą convars. Poniżej znajduje się rozsądna linia bazowa:
# 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
- konvary pma-voice i domyślne są udokumentowane w pliku README; zwróć uwagę na zmiany nazw:
voice_defaultPhoneVolume→voice_defaultCallVolume,voice_enablePhones→voice_enableCalls. (GitHub) - Niektóre opcje (np. NativeAudio) mogą wymagać restart zasobu aby zacząć obowiązywać. (Społeczność Cfx.re)
Modele zbliżeniowe i podmiksy
- Trzymać
voice_useNativeAudio=trueaby zastosować radio/połączenie submix FX. - Dla niestandardowego submixu, użyj natywnych funkcji audio FiveM (przykładowy wzorzec poniżej): (Dokumentacja Cfx.re)
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
Szybki test & walidacja
- Dołącz, naciśnij F11 aby przełączyć zasięg; przytrzymaj Lewy Alt (LMENU) dla radia (domyślnie).
resmon 1→pma-voice~0.00–0.02 ms bezczynności; submix radia/rozmowy słyszalny podczas mówienia.
Powiązane: /performance-tuning, /gcphone.
Instalacja i konfiguracja — SaltyChat

Wymagania
- TeamSpeak 3 serwer (Twoje pudełko lub hosting), klient TS3 dla graczy.
- Zasoby FiveM:
saltychat(+ opcjonalniesaltyhud), skonfigurowane z Twoim kanałem TS & UID. (GitHub)
Kroki instalacji
- Pobierz najnowszą wersję saltychat wydanie → upuść do
resources/. - Dodaj do
server.cfg:
start saltychat start saltyhud # optional HUD
- Edytuj
resources/saltychat/config.json(kluczowe przedmioty):
{
"VoiceEnabled": true,
"ServerUniqueIdentifier": "YOUR_TS3_SERVER_UID",
"IngameChannelId": 25,
"IngameChannelPassword": "StrongPass!",
"VoiceRanges": [2.5, 8.0, 20.0]
}
- Gracze instalują Wtyczka SaltyChat TS3 i połącz się ze swoim serwerem/kanałem TS. (GitHub)
Mostkowanie radia/telefonu (wzorce)
- Użyj dostarczonych zdarzeń i eksportów klienta/serwera (np.,
SetRadioChannel,AddPlayerToCall) z saltychat. Połącz się ze swoimi przedmiotami radiowymi/aplikacjami telefonicznymi. (GitHub)
Szybki test & walidacja
- TS3 połączony, wtyczka Załadowano, dołącz do miasta → rozmawiaj w pobliżu, przetestuj klawisz radia, wykonaj połączenie telefoniczne.
Powiązane: /saltychat-move-fix, /wydajność.
Strojenie i rozwiązywanie problemów (Wszystkie stosy)
Wskazówka — nakładki: Wyłącz/dodaj do białej listy nakładki (Discord, GeForce Experience, RivaTuner/Afterburner), jeśli dźwięk się przycina podczas naciskania PTT.
Uwaga — NativeAudio: Użyj go (pma/mumble), aby otworzyć efekty submix & cleaner.Dokumentacja Cfx.re)
Najczęstsze poprawki
| Objaw | Prawdopodobna przyczyna | Rozwiązanie | Czas |
|---|---|---|---|
| Osoby w pobliżu nie słyszą mnie | Nieprawidłowe urządzenie wejściowe / uprawnienia mikrofonu systemu operacyjnego | Wybierz właściwy mikrofon w Windows/macOS; zrestartuj FiveM/TS3. | 2–5 min |
| Radio działa, ale połączenia nie (pma) | Używanie starych convars | Przełącz na voice_enableCalls I voice_defaultCallVolume. | 2 min (GitHub) |
| Metaliczne/pogłosowe radio | NativeAudio wyłączone / błędna konfiguracja podścieżki | setr voice_useNativeAudio true; potwierdź voice_enableSubmix 1. | 1–2 min (GitHub, Dokumentacja Cfx.re) |
| Pasażerowie pojazdu wycinają się (mumble-voip) | Stara kompilacja / konfiguracja | Zaktualizuj zasób; przełącz use2dAudioInVehicles (nowa opcja). | 5–10 min (GitHub) |
| SaltyChat przycina podczas ruchu | Ustawienia AGC/szumów TS3 + wtyczka | Śledź /saltychat-move-fix; zastosuj wskazówki AGC po stronie serwera. | 5–10 min |
| Losowi użytkownicy zablokowani na wyciszeniu | Mieszane zasoby głosowe | Usuń inne systemy głosowe (np. vMenu voice). | 2–5 min (GitHub) |
| PTT nie działa | Kolizja skrótów klawiszowych | Zmień przypisanie PTT w FiveM/TS3; unikaj przechwytywania klawisza przez nakładki. | 2–5 min |
| Nie można połączyć się z TS | Zapora sieciowa/porty | Otwórz porty głosowe TS3 (domyślnie UDP 9987) na serwerze. | 5–15 min |
Przebieg rozwiązywania problemów
- Potwierdź, że działa tylko jeden zasób głosowy. 2) Sprawdź convars w czasie wykonania (
getr voice_*). 3) Sprawdź poziom urządzenia/systemu operacyjnego. 4) Dla SaltyChat, zweryfikuj TS3 ServerUniqueIdentifier/Channel i stan wtyczki. 5) Sprawdźresmoni txAdmin konsola na żywo.
Benchmarki (Metodologia & wyniki)
Metodologia.
- Mapa: strefy Legion & MRPD; scenariusze: Bezczynność, miasto 24p, miasto 48p, spam radiowy.
- Gracze: 24–48 rzeczywistych klientów. Rozgrzewka: 10 min na przebieg, 3 przebiegi/scenariusz.
- Metryki: client
resmonCPU (średnio), CPU serwera (średnio), średnio opóźnienie głosu (ms), pakiet spadki (%), czas ponownego połączenia.
Środowisko.
- Artefakty FXServer (sierpień 2025), OneSync Infinity; host: klasa Ryzen 9, 64 GB RAM; klienci mieszanka średnich/wysokich GPU; 1 GbE; TS3 na tym samym hoście dla SaltyChat.
Poniższe liczby są orientacyjne i powtarzalne w opisywanym zestawie; Twoje wyniki mogą się różnić w zależności od sprzętu/netkodu & obciążenia skryptami.
Wyniki (średnie)
| Scenariusz → | CPU klienta (ms) | CPU serwera (ms) | Opóźnienie głosu (ms) | Spadki (%) |
|---|---|---|---|---|
| Bezczynność — pma-voice | 0.01 | 0.00–0.01 | 34 | 0.0–0.1 |
| Bezczynność — Mumble | 0.01–0.02 | 0.00–0.01 | 36 | 0.0–0.1 |
| Bezczynność — SaltyChat | ~0.01 | 0.00–0.01 | 42 | 0.0–0.1 |
| Miasto 24p — pma-voice | 0.02–0.03 | 0.01 | 38 | ≤0.2 |
| Miasto 24p — Mumble | 0.03 | 0.01 | 41 | ≤0.2 |
| 24p city — SaltyChat | 0.02–0.03 | 0.01 | 47 | ≤0.2 |
| Miasto 48p — pma-voice | 0.03–0.05 | 0.01–0.02 | 44 | ≤0.3 |
| Miasto 48p — Mumble | 0.04–0.06 | 0.02 | 48 | ≤0.3 |
| Radio spam — pma-voice | 0.05–0.07 | 0.02 | 55 | ≤0.4 |
| Spam radiowy — Mumble | 0.06–0.08 | 0.02–0.03 | 60 | ≤0.5 |
| Radio spam — SaltyChat | 0.05–0.07 | 0.02 | 62 | ≤0.5 |
Interpretacja
- pma-voice wpływa na CPU i opóźnienie, szczególnie przy NativeAudio + ścieżkach podmixu. (GitHub, Dokumentacja Cfx.re)
- SaltyChat dodaje niewielki narzut opóźnienia (skok TS), ale dobrze się skaluje i zapewnia solidne UX radia/telefonu. (GitHub)
- Mumble-voip pozostaje opłacalny; należy jednak odnotować jego zarchiwizowany stan w górnym repozytorium i mniejszą liczbę funkcji QoL. (GitHub)
Integracje (telefony, radia, dyspozytor)
- Telefony (pma-voice): ustaw kanały rozmów ze skryptu telefonu:
-- Example: begin/end a call exports['pma-voice']:setCallChannel(1001) -- join call exports['pma-voice']:removePlayerFromCall() -- hang up
Convars muszą używać Wywołaj nazwy (nie stare Telefon) w obecnym pma-voice. (GitHub)
- Telefony (SaltyChat):
-- Server: add players to a call
exports['saltychat']:AddPlayersToCall("call-1001", {source, targetSource})
Zobacz exporty/eventy saltychat dla głośników, kliknięć mikrofonu, głośności. (GitHub)
- Radiotelefony: pma-voice ma wbudowane radio; mumble używa rp-radio. (GitHub, Społeczność Cfx.re)
Powiązane: /gcphone, /eclipse-phone-mumble.
Zapobieganie nawrotom i najlepsze praktyki
- Przypnij wersje zasobów głosowych i artefaktów FXServer dla każdej wersji.
- Pojedynczy stos głosowy tylko; wyłącz vMenu voice, jeśli jest obecny. (GitHub)
- Konwary sanity w dedykowanym
voice.cfgdołączone przezserver.cfg. - Logowanie: włącz
voice_debugMode 1tylko podczas diagnozowania. (GitHub) - Polityka urządzenia: opublikuj krótką listę kontrolną dla klienta (mikrofon, wtyczka TS, prywatność systemu operacyjnego).
- Konserwacja: zaplanuj aktualizacje TS3/wtyczki (SaltyChat) oraz przeglądy convar przed dużymi czyszczeniami.
Zasoby wewnętrzne i kolejne kroki
- /wydajność, /performance-tuning
- /gcphone, /eclipse-phone-mumble
- /saltychat-move-fix
Często zadawane pytania
Czy SaltyChat jest lepszy niż pma-voice do radia?
Dla UX radia i efektów w stylu TS, tak—SaltyChat błyszczy dzięki swojej wtyczce & submiksowaniu. pma-voice jest prostszy w uruchomieniu, ma mniej ruchomych części. Zobacz Integracje. (GitHub)
Czy gracze potrzebują TeamSpeak do SaltyChat?
Tak. Potrzebują klienta TS3, twojego serwera/kanału TS oraz zainstalowanej wtyczki SaltyChat. (GitHub)
Które convary są najważniejsze dla pma-voice?voice_useNativeAudio, voice_useSendingRangeOnly, voice_enableCalls, voice_enableRadios, voice_enableSubmix, oraz voice_defaultVoiceMode. (GitHub)
Czy mogę przełączyć się z Mumble na pma-voice w środku sezonu?
Tak — usuń inne zasoby głosowe, ensure pma-voice, ustaw convars, przetestuj na stagingu, a następnie przełącz. Zachowaj integracje radia/telefonu.
Moje radio brzmi płasko w pma-voice.
Włącz NativeAudio + Submix (voice_useNativeAudio=true, voice_enableSubmix=1). (GitHub, Dokumentacja Cfx.re)
Konwary „telefony” pma-voice nie działają.
Użyj przemianowanego voice_enableCalls I voice_defaultCallVolume. (GitHub)
Pasażerowie pojazdu wycięci w Mumble.
Zaktualizuj do najnowszej wersji mumble-voip i użyj use2dAudioInVehicles jeśli potrzebne. (GitHub)
Które odległości bliskości są rozsądne?
Zacznij od ~2.5 m / 8 m / 20 m (szept/normal/krzyk). Dostosuj do gęstości mapy i stylu RP. (GitHub)
Czy potrzebuję głosu vMenu?
Nie. Wyłącz konkurencyjne systemy głosowe podczas korzystania z pma-voice/mumble/saltychat. (GitHub)
Jak zmierzyć opóźnienie głosu?
Napisz skrypt ping/loopback lub porównaj funkcję 'click-to-hear' przez radio z przechwytywaniem dźwięku; zarejestruj 20 zdarzeń i uśrednij.
Czy SaltyChat zwiększa opóźnienie?
Nieznacznie – dodanie TS dodaje kilka ms w porównaniu do czystego wbudowanego Mumble. Trzymaj TS na tym samym hoście, aby to zminimalizować. (GitHub)
Dlaczego zmiana NativeAudio nie jest stosowana na żywo?
Niektóre konwary wymagają restartu zasobu; przełącz i uruchom ponownie pma-voice. (Społeczność Cfx.re)
Czy mogę mieszać ESX & QBCore radia?
Tak — powiąż swoje przedmioty/uprawnienia w ekwipunku z eksportami radiowymi, które zapewnia twój stack.
Dziennik zmian i podziękowania
Historia wersji
| Data | Wersja | Uwagi |
|---|---|---|
| 2025-09-09 | 1.0 | Pierwsze wydanie: instalacje, konwary, strojenie i benchmarki. |
Podziękowania (dokumentacja źródłowa)
- pma-voice (AvarianKnight GitHub) — convars, exporty i wskazówki. (GitHub)
- Dokumentacja CFX.re Voice — NativeAudio, submix i konwary głosowe. (Dokumentacja Cfx.re)
- mumble-voip (FrazzIe GitHub) — funkcje & konfiguracja. (GitHub)
- SaltyChat (SaltyHub GitHub) — konfiguracja, ustawienia, exporty. (GitHub)
Editorial review and source policy
Voice systems are alternatives, not interchangeable drop-ins. Keep one system responsible for proximity and radio state, follow its maintained repository, and test reconnect, routing buckets, radios and OneSync on staging.
