跳到主要內容
節省工具箱Jason Tools
自研專案

jt-live-whisper 線上會議英中雙向口譯

Jason Cheng 發布 瀏覽 6 次
jt-live-whisper 線上會議英中雙向口譯
本文目錄
  1. 功能概述
  2. 適用的會議軟體
  3. 事前準備
  4. WebUI 設定
  5. 命令列啟動
  6. 會議中的字幕頁
  7. 回授與重複翻譯的防護
  8. 延遲與排隊處理
  9. 模型與資料位置
  10. 測試環境與問題回報
  11. 目前的限制
  12. 結論
  13. 參考資料

和國外原廠、客戶開線上會議時,最吃力的往往不是會議內容,而是語言。對方講得快,要一邊聽一邊想怎麼回應;換自己講英文,又擔心表達不清楚。

jt-live-whisper 是我開發的全地端 AI 語音工具箱,提供即時轉錄、即時翻譯字幕、錄音檔批次處理、講者辨識與會議摘要,所有模型都可以在自己的設備上執行。過去它在會議中只能顯示雙語字幕,v2.28.0 起,英中雙向模式加入了「語音口譯」,可以在會議中做英中雙向口譯。

開啟後,對方說的英文會翻成中文念到我的耳機,我說的中文則翻成英文,以合成語音送進會議,對方直接聽到英文。

示範畫面:左邊的 Mac 是說英文的 Bianca,只開 Jitsi Meet;右邊的 Windows 是說中文的 Kevin,開著 Jitsi Meet 與 jt-live-whisper(人名與會議內容皆為虛構)
示範畫面:左邊的 Mac 是說英文的 Bianca,只開 Jitsi Meet;右邊的 Windows 是說中文的 Kevin,開著 Jitsi Meet 與 jt-live-whisper(人名與會議內容皆為虛構)

功能概述

開啟語音口譯後,jt-live-whisper 在我的電腦上同時處理兩個方向:

  • 念給我聽
    擷取電腦播出的會議聲音,辨識對方的英文、翻成中文,以台灣華語的合成語音念到耳機。
  • 念給對方聽
    擷取我的麥克風,把中文翻成英文,以合成語音送進「虛擬麥克風」,會議軟體再把它當成我的麥克風送給對方。
  • 雙語字幕
    雙方說的話都以原文、譯文並排顯示,每一句標出口譯狀態。

兩個方向可以只開一個。對方英文流利、只是我聽得比較吃力時,只開「念給我聽」就夠了。

適用的會議軟體

jt-live-whisper 不是會議軟體的外掛,它擷取的是電腦播出的聲音,我說的話則經由麥克風送出,所以原理上任何線上會議軟體都能使用,不需要會議軟體配合,前提是會議的聲音由這台電腦播放,會議軟體的麥克風也能設成系統預設或虛擬麥克風。目前實際測試過的會議軟體是 Jitsi Meet,Zoom、Microsoft Teams、Google Meet 尚未實測。

對方不用安裝任何東西。上面的示範中,Bianca 那台電腦只開了瀏覽器版的 Jitsi Meet。

對方那一側只開線上會議,不用安裝 jt-live-whisper
對方那一側只開線上會議,不用安裝 jt-live-whisper

事前準備

完成 jt-live-whisper 的基本安裝與系統音訊擷取設定後(macOS 13 以上要授權一次「螢幕錄製」),「念給我聽」三個平台都不用另外安裝。「念給對方聽」需要一支虛擬麥克風,因為會議軟體只能從麥克風收音:

平台虛擬麥克風
macOS要先安裝免費的 BlackHole 2ch(brew install --cask blackhole-2ch,需要管理者密碼,裝完重新開機)
Windowsv2.29.0 起支援,先執行一次 .\install.ps1 -InterpMic 安裝 usbip-win2(免費、開放原始碼,核心驅動由微軟簽署),需要系統管理員權限。開始口譯時自動建立「jt-live-whisper Interpreter Mic」,結束時移除
Linux不用另裝驅動,要有 PulseAudio,或 PipeWire 搭配 PulseAudio 相容服務,以及 pactl、pacat 指令。開始時自動建立、結束時移除

注意:Windows 安裝 usbip-win2 時,USB 集線器會重新啟動,USB 鍵盤、滑鼠、耳機會斷線幾秒,請勿在會議中安裝。安裝後開始口譯時若顯示沒有接上口譯麥克風,先重新開機一次。

語音合成在 GPU 伺服器上執行,GPU 伺服器要是 v2.28.0 以上,並啟用文字轉語音功能。以下的設定都假設已經完成基本安裝,也設好 GPU 伺服器與 LLM 伺服器的連線,GPU 伺服器沒有可用的語音合成時,口譯無法開始。

