疑難排解 - SocketSVC Docs
SocketSVC Docs

疑難排解

自動重新連線、/ssvc status、錯誤訊息、開發者模式與常見問題

自動重新連線

語音成功連線後,如果因為網路或語音服務而中斷,只要你還在同一個 Minecraft 伺服器上,用戶端就會自動申請新的一次性權杖並重新連線,不必執行 /ssvc reconnect。

項目行為
重試間隔每次失敗後依序等待 5、10、20、30 秒,之後最多每 30 秒重試一次
逾時等待權杖回應與開啟 WebSocket 各自在 30 秒後逾時
退避重設連線維持 30 秒後重設
斷線偵測每 10 秒送一次 WebSocket ping/pong,即使沒人說話也能發現連線已失效;重試間隔從發現的那一刻起算
權杖每次嘗試都會申請全新的一次性權杖;失敗的權杖一律不快取、不重複使用。權杖的 30 秒有效期只用於准許連線,已建立的連線不必定期更新
保留的狀態恢復連線後,靜音/停止接收語音與首次使用的隱私設定都會保留
通知連續失敗時,聊天室只會通知一次,直到語音恢復為止;設定畫面會顯示「語音將自動重新連線」,HUD 則顯示「重新連線中...」

即使代理伺服器沒有公告外掛頻道,只要先前曾連上語音,這次遊戲連線仍可申請新權杖,前提是伺服器支援 socketsvc:handshake_request。沒有安裝 SocketSVC 的伺服器則會安靜地維持離線。

以下情況會停止自動重試:

  • 你離開或切換 Minecraft 伺服器(重試排程會清除,舊伺服器遲來的回應也會忽略)
  • 明確停止語音
  • 連線因為遭到取代、退出、頻率/政策拒絕或不支援的訊息而關閉(關閉代碼 4000/4003/4008/1008/1003)

舊權杖絕不重複使用;伺服器若未確認有執行 SocketSVC,用戶端也絕不會盲目重新連線。重試停止後,可以執行 /ssvc reconnect 手動重新開始。暫時性錯誤與權杖遭拒(4001)則會自動重試。

麥克風斷線時

拔掉耳麥、USB 麥克風重設或藍牙耳機斷訊,都不會中斷語音。用戶端會自行重新開啟麥克風,不必回到設定重新選擇。

情況會發生什麼
麥克風馬上就恢復(短暫重設)約半秒內恢復收音,聊天室不會顯示訊息
你選擇的麥克風不見了,但還有其他麥克風改用系統預設麥克風,並在聊天室告知
完全沒有麥克風用戶端會持續重試(最多每幾秒一次),並在聊天室告知一次
你選擇的麥克風重新插回幾秒內自動切換回來,並在聊天室告知麥克風已恢復
麥克風仍連接著,但不再傳送音訊連續 3 秒沒有音訊就視為斷線,並重新開啟

能不能切換回原本的麥克風,要看裝置重新連接後系統是否再次回報。如果麥克風沒有自動恢復,請在 裝置 中重新選擇,這樣一定會重新開啟。

手動重新連線與狀態

指令用途
/ssvc status顯示連線狀態、靜音/停止接收語音、麥克風 RMS 音量與門檻、本次工作階段已傳送的幀數,以及輸入/輸出裝置
/ssvc reconnect不必離開 Minecraft 就能申請新權杖;伺服器須為新版,最多每 5 秒執行一次

詳情請參閱 操作方式。

錯誤訊息

訊息意義
語音伺服器網址無效,請管理員檢查 public-url。伺服器傳來的語音網址格式錯誤,須由伺服器管理員修正 public-url
語音授權已過期或遭拒絕,輸入 /ssvc reconnect 取得新授權。權杖已過期或遭拒絕
無法連上語音,輸入 /ssvc reconnect 重試。連不上語音監聽器
無法啟動語音連線,請檢查伺服器網址並輸入 /ssvc reconnect。開啟連線失敗
語音連線逾時,輸入 /ssvc reconnect 重試。連線沒有在時限內完成
語音已斷線(原因),輸入 /ssvc reconnect 重試。連線中斷,括號內是原因
收到無效的語音連線資料,請管理員檢查 SocketSVC。交握資料格式錯誤,通常是伺服器的版本或設定問題
無法使用麥克風,請重新開啟輸入裝置。麥克風已拔除或無法開啟;請到「一般設定」分頁重新選擇麥克風
自訂取樣沒有聲音、有雜音,或顯示「無法讀取」舊版會誤讀 24 位元與 32 位元的 WAV,還可能把 WAV 交給 MP3 解碼器處理,這兩個問題都已修正。如果仍有問題,可能是檔名沒有對應到任何鼓;「鼓組音色」設定會列出哪些鼓改用內建音色、哪些檔案沒有用到,以及原因
無法使用樂器:...line with format PCM_SIGNED... not supportedSocketSVC 試過的錄音格式,裝置全都拒絕。通常是其他程式正在使用這個裝置,最常見的是 DAW 獨佔了錄音介面,請先把它關閉。訊息裡附有裝置自己回報的原因,那才是值得細看的部分

