[{"data":1,"prerenderedAt":52},["ShallowReactive",2],{"site":3,"blog-post-th-fivem-voice-stutter-pma-voice":15,"blog-slug-site":45,"blog-scripts-th-fivem-voice-stutter-pma-voice":51},{"site":4,"contact":10,"seo":13,"payment":14},{"name":5,"host":6,"default_locale":7,"locales":8},"X3D Developer","fivem.x3d-developer.com","th",[7,9],"en",{"discord_invite":11,"email":12,"line":12},"https:\u002F\u002Fdiscord.gg\u002FNA5kPVynFv","",{"google_site_verification":12,"bing_site_verification":12},{"bank_name":12,"account_name":12,"account_no":12,"promptpay_id":12},{"post":16,"html":21,"others":22,"productSlugs":44},{"slug":17,"title":18,"description":19,"date":20},"fivem-voice-stutter-pma-voice","เสียงใน FiveM กระตุก แบนด์วิดท์ไม่พอจริงไหม? เจาะ pma-voice\u002FMumble และควรแยกเซิร์ฟเวอร์เสียงเมื่อไหร่ (2026)","เสียง FiveM กระตุก ขาด ดีเลย์ เป็นหุ่นยนต์ ที่เซิฟ 64–128 คนสาเหตุมักไม่ใช่แบนด์วิดท์ แต่ที่ 1,000–2,048 คน แบนด์วิดท์และ CPU คือของจริง บทความนี้อธิบายว่า pma-voice กับ Mumble ในตัว FXServer ส่งเสียงยังไง คำนวณแบนด์วิดท์จริงเป็น Mbps วิธีแยกอาการฝั่งผู้เล่น\u002Fเซิฟ\u002Fเส้นทาง ค่า pma-voice ที่ลดโหลดทันที และเมื่อไหร่ถึงคุ้มที่จะแยกเซิร์ฟเวอร์เสียง (external Mumble) พร้อมวิธีตั้งค่า","2026-09-27","\u003Cp>&quot;เสียงกระตุก&quot; คือเรื่องร้องเรียนอันดับสองรองจากค้างหน้าโหลด อาการมีหลายแบบ: เสียงขาดเป็นช่วง เป็นหุ่นยนต์ ดีเลย์ 1–2 วินาที หรือได้ยินคนไกลแต่ไม่ได้ยินคนข้าง ๆ แอดมินมักสรุปว่า &quot;แบนด์วิดท์ไม่พอ ต้องแยกเซิร์ฟเวอร์เสียง&quot; คำตอบสั้นขึ้นกับขนาดเซิฟ: \u003Cstrong>ที่ 64–128 คน แบนด์วิดท์เป็นสาเหตุแค่ส่วนน้อย\u003C\u002Fstrong> ส่วนใหญ่คือเซิฟสะดุด (hitch), packet loss ระหว่างทาง (รวม proxy กัน DDoS), และค่า pma-voice ที่ส่งเสียงให้คนมากเกินจำเป็น \u003Cstrong>ที่ 1,000–2,048 คน (เซิฟใหญ่ของไทย) แบนด์วิดท์และ CPU กลายเป็นของจริง\u003C\u002Fstrong> และ Mumble ในตัวเกมใช้ไม่ได้ตั้งแต่ต้น บทความนี้ไล่ให้ครบตั้งแต่เสียงเดินทางยังไง คำนวณตัวเลขจริงทั้งสองสเกล แยกอาการ แก้ทีละชั้น จนถึงวิธีวางเซิร์ฟเวอร์เสียงแยกสำหรับสองพันคน\u003C\u002Fp>\n\u003Ch2 id=\"เสียงใน-fivem-เดินทางยังไง\">เสียงใน FiveM เดินทางยังไง\u003C\u002Fh2>\n\u003Cp>FiveM มี \u003Cstrong>Mumble server ฝังอยู่ใน FXServer\u003C\u002Fstrong> อยู่แล้ว ใช้พอร์ตเดียวกับเกม (ค่าเริ่มต้น \u003Ccode>30120\u003C\u002Fcode> ทั้ง TCP และ UDP) ไม่ต้องลงอะไรเพิ่ม pma-voice ไม่ได้ส่งเสียงเอง หน้าที่ของมันคือ \u003Cstrong>บอก Mumble ว่าใครควรได้ยินใคร\u003C\u002Fstrong> (voice target) ตามระยะ ช่องวิทยุ และสายโทรศัพท์\u003C\u002Fp>\n\u003Cp>เส้นทางของเสียงหนึ่งคำพูด:\u003C\u002Fp>\n\u003Col>\n\u003Cli>ไคลเอนต์บีบอัดเสียงด้วย Opus ประมาณ \u003Cstrong>40–72 kbps\u003C\u002Fstrong> แล้วส่งขึ้นเซิฟทาง UDP\u003C\u002Fli>\n\u003Cli>เซิฟ \u003Cstrong>ทำสำเนา\u003C\u002Fstrong> ส่งให้ทุกคนใน target ของผู้พูด: คนในระยะ + ทุกคนในช่องวิทยุที่กด + คู่สาย\u003C\u002Fli>\n\u003Cli>ไคลเอนต์ปลายทางถอดรหัสและวางเสียงในตำแหน่ง 3 มิติ\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>ผลที่ตามมาสองข้อที่ทุกอย่างในบทความนี้อิงอยู่:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>ขาขึ้นของเซิฟ = ผู้พูดพร้อมกัน × ผู้ฟังต่อคน × bitrate\u003C\u002Fstrong> ผู้พูดหนึ่งคนที่มีคนฟัง 60 คน กินขาขึ้น 60 เท่าของเสียงต้นฉบับ\u003C\u002Fli>\n\u003Cli>Mumble ใช้ \u003Cstrong>UDP ก่อน ถ้า UDP ไม่ผ่านจะถอยไปส่งเสียงผ่าน TCP\u003C\u002Fstrong> TCP รอแพ็กเก็ตที่หายก่อนส่งตัวถัดไป (head-of-line blocking) เสียงจึงหยุดแล้วไหลมาเป็นชุด นี่คือ &quot;เสียงกระตุกทั้งที่เกมไม่แลค&quot; ที่พบบ่อยที่สุด\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"คำนวณแบนด์วิดท์จริง-ไม่ต้องเดา\">คำนวณแบนด์วิดท์จริง ไม่ต้องเดา\u003C\u002Fh2>\n\u003Cp>ใช้สูตรข้างบนกับ bitrate 48 kbps (ค่ากลางที่ FiveM ใช้จริง)\u003C\u002Fp>\n\u003Cdiv class=\"table-scroll\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>สถานการณ์\u003C\u002Fth>\n\u003Cth>ผู้พูดพร้อมกัน\u003C\u002Fth>\n\u003Cth>ผู้ฟังต่อผู้พูด\u003C\u002Fth>\n\u003Cth>ขาขึ้นเซิฟจากเสียง\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>RP ปกติ 64 คน กระจายทั่วแมพ\u003C\u002Ftd>\n\u003Ctd>10\u003C\u002Ftd>\n\u003Ctd>6\u003C\u002Ftd>\n\u003Ctd>10 × 6 × 48 kbps ≈ \u003Cstrong>2.9 Mbps\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>งานอีเวนต์ 60 คนอยู่จุดเดียว\u003C\u002Ftd>\n\u003Ctd>8\u003C\u002Ftd>\n\u003Ctd>60\u003C\u002Ftd>\n\u003Ctd>8 × 60 × 48 kbps ≈ \u003Cstrong>23 Mbps\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>วิทยุตำรวจ 30 คนช่องเดียว\u003C\u002Ftd>\n\u003Ctd>1 คนกด\u003C\u002Ftd>\n\u003Ctd>30\u003C\u002Ftd>\n\u003Ctd>1 × 30 × 48 kbps ≈ \u003Cstrong>1.4 Mbps ต่อการกดหนึ่งครั้ง\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>ตลาด 128 คน ครึ่งเซิฟอยู่ที่เดียวกัน\u003C\u002Ftd>\n\u003Ctd>15\u003C\u002Ftd>\n\u003Ctd>64\u003C\u002Ftd>\n\u003Ctd>15 × 64 × 48 kbps ≈ \u003Cstrong>46 Mbps\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>เซิฟ 2,000 คน ช่วงปกติ กระจายทั่วแมพ\u003C\u002Ftd>\n\u003Ctd>200\u003C\u002Ftd>\n\u003Ctd>6\u003C\u002Ftd>\n\u003Ctd>200 × 6 × 48 kbps ≈ \u003Cstrong>58 Mbps\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>เซิฟ 2,000 คน อีเวนต์ 300 คนจุดเดียว (ระยะพูดกว้าง)\u003C\u002Ftd>\n\u003Ctd>30\u003C\u002Ftd>\n\u003Ctd>300\u003C\u002Ftd>\n\u003Ctd>30 × 300 × 48 kbps ≈ \u003Cstrong>430 Mbps\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>เซิฟ 2,000 คน อีเวนต์เดียวกัน แต่ระยะ 6 เมตร + sendingRangeOnly\u003C\u002Ftd>\n\u003Ctd>30\u003C\u002Ftd>\n\u003Ctd>25\u003C\u002Ftd>\n\u003Ctd>30 × 25 × 48 kbps ≈ \u003Cstrong>36 Mbps\u003C\u002Fstrong>\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Cp>บวกกับการ sync ของเกมเอง (OneSync) ที่ประมาณ \u003Cstrong>150–400 kbps ต่อผู้เล่น\u003C\u002Fstrong> ขึ้นกับความหนาแน่นของ entity รอบตัว (OneSync Infinity ส่งเฉพาะ entity ใกล้ตัว ตัวเลขต่อคนจึงไม่โตตามจำนวนคนทั้งเซิฟ แต่ผลรวมโต): 64 คน ≈ 10–25 Mbps, 128 คน ≈ 20–50 Mbps, \u003Cstrong>2,000 คน ≈ 300–800 Mbps\u003C\u002Fstrong>\u003C\u002Fp>\n\u003Cp>สรุปตัวเลข:\u003C\u002Fp>\n\u003Cul>\n\u003Cli>\u003Cstrong>เซิฟ 32–64 คน\u003C\u002Fstrong> พีคทั้งเกมและเสียงราว 15–40 Mbps พอร์ต 100 Mbps ที่ไม่ได้ shared กับคนอื่นรับได้\u003C\u002Fli>\n\u003Cli>\u003Cstrong>เซิฟ 128 คนที่มีอีเวนต์รวมตัว\u003C\u002Fstrong> พีค 60–100 Mbps พอร์ต 100 Mbps ตันจริง ต้องเป็น 1 Gbps\u003C\u002Fli>\n\u003Cli>\u003Cstrong>เซิฟ 1,000–2,048 คน\u003C\u002Fstrong> sync เกมอย่างเดียวกินครึ่งถึงเต็ม 1 Gbps ก่อนจะนับเสียง พอร์ต 1 Gbps ไม่พอที่พีค ต้อง 2.5–10 Gbps dedicated และเสียงต้องอยู่คนละเครื่อง (หัวข้อถัดไป)\u003C\u002Fli>\n\u003Cli>\u003Cstrong>ขาลงของผู้เล่น\u003C\u002Fstrong> แทบไม่เคยเป็นปัญหา ได้ยิน 10 คนพร้อมกันก็แค่ 0.5 Mbps เน็ตมือถือยังไหว\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Cp>&quot;แบนด์วิดท์ไม่พอ&quot; ที่เจอจริงในไทยจึงมี 3 แบบเท่านั้น: VPS พอร์ต 100 Mbps ที่ \u003Cstrong>shared\u003C\u002Fstrong> กับลูกค้าอื่นบนเครื่องเดียวกัน, โฮสต์ที่เขียนว่า unmetered แต่มี fair-use แล้วบีบความเร็วเมื่อใช้เยอะ, และ &quot;1 Gbps burst&quot; ที่วิ่งได้จริงแค่ช่วงสั้น ๆ ถ้าคุณอยู่ในสามข้อนี้ อ่านต่อถึงหัวข้อโฮสต์ ถ้าไม่ใช่ สาเหตุอยู่ที่อื่น\u003C\u002Fp>\n\u003Ch2 id=\"สเกล-1-000-2-048-คน-กติกาเปลี่ยน\">สเกล 1,000–2,048 คน: กติกาเปลี่ยน\u003C\u002Fh2>\n\u003Cp>OneSync Infinity ให้ได้สูงสุด 2,048 slots (Element Club Platinum) และเซิฟใหญ่ของไทยหลายแห่งวิ่งอยู่ที่ 1,000–2,000 คนจริง ที่สเกลนี้ข้อสรุปของเซิฟเล็กใช้ไม่ได้สี่ข้อ:\u003C\u002Fp>\n\u003Col>\n\u003Cli>\u003Cstrong>Mumble ในตัวเกมตกรอบตั้งแต่วันแรก\u003C\u002Fstrong> มันอยู่ในโปรเซสเดียวกับเธรดหลักที่ต้อง sync entity ให้สองพันคน เธรดหลักสะดุด 30 ms หนึ่งครั้ง เสียงทั้งเซิฟสะดุกพร้อมกัน ที่สเกลนี้ hitch เล็ก ๆ เกิดทุกนาทีไม่ว่าจะ optimize ดีแค่ไหน แยก Mumble ออกไม่ใช่ทางเลือก แต่เป็นข้อบังคับ\u003C\u002Fli>\n\u003Cli>\u003Cstrong>แบนด์วิดท์คือของจริง\u003C\u002Fstrong> sync เกม 300–800 Mbps + เสียง 40–60 Mbps ช่วงปกติ พอร์ต 1 Gbps ที่ดูใหญ่สำหรับเซิฟ 128 คน ตันที่พีคของสองพันคน สเปกที่เซิฟระดับนี้ใช้จริงคือ 2.5–10 Gbps dedicated เครื่องเกม และ 1 Gbps dedicated แยกสำหรับเครื่องเสียง\u003C\u002Fli>\n\u003Cli>\u003Cstrong>ระยะพูดกับ sendingRangeOnly ไม่ใช่เรื่องประหยัด แต่เป็นเรื่องอยู่รอด\u003C\u002Fstrong> ตารางข้างบนแสดงชัด: อีเวนต์ 300 คนที่ระยะพูดกว้าง = 430 Mbps เฉพาะเสียง ระยะ 6 เมตร + \u003Ccode>voice_useSendingRangeOnly\u003C\u002Fcode> = 36 Mbps งานเดียวกัน ต่างกัน 12 เท่า\u003C\u002Fli>\n\u003Cli>\u003Cstrong>วิทยุคือระเบิดเวลา\u003C\u002Fstrong> ช่องตำรวจ 150 คนในเซิฟสองพัน = ผู้ฟัง 150 ต่อการกดหนึ่งครั้ง กดพร้อมกัน 5 คน = 36 Mbps จากช่องเดียว ต้องแบ่งช่องตามเขต\u002Fหน่วยและจำกัดไม่เกิน 30–40 คนต่อช่อง พร้อมช่องประกาศที่ให้กดได้เฉพาะหัวหน้า\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>โครงที่เซิฟระดับนี้ใช้: เครื่องเกม (CPU clock สูงสุดที่หาได้ single-thread เพราะเธรดหลัก FXServer มีเธรดเดียว) + เครื่องเสียง Mumble แยก (CPU clock สูงเช่นกัน murmur route แพ็กเก็ตบนเธรดหลักเธรดเดียว, \u003Ccode>users\u003C\u002Fcode> ตั้งเกิน 2,048, \u003Ccode>bandwidth\u003C\u002Fcode> ลดเหลือ 48000 เพื่อคุมผลรวม) + DDoS scrubbing ที่ระดับเครือข่ายที่ปล่อย UDP ผ่านโดยไม่ห่อ tunnel เพราะเซิฟขนาดนี้โดนยิงแน่นอน วิธีตั้ง Mumble แยกอยู่ท้ายบทความ ค่าที่ต่างจากเซิฟเล็กมีแค่ \u003Ccode>users\u003C\u002Fcode> และ \u003Ccode>bandwidth\u003C\u002Fcode>\u003C\u002Fp>\n\u003Ch2 id=\"แยกอาการก่อนแก้-ทำตามลำดับ\">แยกอาการก่อนแก้ ทำตามลำดับ\u003C\u002Fh2>\n\u003Col>\n\u003Cli>\u003Cstrong>คนเดียวหรือทุกคน\u003C\u002Fstrong> กระตุกคนเดียวขณะที่คนอื่นในจุดเดียวกันปกติ = เครื่องหรือเน็ตของผู้เล่นคนนั้น ข้ามไปหัวข้อฝั่งผู้เล่น ทุกคนกระตุกพร้อมกัน = เซิฟหรือเส้นทาง\u003C\u002Fli>\n\u003Cli>\u003Cstrong>เกิดเฉพาะตอนคนรวมตัว\u003C\u002Fstrong> (อีเวนต์ ตลาด งานแต่ง) = ขาขึ้นหรือ CPU ของเซิฟ ดู console ของเซิฟตอนนั้น ถ้ามี \u003Ccode>server thread hitch warning\u003C\u002Fcode> แปลว่าเธรดหลักสะดุด Mumble ที่อยู่ในโปรเซสเดียวกันสะดุดตาม ดูโหลด NIC ด้วย \u003Ccode>nload\u003C\u002Fcode> หรือ \u003Ccode>vnstat -l\u003C\u002Fcode> บนเครื่องเซิฟ\u003C\u002Fli>\n\u003Cli>\u003Cstrong>เสียงกระตุกแต่เกมไม่แลค\u003C\u002Fstrong> (รถไม่วาร์ป ประตูเปิดปกติ) = เส้นทาง UDP ของเสียงมีปัญหา: proxy กัน DDoS ที่ห่อ UDP, firewall ปิด UDP, หรือเน็ตผู้เล่นทำ UDP หลุดจน Mumble ถอยไป TCP\u003C\u002Fli>\n\u003Cli>\u003Cstrong>ดีเลย์ 1–2 วินาทีแต่ไม่ขาด\u003C\u002Fstrong> = TCP fallback แทบแน่นอน เสียงมาถึงครบแต่ช้า\u003C\u002Fli>\n\u003Cli>\u003Cstrong>ทดสอบชี้ขาด\u003C\u002Fstrong>: ชี้เสียงไป Mumble server แยกชั่วคราว (วิธีอยู่ท้ายบทความ) ถ้าอาการหายทันที = โปรเซสเซิฟเกมหรือ proxy คือคอขวด ถ้ายังกระตุกเหมือนเดิม = เส้นทางเน็ตหรือฝั่งผู้เล่น ไม่ต้องเสียเงินแยกถาวร\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Ch2 id=\"ฝั่งผู้เล่น-เช็ค-5-อย่างก่อนโทษเซิฟ\">ฝั่งผู้เล่น: เช็ค 5 อย่างก่อนโทษเซิฟ\u003C\u002Fh2>\n\u003Cul>\n\u003Cli>พิมพ์ \u003Ccode>netgraph 1\u003C\u002Fcode> ใน F8 ดู loss กับ ping ถ้า loss ขึ้นเป็นระยะ เสียงจะขาดตามจังหวะนั้น ลอง hotspot มือถือ ถ้าหาย = ผู้ให้บริการเน็ตหรือเราเตอร์\u003C\u002Fli>\n\u003Cli>ปิด VPN ทุกตัว VPN ส่วนใหญ่ทำ UDP หลุดหรือช้าจน Mumble ถอยไป TCP\u003C\u002Fli>\n\u003Cli>ไมค์ Bluetooth ใช้โปรไฟล์โทรศัพท์ (HFP) ที่คุณภาพต่ำและหน่วง เปลี่ยนเป็นไมค์สายหรือ USB\u003C\u002Fli>\n\u003Cli>Windows › Sound › อุปกรณ์ไมค์และหูฟังตั้ง \u003Cstrong>48000 Hz\u003C\u002Fstrong> ให้ตรงกัน ค่าที่ต่างกันทำเสียงแตกและกระตุก\u003C\u002Fli>\n\u003Cli>Discord หรือ OBS ที่จับไมค์ตัวเดียวกันพร้อม noise suppression กิน CPU ของไคลเอนต์ที่กำลังเรนเดอร์เกมอยู่ ปิดทดสอบ (\u003Ccode>resmon 1\u003C\u002Fcode> ใน F8 ดูว่าอะไรกินเฟรม อ่านต่อที่ \u003Ca href=\"\u002Fth\u002Fblog\u002Ffivem-ui-lag\u002F\">FiveM UI หน่วง NUI กิน FPS\u003C\u002Fa>)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"แก้ที่-pma-voice-ก่อน-ฟรีและได้ผลทันที\">แก้ที่ pma-voice ก่อน ฟรีและได้ผลทันที\u003C\u002Fh2>\n\u003Cp>สาเหตุที่ควบคุมได้ 100% คือ &quot;ส่งเสียงให้คนมากเกินจำเป็น&quot; ตั้งค่าใน \u003Ccode>server.cfg\u003C\u002Fcode> และ \u003Ccode>pma-voice\u002Fconfig.lua\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cpre>\u003Ccode># server.cfg\nsetr voice_useNativeAudio true\nsetr voice_useSendingRangeOnly true\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>\u003Ccode>voice_useSendingRangeOnly true\u003C\u002Fcode> ให้เซิฟ \u003Cstrong>ส่งเสียงเฉพาะคนที่อยู่ในระยะได้ยินจริง\u003C\u002Fstrong> ค่าเริ่มต้นส่งให้คนในระยะกว้างกว่านั้นแล้วให้ไคลเอนต์ค่อยลดเสียงเอง เปิดข้อนี้ข้อเดียวลดขาขึ้นในอีเวนต์ได้ครึ่งหนึ่ง\u003C\u002Fli>\n\u003Cli>\u003Ccode>voice_useNativeAudio true\u003C\u002Fcode> ใช้ระบบเสียงของเกมวางตำแหน่งเสียง เสียงเบาลงตามระยะและกำแพงได้สมจริงกว่า ไม่เกี่ยวกับแบนด์วิดท์แต่ลดเคส &quot;ได้ยินคนไกล&quot; ที่ผู้เล่นมักเรียกว่าเสียงเพี้ยน\u003C\u002Fli>\n\u003Cli>\u003Cstrong>ระยะพูด\u003C\u002Fstrong> ใน \u003Ccode>config.lua\u003C\u002Fcode>: \u003Ccode>Cfg.voiceModes = { {2.5, &quot;Whisper&quot;}, {6.0, &quot;Normal&quot;}, {14.0, &quot;Shouting&quot;} }\u003C\u002Fcode> เซิฟไทยหลายแห่งตั้ง Normal 15 และ Shout 30 ผลคือทุกคนในตลาดได้ยินกันหมด ผู้ฟังต่อผู้พูดพุ่งจาก 6 เป็น 40 ระยะที่ให้ไว้พอสำหรับ RP และลดโหลดมากที่สุด\u003C\u002Fli>\n\u003Cli>\u003Cstrong>วิทยุ\u003C\u002Fstrong>: ทุกครั้งที่กดส่ง เซิฟส่งให้ทุกคนในช่อง ช่องตำรวจ 40 คนคือผู้ฟัง 40 ต่อการกดหนึ่งครั้ง แยกช่องตามหน่วย จำกัดจำนวนคนต่อช่อง และเก็บช่องรวมไว้สำหรับประกาศ\u003C\u002Fli>\n\u003Cli>\u003Cstrong>บังคับ push-to-talk\u003C\u002Fstrong> ผู้เล่นที่เปิด voice activation คือ &quot;ผู้พูด&quot; ตลอดเวลาแม้แค่หายใจใส่ไมค์ ในอีเวนต์ 60 คนที่เปิด VA ครึ่งหนึ่ง ผู้พูดพร้อมกันกลายเป็น 30 ไม่ใช่ 8 ตัวเลขในตารางข้างบนคูณสี่ทันที\u003C\u002Fli>\n\u003Cli>สายโทรศัพท์ผ่าน pma-voice ไม่หนัก คู่สายคือผู้ฟัง 1 คน (\u003Ca href=\"\u002Fth\u002Fproducts\u002Fx3d-phone\u002F\">X3D Phone\u003C\u002Fa> โทรผ่าน pma-voice adapter โดยตรง)\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"แก้ที่เซิฟและโฮสต์\">แก้ที่เซิฟและโฮสต์\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>CPU และ hitch\u003C\u002Fstrong> Mumble ในตัวอยู่ในโปรเซสเดียวกับเกม เมื่อเธรดหลักสะดุกจาก resource หนัก (loop ถี่ SQL แบบ sync entity spam) เสียงสะดุดตาม ใน console: \u003Ccode>profiler record 500\u003C\u002Fcode> รอ แล้ว \u003Ccode>profiler save voice\u003C\u002Fcode> เปิดดูใน Chrome tracing จะเห็นว่า resource ไหนกินเวลาต่อเฟรม txAdmin › Resources ก็บอกเวลาเธรดต่อ resource ได้ แก้ตัวที่หนักก่อนซื้ออะไรทั้งนั้น\u003C\u002Fp>\n\u003Cp>\u003Cstrong>proxy กัน DDoS ที่ห่อ UDP\u003C\u002Fstrong> บริการกัน DDoS หลายเจ้าในไทยทำงานแบบ reverse proxy หรือ tunnel: แพ็กเก็ตของผู้เล่นวิ่งไปเครื่องกรองก่อนแล้วค่อยส่งต่อ ทุกฮอปเพิ่ม jitter และเสียงเป็นสิ่งแรกที่แสดงผล เลือกโฮสต์ที่กรอง DDoS \u003Cstrong>ที่ระดับเครือข่ายหน้าเครื่อง\u003C\u002Fstrong> ไม่ใช่ tunnel หรือถ้าเลี่ยงไม่ได้ ให้เสียงวิ่งตรงด้วย external Mumble (หัวข้อถัดไป)\u003C\u002Fp>\n\u003Cp>\u003Cstrong>พอร์ตและที่ตั้ง\u003C\u002Fstrong> 1 Gbps แบบ dedicated ไม่ shared สำหรับ 96 คนขึ้นไป ที่ตั้งในไทยหรือสิงคโปร์ที่ peering กับ AIS\u002FTrue\u002F3BB ดี ทดสอบด้วย \u003Ccode>mtr\u003C\u002Fcode> จากเน็ตบ้านผู้เล่นสามค่ายไปหาเซิฟ ถ้ามีฮอปที่ loss คงที่ ย้ายโฮสต์ดีกว่าแก้ที่ config\u003C\u002Fp>\n\u003Cp>\u003Cstrong>firewall\u003C\u002Fstrong> เปิด \u003Ccode>30120\u003C\u002Fcode> ทั้ง TCP และ UDP (เกมและเสียงใช้ร่วมกัน) โฮสต์บางเจ้าเปิดให้แค่ TCP แล้วเสียงตกไป TCP fallback ทั้งเซิฟโดยไม่มีใครรู้\u003C\u002Fp>\n\u003Cp>\u003Cstrong>OneSync\u003C\u002Fstrong> \u003Ccode>onesync_distanceCullVehicles true\u003C\u002Fcode> ลดการ sync รถที่อยู่ไกลออกจากขาขึ้นของเกม ทำให้เหลือที่ให้เสียงมากขึ้นในเครื่องที่พอร์ตจำกัด\u003C\u002Fp>\n\u003Ch2 id=\"แยกเซิร์ฟเวอร์เสียง-external-mumble-จำเป็นไหม\">แยกเซิร์ฟเวอร์เสียง (external Mumble) จำเป็นไหม\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>ไม่จำเป็น\u003C\u002Fstrong> สำหรับเซิฟไม่เกิน 64–96 คนที่ตั้งค่าข้างบนแล้ว Mumble ในตัวรับได้สบาย \u003Cstrong>บังคับ\u003C\u002Fstrong> สำหรับเซิฟ 500 คนขึ้นไป และ \u003Cstrong>คุ้ม\u003C\u002Fstrong> เมื่อเข้าข่ายข้อใดข้อหนึ่ง:\u003C\u002Fp>\n\u003Col>\n\u003Cli>128 คนขึ้นไปและมีอีเวนต์รวมตัวเป็นประจำ\u003C\u002Fli>\n\u003Cli>เซิฟเกม CPU ตึงจน hitch แล้วแก้ resource ไม่ทัน อยากเอาเสียงออกจากโปรเซสนั้นก่อน\u003C\u002Fli>\n\u003Cli>ใช้ proxy กัน DDoS แบบ tunnel และอยากให้เสียงวิ่งตรงหาผู้เล่น\u003C\u002Fli>\n\u003Cli>เซิฟเกมอยู่ต่างประเทศ แต่อยากให้เสียงอยู่บนเครื่องในไทยเพื่อ ping ต่ำ\u003C\u002Fli>\n\u003Cli>500 คนขึ้นไป: ไม่ต้องรอดูอาการ แยกตั้งแต่วันเปิด\u003C\u002Fli>\n\u003C\u002Fol>\n\u003Cp>สิ่งที่ได้: โปรเซส CPU และ NIC แยกจากเกม ปรับเพดาน bitrate และจำนวนผู้ใช้ได้เอง เสียงไม่สะดุดตาม hitch ของเกม สิ่งที่ต้องแลก: อีกเครื่อง (หรืออีก container) ที่ต้องดูแล, IP ของเครื่องเสียงต้องเปิดให้ผู้เล่นต่อตรงจึงถูก DDoS ได้, และเวอร์ชัน Mumble ต้องใช้กับ FiveM ได้ (1.4 ขึ้นไป)\u003C\u002Fp>\n\u003Ch3 id=\"วิธีตั้งค่าใน-10-นาที-docker\">วิธีตั้งค่าใน 10 นาที (Docker)\u003C\u002Fh3>\n\u003Cp>บนเครื่องเสียง (Linux, เปิดพอร์ต 64738 TCP+UDP):\u003C\u002Fp>\n\u003Cpre>\u003Ccode>docker run -d --name mumble --restart unless-stopped \\\n  -p 64738:64738\u002Ftcp -p 64738:64738\u002Fudp \\\n  -e MUMBLE_CONFIG_USERS=2200 \\\n  -e MUMBLE_CONFIG_BANDWIDTH=48000 \\\n  -e MUMBLE_CONFIG_OPUS_THRESHOLD=0 \\\n  -e MUMBLE_CONFIG_MESSAGE_LIMIT=999999 \\\n  -e MUMBLE_CONFIG_MESSAGE_BURST=999999 \\\n  -e MUMBLE_CONFIG_WELCOME_TEXT=&quot;&quot; \\\n  -v mumble-data:\u002Fdata \\\n  mumblevoip\u002Fmumble-server:latest\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>ค่าที่สำคัญ (ถ้าติดตั้งจากแพ็กเกจแทน Docker ใส่ใน \u003Ccode>murmur.ini\u003C\u002Fcode> ชื่อเดียวกันแบบตัวเล็ก):\u003C\u002Fp>\n\u003Cdiv class=\"table-scroll\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>ค่า\u003C\u002Fth>\n\u003Cth>ทำไม\u003C\u002Fth>\n\u003C\u002Ftr>\n\u003C\u002Fthead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>\u003Ccode>users=2200\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>ค่าเริ่มต้นคือ \u003Cstrong>100\u003C\u002Fstrong> เกินแล้วคนที่ 101 ไม่มีเสียงโดยไม่มี error ฝั่งเกม ตั้งให้เกิน \u003Ccode>sv_maxClients\u003C\u002Fcode> เสมอ (2,048 slots ใส่ 2200)\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>bandwidth=48000\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>เพดาน bitrate ต่อคน (บิตต่อวินาที) ค่าเริ่มต้น 72000 เซิฟใหญ่ใช้ 48000 เพื่อคุมผลรวมขาขึ้น เซิฟเล็กที่พอร์ตเหลือตั้ง 72000–96000 ได้\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>opusthreshold=0\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>บังคับ Opus ทุกคน ไม่ถอยไป codec เก่า\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003Ctr>\n\u003Ctd>\u003Ccode>messagelimit\u003C\u002Fcode> \u002F \u003Ccode>messageburst\u003C\u002Fcode>\u003C\u002Ftd>\n\u003Ctd>Mumble รุ่นใหม่จำกัดข้อความควบคุมต่อวินาที pma-voice เปลี่ยน voice target ถี่มากตอนคนเดินไปมา ค่าเริ่มต้นทำเสียงหายเป็นพัก ๆ\u003C\u002Ftd>\n\u003C\u002Ftr>\n\u003C\u002Ftbody>\n\u003C\u002Ftable>\n\u003C\u002Fdiv>\n\u003Cp>จากนั้นใน \u003Ccode>server.cfg\u003C\u002Fcode> ของเซิฟเกม:\u003C\u002Fp>\n\u003Cpre>\u003Ccode>setr voice_externalAddress &quot;203.0.113.10&quot;   # IP สาธารณะของเครื่องเสียง\nsetr voice_externalPort 64738\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cp>รีสตาร์ท \u003Ccode>pma-voice\u003C\u002Fcode> เข้าเกมแล้วเปิด F8 จะเห็นบรรทัดของ Mumble ต่อไปยัง IP ใหม่ ทดสอบด้วยคนสองคนยืนห่างกัน 3 เมตรกับ 20 เมตร ถ้าระยะทำงานปกติแปลว่า positional audio ผ่าน\u003C\u002Fp>\n\u003Cp>ข้อควรระวัง: ถ้าใช้ SaltyChat หรือ TokoVoip นั่นคือระบบบน TeamSpeak ไม่ใช่ Mumble บทความนี้ใช้กับ pma-voice และ mumble-voip เท่านั้น\u003C\u002Fp>\n\u003Ch2 id=\"checklist-สรุปสำหรับแอดมิน\">Checklist สรุปสำหรับแอดมิน\u003C\u002Fh2>\n\u003Cpre>\u003Ccode># server.cfg\nsetr voice_useNativeAudio true\nsetr voice_useSendingRangeOnly true\nonesync_distanceCullVehicles true\n# pma-voice\u002Fconfig.lua\nCfg.voiceModes = { {2.5, &quot;Whisper&quot;}, {6.0, &quot;Normal&quot;}, {14.0, &quot;Shouting&quot;} }\n\u003C\u002Fcode>\u003C\u002Fpre>\n\u003Cul>\n\u003Cli>firewall เปิด \u003Ccode>30120\u003C\u002Fcode> TCP+UDP (และ \u003Ccode>64738\u003C\u002Fcode> TCP+UDP ถ้าแยกเสียง)\u003C\u002Fli>\n\u003Cli>ช่องวิทยุไม่เกิน 20–30 คน แยกตามหน่วย\u003C\u002Fli>\n\u003Cli>บังคับ push-to-talk ในกฎเซิฟ\u003C\u002Fli>\n\u003Cli>console ไม่มี \u003Ccode>server thread hitch warning\u003C\u002Fcode> ในชั่วโมงเร่งด่วน\u003C\u002Fli>\n\u003Cli>โฮสต์: พอร์ต dedicated, DDoS filter ที่ระดับเครือข่าย ไม่ใช่ tunnel\u003C\u002Fli>\n\u003Cli>128 คนขึ้นไป หรือเข้าข่าย 4 ข้อข้างบน ค่อยแยก external Mumble; 500 คนขึ้นไปแยกตั้งแต่วันแรก\u003C\u002Fli>\n\u003Cli>เซิฟ 1,000–2,048 คน: เครื่องเกม 2.5–10 Gbps dedicated, เครื่องเสียงแยก 1 Gbps, \u003Ccode>users=2200\u003C\u002Fcode>, \u003Ccode>bandwidth=48000\u003C\u002Fcode>, ระยะพูด 6 เมตร, วิทยุไม่เกิน 30–40 คน\u002Fช่อง\u003C\u002Fli>\n\u003C\u002Ful>\n\u003Ch2 id=\"คำถามที่พบบ่อย\">คำถามที่พบบ่อย\u003C\u002Fh2>\n\u003Cp>\u003Cstrong>ปรับ bitrate ของ Mumble ในตัวได้ไหม\u003C\u002Fstrong> — ฝั่งเซิฟไม่มีค่าให้ปรับ ใช้ค่ากลางที่ FiveM กำหนด ถ้าอยากคุมเพดานต้องใช้ external Mumble แล้วตั้ง \u003Ccode>bandwidth\u003C\u002Fcode>\u003C\u002Fp>\n\u003Cp>\u003Cstrong>เสียงดีเลย์ 1–2 วินาทีแต่ไม่ขาด\u003C\u002Fstrong> — TCP fallback เกือบทุกครั้ง เช็ก firewall UDP ของเซิฟก่อน แล้วค่อยดู VPN และเราเตอร์ของผู้เล่น\u003C\u002Fp>\n\u003Cp>\u003Cstrong>ใช้ Discord แทนไปเลยได้ไหม\u003C\u002Fstrong> — ได้ชั่วคราวเมื่อเซิฟล่ม แต่เสียตำแหน่งเสียงและวิทยุ RP ที่ไม่มีระยะจะจืดเร็ว\u003C\u002Fp>\n\u003Cp>\u003Cstrong>pma-voice กับ SaltyChat อะไรดีกว่า\u003C\u002Fstrong> — pma-voice ฟรี เบา ไม่ต้องให้ผู้เล่นลงโปรแกรม SaltyChat คุณภาพเสียงดีกว่าเล็กน้อยแต่ผู้เล่นทุกคนต้องลง TeamSpeak และ plugin เซิฟไทยที่เน้นให้คนใหม่เข้าง่ายเลือก pma-voice เป็นส่วนใหญ่\u003C\u002Fp>\n\u003Cp>\u003Cstrong>แยกเซิฟเสียงแล้วยังกระตุก\u003C\u002Fstrong> — แปลว่าคอขวดไม่ใช่โปรเซสเกม กลับไปข้อ &quot;แยกอาการ&quot;: เส้นทางเน็ต (mtr) หรือฝั่งผู้เล่น ในเซิฟสองพันคน เช็กเพิ่มว่าเครื่องเสียงเองไม่ได้ตันที่ CPU (murmur เธรดเดียว) หรือพอร์ตของมัน\u003C\u002Fp>\n\u003Cp>\u003Cstrong>Mumble ตัวเดียวรับ 2,000 คนไหวไหม\u003C\u002Fstrong> — ไหวถ้า CPU clock สูงและ NIC 1 Gbps ขึ้นไป murmur รับผู้ใช้หลักพันได้ต่อ instance สิ่งที่ทำให้ล้มไม่ใช่จำนวนคน แต่คือผู้ฟังต่อผู้พูดที่ระยะกว้างเกิน (ตาราง 430 Mbps) และ \u003Ccode>messagelimit\u003C\u002Fcode> ค่าเริ่มต้นที่จำกัดการเปลี่ยน voice target ของ pma-voice pma-voice ต่อได้ที่ \u003Ccode>voice_externalAddress\u003C\u002Fcode> เดียว จึงไม่มีการแบ่งเสียงหลายเครื่อง ต้องให้เครื่องเดียวแรงพอ\u003C\u002Fp>\n\u003Cp>อยากให้ทีมไล่ดูให้ทั้ง config, resource ที่ทำ hitch และโฮสต์: \u003Ca href=\"\u002Fth\u002Fservices\u002Fserver-setup\u002F\">บริการตั้งค่าเซิร์ฟเวอร์ FiveM\u003C\u002Fa> เรื่องเข้าเซิฟไม่ได้และตกแมพอ่านต่อที่ \u003Ca href=\"\u002Fth\u002Fblog\u002Ffivem-stuck-loading-screen\u002F\">FiveM ค้างหน้าโหลด\u003C\u002Fa> และ \u003Ca href=\"\u002Fth\u002Fblog\u002Ffivem-map-not-loading\u002F\">FiveM ตกแมพ\u003C\u002Fa>\u003C\u002Fp>\n",[23,29,34,39],{"slug":24,"title":25,"description":26,"date":27,"updated":28},"open-fivem-server-budget","เปิดเซิฟ FiveM กี่บาท ใช้อะไรบ้าง — งบและสคริปที่ต้องมี ตั้งแต่ 32 คนถึงเมือง 2,000 คน (2026)","รวมสคริปที่จำเป็นสำหรับเปิดเซิร์ฟเวอร์ FiveM 2026 พร้อมงบ 3 สเกล: เริ่มต้น 32–64 คน, เปิดสาธารณะ 128–500 คน, เมืองใหญ่ 1,000–2,048 คน (Element Club Platinum, เครื่อง dedicated, เสียงแยก, DB แยก, ทีมงาน) ตัวไหนใช้ของฟรีได้ ตัวไหนควรจ่าย ตัวไหนต้องเขียนใหม่เมื่อคนถึงสองพัน","2026-09-15","2026-10-14",{"slug":30,"title":31,"description":32,"date":33,"updated":20},"fivem-phone-death-screen","โทรศัพท์ FiveM ฟรีสำหรับ ESX + หน้าจอตายพร้อมปุ่มเรียกหมอ — ระบบหมอครบวงจรใน 2 สคริป","สคริปต์โทรศัพท์ FiveM ESX ฟรี (X3D Phone: โทร pma-voice, SMS แชร์ตำแหน่ง, แจ้งเหตุ, บิล, ธนาคาร, กล้องเก็บรูปในเซิฟเอง, Buzz, Dark Chat) และหน้าจอตาย X3D Respawn (ปุ่มเรียกหมอ รอหมอเมื่อมีหมอออนไลน์ สรุปการตาย) ต่อกันเป็นวงจรอาชีพหมอ พร้อมวิธีติดตั้งและต่อกับ esx_ambulancejob","2026-09-25",{"slug":35,"title":36,"description":37,"date":38},"fivem-server-hosting-rent","เช่าเซิฟ FiveM เลือกยังไง: VPS, dedicated หรือ game panel สเปกตามจำนวนคน ค่าเช่าโดยประมาณ และเช็กลิสต์ก่อนจ่าย (2026)","คู่มือเช่าเซิฟ FiveM ปี 2026: ค่าเช่าเครื่องกับค่า slots (Element Club) แยกกันยังไง ฟรีได้ถึงกี่คน สเปกที่สำคัญที่สุด (CPU single-thread, NVMe, DDoS) สเปกโดยประมาณตั้งแต่ 32 ถึง 2,048 คน เทียบ game panel, VPS, dedicated ค่าเช่าโดยประมาณ และเช็กลิสต์ 9 ข้อก่อนจ่ายเงิน","2026-10-07",{"slug":40,"title":41,"description":42,"date":43,"updated":20},"fivem-map-not-loading","FiveM ตกแมพ แมพไม่โหลด แมพหาย โหลดไม่ทัน — สาเหตุและวิธีแก้ทั้งฝั่งผู้เล่นและฝั่งเซิฟ","FiveM ตกแมพบ่อย แมพไม่โหลด ตึกหาย ถนนหาย เกิดมาแล้วร่วงทะลุพื้น เกิดกลางแมพ (0,0,0) รวมสาเหตุจริง: HDD ช้า แรม\u002FVRAM ไม่พอ mod ภาพ NPC ล้นเมือง core เซฟพิกัดเพี้ยนตอนหลุด พร้อมวิธีแก้และสคริปฟรีที่แก้ฝั่งเซิฟ","2026-09-24",[],{"site":46,"contact":48,"seo":49,"payment":50},{"name":5,"host":6,"default_locale":7,"locales":47},[7,9],{"discord_invite":11,"email":12,"line":12},{"google_site_verification":12,"bing_site_verification":12},{"bank_name":12,"account_name":12,"account_no":12,"promptpay_id":12},[],1792316310960]