WebUI 設定

設定只有三個地方。先在「輸入來源」選「即時音訊擷取」,「語音辨識」區的「功能模式」選「英中雙向字幕」。

功能模式選「英中雙向字幕」
功能模式選「英中雙向字幕」

下方會出現「語音口譯」區。勾選「念給我聽(中文)」與「念給對方聽(英文)」,各自選擇播放裝置與聲音。macOS 偵測到 BlackHole 2ch 時會顯示綠色提示,沒裝則顯示黃色提示。

「語音口譯」區:勾選要念給誰聽,並選擇裝置與聲音
「語音口譯」區:勾選要念給誰聽,並選擇裝置與聲音

最後按「開始」,並把會議軟體的麥克風設成「與系統相同」或「預設」。

這個麥克風設定只要做一次。v2.31.0 起,口譯期間 jt-live-whisper 會自動把系統預設麥克風切到虛擬麥克風,正常結束時切回原本的麥克風,會議軟體跟著系統預設走,不用每場會議手動切換。程式意外結束而沒有切回的話,下次啟動 jt-live-whisper 時會補切回;在那之前,會議軟體會一直用虛擬麥克風,建議開會前先看一下系統預設的輸入裝置,也請對方確認聽得到。不想自動切換的話,可以在同一區取消勾選,改成自己在會議軟體選擇虛擬麥克風,但會後要記得改回來,否則下一場對方會聽不到。

命令列啟動

習慣用命令列的話,三個平台的寫法如下:

# macOS:先安裝 BlackHole 2ch
./start.sh --mode en_zh --speak-me default --speak-them "BlackHole 2ch"

# Linux:自動建立虛擬麥克風
./start.sh --mode en_zh --speak-me default --speak-them auto

# Windows:先執行一次 .\install.ps1 -InterpMic
.\start.ps1 --mode en_zh --speak-me default --speak-them auto

其他常用參數:--speak-me-rate、--speak-them-rate 調整語速,--interp-intro none 關閉開場說明,--passthrough 同時送出原聲,--no-switch-default-mic 不自動切換系統預設麥克風。

會議中的字幕頁

會議中的字幕頁:左邊是對方的英文與中文翻譯,右邊是我的中文與英文翻譯
會議中的字幕頁:左邊是對方的英文與中文翻譯,右邊是我的中文與英文翻譯

左邊是對方說的英文與中文翻譯,標「已播」代表已經念到我的耳機;右邊是我說的中文與英文翻譯,標「已送」代表程式已經把英文送進虛擬麥克風,但不代表對方一定收到,例如會議軟體選錯麥克風或處於靜音時。每一句的「辨」「譯」是辨識與翻譯各花了幾秒。

口譯狀態還有「排隊」「略過」「失敗」,念給對方聽的句子在還沒念出之前,可以按「取消」不送出。畫面底部兩個方向各有靜音鈕與語速設定,語速預設 1.2 倍(v2.31.3 起),每按一次 − 或 + 調整 0.1 倍,下一句就生效,不用重新開始。

回授與重複翻譯的防護

念給我聽的中文和會議的聲音從同一個輸出裝置播出,擷取系統音訊時會直接錄到;從喇叭或耳機漏出來的聲音,也可能被麥克風收進去。對方那一側沒開回音消除的話,我送出的英文也可能從會議聲音傳回來。不處理的話,同一句話會被翻來翻去。jt-live-whisper 用三道機制處理:

  • 系統音訊是中文就不辨識
    正在念中文給我聽,或剛念完時,GPU 伺服器先判斷這段會議聲音是不是中文,是就略過。這道機制只在由 GPU 伺服器辨識時有作用,在本機辨識時,改成系統音訊辨識出中文字就略過。
  • 20 秒內念過的句子不再處理
    記住最近 20 秒念過的原文與譯文,辨識到相似的句子就略過。
  • 念的期間放寬判斷
    念中文給我聽的期間與之後 8 秒,系統音訊的比對門檻會放寬,正在念時連 3 個字以內的短句也略過。

這些是保險機制,實際使用時仍然要戴耳機,至少能避免麥克風收到漏音。

延遲與排隊處理

邊合成邊播。 不等整句合成完才播放,GPU 伺服器第一段約 0.3~0.7 秒就送出。GPU 伺服器同時在處理其他工作、合成速度比說話慢時,會先多緩衝一段再播放,避免念到一半中斷,這時延遲會稍長。