自動重新連線期間,提到 /ssvc reconnect 的錯誤通常會自行恢復。

常見問題

症狀優先檢查
在遊戲中但沒有語音/ssvc status、伺服器狀態、基礎網址、監聽器是否可連線、代理伺服器協商、首次使用設定與靜音狀態
首次使用設定期間沒人聽得到我按下「開始使用」關閉設定之前,不會傳送任何麥克風音訊
在本機可以用,但其他電腦的玩家連不上請伺服器管理員確認 public-host/public-url 是玩家連得到的位址,而不是 localhost(請參閱 架設伺服器)
音訊測試都通過,但實際通話聽起來不對檢查裝置路由與收音/播放設定,並實際找兩位玩家測試;合成測試無法涵蓋所有聲學情況
其他人聽到自己的回音確認「進階設定」→「迴音消除」已開啟(升級時會保留舊版儲存的「關閉」);遇到難搞的裝置,可以關閉「自動偵測迴音延遲」改為手動設定。戴耳機是最可靠的解法
說話的開頭或結尾會斷掉使用「按鍵說話」,或將「語音偵測」設為「手動」並調低門檻
別人聽得到背景噪音或遊戲聲音開啟「雜訊抑制」;在支援的平台上可下載「進階雜訊消除」模型
玩家音量顯示「等待玩家名單;舊版伺服器不支援此功能。」伺服器版本太舊;語音仍可使用,只是沒有玩家名單。請把用戶端和伺服器都更新
名牌上從不顯示停止接收語音的圖示用戶端和伺服器都要更新,才會同步停止接收語音的狀態
分辨不出聲音在前方還是後方使用立體聲耳機,並停用其他環繞音效處理;定位只分水平方向,請參閱 耳機空間音訊
「進階雜訊消除」顯示「此平台不支援」只支援 Windows x64、Linux x64 與 macOS Apple Silicon;其他平台使用 RNNoise
「進階雜訊消除」模型下載失敗點一下即可重試;下載期間與失敗後會改用 RNNoise
語音連上時遊戲當機,hs_err_pid 記錄檔寫著 socketsvc-mic-capture 執行緒在 msvcp140.dll 發生 EXCEPTION_ACCESS_VIOLATION只發生在 Windows:你的 Java 內附的 Microsoft C++ 執行階段比「進階雜訊消除」模型(ONNX Runtime)需要的舊,會直接讓遊戲當機而不是失敗。請關閉「進階雜訊消除」。更新後的用戶端會自動偵測,改用預設的雜訊抑制,並顯示「因舊版 Windows 執行階段被封鎖」。若仍想使用這個模型,請改用較新的 Java 21 版本;如果舊檔是 Windows 本身的,則安裝最新的 Microsoft Visual C++ 可轉散發套件
標題畫面出現「偵測到其他語音聊天模組」同時裝了 Simple Voice Chat 或 Plasmo Voice。兩個都可以保留,在沒有 SocketSVC 的伺服器上 SocketSVC 會自動讓開(請參閱 相容性)
看不到 SocketSVC 圖示、按鍵沒反應Simple Voice Chat 或 Plasmo Voice 已連上這台伺服器,而伺服器沒有 SocketSVC,所以 SocketSVC 自動讓開。這是正常的
看不到 Simple Voice Chat 或 Plasmo Voice 圖示、按鍵沒反應那個模組沒有連上,所以 SocketSVC 把它的按鍵關掉。如果伺服器確實有裝它,代表它連線失敗,請從模組清單開啟它的設定畫面
按 V 打不開 Simple Voice Chat 或 Plasmo Voice 選單Minecraft 把重複的按鍵交給了 SocketSVC,請在「控制」設定中改掉其中一個(請參閱 相容性)
把世界開放給區域網路,但訪客沒有語音訪客要安裝符合自己載入器的 SocketSVC 用戶端模組,而且必須開啟 進階設定 → 區域網路主持 → 在區域網路主持語音聊天;請參閱 區域網路與單人遊戲
聊天室說正在使用系統預設麥克風你選擇的麥克風已拔除或無法使用;恢復後會自動切換回去,請參閱 麥克風斷線時
音效板顯示「此伺服器尚未支援音效板頻道…」伺服器版本太舊;音效會走你的麥克風頻道,無法同時播放
其他人聽不到我的音效板伺服器可能設定了 soundboard-enabled: false,或拒絕了你的 socketsvc.soundboard 權限;此外,停止接收語音的玩家本來就聽不到
網址下載顯示無法自動下載 ffmpegmacOS 請自行安裝 ffmpeg(例如 brew install ffmpeg)並重新啟動遊戲
在沒有 SocketSVC 的伺服器上顯示斷線圖示正常:沒有東西可以連線。按 H 可隱藏 HUD
在沒有 SocketSVC 的伺服器上,HUD 顯示「連線中...」現在不應該再發生:要等伺服器宣告 SocketSVC 或送出交握,才會出現「連線中...」。如果還是出現,代表伺服器(或前面的代理伺服器)宣告了 SocketSVC 的頻道卻沒有執行它

