SocketSVC
Minecraft 距離語音聊天,改用 WebSocket 而非 UDP
SocketSVC 是 Minecraft 的距離語音聊天專案,以 WebSocket/WSS 傳送 Opus 音訊。專案包含用戶端模組(Fabric/Quilt、NeoForge、Forge)與伺服器外掛/模組(Paper 外掛,或 Fabric/Quilt、NeoForge、Forge 伺服器模組),另有選用的 Velocity/BungeeCord 中繼代理伺服器外掛。玩家會依遊戲中彼此的距離即時交談。此外還有空間音訊 API,讓其他外掛加入音樂、廣播公告,以及擺在世界裡的具名喇叭。
所有語音資料(音訊、即時玩家名單、喇叭快照、連線狀態)都走同一條持續的 WebSocket 連線,和瀏覽器平常連 HTTPS 用的是同一種連線。
下載
依 Minecraft 版本、載入器和用途(用戶端、伺服器或代理伺服器)挑選對應的版本
安裝用戶端
JAR 檔放哪裡、首次設定與語言
操作方式
說話、靜音、停止接收語音與 /ssvc 指令
設定
裝置、音量、音訊處理、樂器、圖示與自訂圖示包
音效板
把本機的音效片段播給附近的玩家聽
區域網路與單人遊戲
把世界開放到區域網路時,直接由自己的遊戲架設語音
相容性
Flashback、Essential Mod、Mod Menu 與已知衝突
疑難排解
自動重新連線、狀態診斷與常見問題
架設伺服器
Paper 外掛或伺服器模組
為什麼用 WebSocket 而不是 UDP
大多數 Minecraft 語音模組走的是原始 UDP:你得在防火牆或路由器上多開一個連接埠,還得祈禱中間經過的每個代理伺服器、通道或主機面板都剛好能正確轉送。SocketSVC 完全不開 UDP 連接埠:
- 只是一次 HTTP(S) 升級。 語音連線一開始就是普通的 WebSocket 交握,所以原本替伺服器代理 HTTP/HTTPS 的東西(反向代理、Cloudflare Tunnel、ngrok、Docker/Pterodactyl 面板)都能順便傳送語音,完全不用額外設定。
- 真正的
wss://加密。 把public-url指向你自己的wss://主機名稱,現有的 TLS 終止端(也就是原本就架在伺服器前面的代理)就會替語音加密,做法和加密 HTTPS 流量完全一樣。 - 一個 socket 就夠。 音訊影格、玩家名單、具名喇叭快照,以及停止接收語音與狀態更新,全都多工在這條連線上,不必再開其他連接埠、設定轉送或防火牆規則。
- 依序傳送,照樣有抖動緩衝。 傳輸本身雖然是依序送達(不是原始 UDP),每個影格仍帶有串流編號與序號;順序錯亂或短暫遺失的封包會經過補償(以原生 PLC 補償,最長 60 ms),不會出現破音。
- 連線會自我修復。 每 10 秒一次 ping/pong,就算沒人說話也能確認 socket 正常運作;斷線時,用戶端會自動索取新的 token 並重新連線。一般的網路小狀況不必動用
/ssvc reconnect。 - 連線時協商協定功能。 空間音訊、具名喇叭與停止接收語音同步,都會以升級標頭各自請求和回應。因此新版用戶端連到舊版伺服器(或反過來)時,只會順利退回舊的行為,不會出錯。
語音聊天功能
- 距離與定位音訊:其他玩家的聲音會隨距離變小,並依你面對的方向左右平移;戴耳機還能分辨前後(請參閱設定)。
- 「按鍵說話」或自動語音偵測:由 RNNoise 輔助,可手動調整靈敏度門檻;停止說話後會稍微延遲才關閉,避免話尾被切掉。
- 內建「雜訊抑制」(RNNoise):直接包含在用戶端裡,不用另外安裝原生元件。支援的平台還能額外下載效果更強的「進階雜訊消除」模型。
- 自動麥克風增益與峰值限制:不用手動調整,說話小聲和大聲的人都能保持平衡。
- 自適應「迴音消除」:會自動對齊延遲,也能手動覆寫,可減少開放式麥克風或喇叭常見的「聽到自己聲音」問題。
- 個別玩家音量(0–200%)、主音量、靜音與停止接收語音,全都儲存在用戶端設定中。
- 即時玩家名單:由伺服器同步,附有說話指示和名牌圖示。
- 精簡的設定對話框:有「一般設定」、「進階設定」、「音量設定」等分頁,切換裝置不必重新連線,還有首次設定流程。
- 自動重新連線:連線中斷時,不必離開再重新加入。
- 「音效板」:從本機資料夾把 WAV/MP3/OGG/Opus/FLAC/AIFF 片段播給附近的玩家聽,也能從網址下載音訊。
- 樂器輸入:可以從線路輸入裝置、MIDI 樂器或內建的「鼓機」,把吉他或鍵盤彈進語音聊天。樂器走獨立串流,不會干擾說話。16 軌「循環錄音」能錄下你的演奏並一層層疊加;MIDI 也能改用你自己的錄音或 SoundFont 發聲,不必用內建的振盪器。
- 自訂圖示包:用自己的圖片取代語音狀態圖示(支援動態 GIF,名牌上也會播放),還能打包成 zip 分享。
- 區域網路語音:把單人世界開放到區域網路時,會啟動內建的語音伺服器,加入的玩家馬上就能交談。
目前已實作按鍵說話、語音偵測、Opus、RNNoise、增益與限幅、迴音處理、距離與立體聲定位、個別玩家音量、靜音與停止接收語音、狀態圖示,以及會取得新 token 的自動重新連線。音質仍需在實際裝置上驗證,合成測試的結果不代表實際通話品質。
空間喇叭(擴充套件 API)
除了玩家之間的對話,SocketSVC 還提供空間音訊 API,讓其他伺服器外掛在世界中放置獨立、有位置的音源:
- 由伺服器定義的喇叭:有固定的 ID 和顯示名稱,重新啟動後喇叭的身分不變,玩家替它設定的音量也會保留。
- 每個喇叭兩種音源:把某位玩家的即時麥克風轉送到固定位置,或播放伺服器上的 WAV 檔案。
- 距離衰減與立體聲定位:和玩家語音採用相同模型,每個喇叭都能設定範圍與開始淡出的距離。
- 每個喇叭各自的用戶端音量滑桿:和一般的玩家音量清單分開,依伺服器與喇叭 ID 儲存在本機。
- 收聽者控制:限制哪些人聽得到某個喇叭。
- 附帶選用的範例外掛(
SocketSVCSpeakerExample),示範如何用簡單的指令,把固定在方塊上的喇叭綁定到 WAV 檔案或某位玩家的麥克風。
有了這個 API,大廳音樂、點唱機、廣播公告或環境音景都能做成獨立的擴充套件外掛,不必更動 SocketSVC 核心。請參閱空間音訊 API。
支援對照表
資料截至 2026-09-17,版本可能會變動。
| 元件 | 目前配置 |
|---|---|
| 用戶端模組 | Minecraft 1.21.11、26.1、26.1.1、26.1.2、26.2、26.3;每種版本與載入器的組合各有一個獨立的 JAR 檔 |
| 伺服器 | Paper/Purpur/Folia 外掛,或對應同一 Minecraft 版本的 Fabric/Quilt、NeoForge、Forge 專用伺服器模組 |
| 載入器 | Fabric:所有版本(同一個 JAR 檔也標示支援 Quilt);NeoForge:所有版本(26.1 和 26.1.1 使用 beta 版載入器,並以 beta 版發布);Forge:所有版本 |
| Java | 1.21.11 使用 Java 21;26.x 使用 Java 25 |
| 網路 | 伺服器外掛/模組會自行開啟 WebSocket 監聽器;可以直接對外開放(區域網路),公開伺服器則可放在反向代理後面以使用 wss:// |
| Velocity / BungeeCord 伺服器網路 | 一個選用的中繼外掛 JAR 檔(兩種代理伺服器共用同一個檔案),讓整個代理伺服器網路只需要一個公開語音連接埠,不必每台後端伺服器各開一個。請參閱代理伺服器中繼 |
| 用戶端語言 | 英文、簡體中文、繁體中文、文言文、日文、韓文、俄文、德文、法文和西班牙文,跟隨 Minecraft 的語言設定 |
語音聊天需要用戶端和伺服器都安裝才能運作;任何載入器的用戶端都能搭配 Paper 外掛或任一種伺服器模組。Modrinth 上每個檔案的版本號都以 @client、@server 或 @proxy 結尾,一看就知道是用戶端、伺服器還是代理伺服器用的。用戶端支援 26.x,不代表伺服器版本已經在相同的 Paper 版本上驗證過。
已在使用 SocketSVC 的伺服器
| 伺服器 | IP | Minecraft 版本 | 網站 |
|---|---|---|---|
| 泥土商店 (dirtshop) | dirtshop.xyz | 1.21.11+ | dirtshop.xyz |