優先處理送給對方的句子。 同一時間只合成一句,兩個方向都在排隊時,送給對方的英文優先,因為對方正在等我回答。同一個方向排了 2 句以上時,語速至少提高到 1.2 倍;等超過 15 秒還沒開始念的句子就不念,字幕照常顯示並標「略過」。

半句話以整句取代。 說話時辨識可能先拿到半句,等講完再換成完整的一句。還沒念的半句會直接換成整句。整句的開頭和已經念出的前半句相同時,只念多出來的部分;但翻譯重組語序,或前半句聽錯時,整句仍會再念一次。

開場先說明。 第一次念給對方聽之前,會先念一句「Hi, I'm using an AI interpreter, so there will be a short delay.」,讓對方知道接下來的是 AI 合成語音而且有延遲,這句可以關閉。

可同時送出原聲。 預設對方只聽到英文。勾選「同時送出我的原聲」的話,我的原聲也會送進虛擬麥克風,念英文時原聲自動調小到約四分之一。要注意的是,暫停的是口譯,原聲照樣會送出,想私下交談時請用 WebUI 的麥克風靜音或會議軟體的靜音。

另外,v2.30.0 起即時模式期間會防止電腦因為閒置而睡眠,Windows 與 macOS 也會防止螢幕自動關閉,避免會議開到一半中斷錄音與口譯。公司以群組原則強制的閒置鎖定仍可能生效;不需要這項功能時,命令列加 --no-keep-awake。

模型與資料位置

語音口譯用到三種 AI 模型:

用途模型執行位置
語音辨識Whisper large-v3-turboGPU 伺服器或本機
翻譯本地端 LLM,預設 Ollama 的 gemma4:26bLLM 伺服器
語音合成VoxCPM2只在 GPU 伺服器

jt-live-whisper 的台灣華語朗讀可以在 Apple Silicon Mac 本機合成,但口譯不行:本機合成的速度大約和說話一樣快,同時處理兩個方向加上辨識會跟不上,所以口譯的合成只在 GPU 伺服器。

英文聲音內建女聲、男聲 2 個,預設男聲,都是 VoxCPM2 依文字描述產生的 AI 聲音,不是真人錄音。中文則沿用朗讀的聲音,預設是「女聲・溫柔」。

GPU 伺服器與 LLM 伺服器都是自架的話,辨識、翻譯與合成都不會把會議內容送到雲端的 AI 服務。會議本身的聲音與畫面怎麼傳送,仍由各會議平台決定。要注意的是,v2.31.4 起 LLM 伺服器可以填外部的 https 網址,如果指向雲端服務,要翻譯的文字就會送出去。

測試環境與問題回報

目前這個功能只在幾台電腦上測試過:

平台測試狀況
Windows 11念給我聽、念給對方聽都在實體機上以 Jitsi Meet 實測,開頭的示範圖就是這台
macOS 27念給我聽、念給對方聽都已實測
macOS 26(Apple Silicon)念給對方聽已實測,包含自動切換系統預設麥克風;念給我聽尚未完整實測
Linux(Ubuntu 24.04)自動測試通過,尚未在實際會議中完整實測

會議軟體只實測過 Jitsi Meet,Zoom、Microsoft Teams、Google Meet 尚未實測。

使用時如果遇到問題,歡迎到 GitHub 開 Issue,附上作業系統與版本、會議軟體和問題狀況,確認是問題後我會盡快修正。

目前的限制

  • 只支援英文與中文互譯。
  • 辨識要先累積一段聲音(場景選「線上會議」時約 5 秒),再翻譯與合成,所以會有幾秒延遲,長句也可能分段處理。比較適合輪流發言的會議,搶話多的討論會比較吃力。
  • 已經開始念的句子收不回來。
  • 適合每個人都戴耳機的線上會議,不適合喇叭外放、多人在同一個空間的實體會議室。
  • 對方說話時,如果我正在聽中文,那段錄音被判斷成中文的話會整段略過,字幕會少那幾秒。
  • 實測 Jitsi Meet 時,進出會議的提示音偶爾會被當成英文辨識,翻成中文念出來。

結論

語音口譯無法取代專業口譯員,延遲與輪流發言的限制都很明顯。但對英文讀得懂、聽說比較吃力的人,或需要和國外原廠、客戶開例行會議的團隊,它能減輕不少負擔。

我最重視的是對方不用配合安裝,任何會議軟體都能用,而且只要伺服器都自架,辨識、翻譯到合成都在自己的設備上完成。

參考資料

Jason Cheng

Jason Cheng

企業開源技術顧問,專注架構規劃與實務導入

關於作者 →

延伸閱讀