開發者模式

開啟「進階設定」→「診斷」→「開發者模式」後,右上角會顯示本機語音統計資料,每秒更新兩次;這個設定會保留下來:

  • 每秒傳送(指已進入 WebSocket 傳送佇列)與接收的封包數,以及本次工作階段的總數
  • 本機 TX 丟棄數與百分比
  • 播放佇列幀數、音源數、重新緩衝目標、溢出丟棄與延遲修剪
  • 已解碼幀數、解碼錯誤與無效封包
  • 緩衝區耗盡次數(包含一般說話時的停頓)以及距離上一個音訊封包的時間
  • 麥克風 RMS,以及目前是否正在傳送
  • 迴音消除狀態(關閉/已鎖定並顯示延遲/未鎖定、學習中或壓低中)
  • 協商出的通訊協定版本(v1/v2)、遺失幀、PLC 成功補償的幀,以及過時/重複的幀

解讀這些數值時請注意:

  • 「已傳送」只代表封包已進入 WebSocket 傳送佇列,不代表已確認送達。
  • 遺失幀是播放/應用層的序號缺口,不是真正的 TCP 網路遺失。疊加畫面看不到端對端延遲,也看不到伺服器的丟棄遙測資料。
  • 什麼都沒收到,可能只是附近沒有人在說話。
  • 延遲修剪是為了消除緩衝延遲而刻意跳過的幀,不是連線弄丟的幀。數字持續小幅增加,表示音訊一直成批抵達;數字不再增加,表示佇列已穩定在目標值。
  • 每次重新嘗試連線時計數器都會歸零;連線失敗後仍會繼續顯示。
  • 不會顯示任何權杖、伺服器網址或玩家身分。

回報問題時,也請開啟「詳細記錄」,把連線、音訊與網路的追蹤資訊寫進 latest.log。

網路延遲與緩衝

以下都是用戶端內建的行為,不需要任何設定:

  • 播放時會依封包抵達的抖動程度,在 60 到 400 毫秒之間調整起始預緩衝;每位說話者的積壓上限固定為 1 秒(50 幀)。封包抵達出現空檔時,目標值會迅速提高,維持一秒後再每 250 毫秒降低一幀。
  • 卡頓後留在佇列裡的延遲會逐步消除。佇列沒辦法自己消化,因為每 20 毫秒抵達一幀、也只播放一幀;所以卡頓後堆積的音訊會以溫和的速度跳過(每 240 毫秒跳過一個 20 毫秒的幀,落後很多時會更快),直到佇列回到目標值。沒有積壓的連線則完全不會修剪。如果你以前經由通道或反向代理伺服器使用語音,一開始正常、但越講越延遲,現在應該會看到改善。
  • 樂器的線路輸入在收音端也用同樣的方式消化,所以自己電腦短暫卡頓時,樂器聲不會再一直落後於你的演奏。
  • 1–3 幀(最多 60 毫秒)的空缺以 Opus PLC 補償;更長的空缺則會重設解碼器,再從真實音訊接著播放。
  • WebSocket 暫時出現背壓時,傳送端每位說話者最多保留 25 個封包,總共最多 256 個;尚未送出的音訊一旦超過 600 毫秒,就會捨棄最舊的封包。

緩衝有限,無法掩蓋任意長的 TCP 卡頓;真正的跨區域連線仍需實際測試。