# Live Captions

> 演講邊講邊出字幕，或幫分頁裡正在播的直播疊上即時翻譯：Confucius4-R2T2、Whisper 靠 WebGPU 在顯示卡上跑，Whisper 也可用 CPU；也可選 Qwen3-ASR，翻譯交給 Hy-MT2。

- URL: https://bytescope.dev/zh-Hant/live-captions/
- Locale: zh-Hant · Also: [en](https://bytescope.dev/en/live-captions.md) · [ja](https://bytescope.dev/ja/live-captions.md)
- Runs: 辨識用的語音真的會傳出你的瀏覽器 — 由瀏覽器廠商的伺服器做語音轉文字。
- Requires: Chrome or Edge on desktop for the full tool: tab audio capture (getDisplayMedia), Chrome Speech Recognition, the built-in Translator or Gemini Nano for translation, and the floating window. Captioning a microphone with a downloaded Whisper model runs in any browser with WebGPU (Whisper base also on WebAssembly), Firefox and Safari included; captioning a stream, translating and floating still need Chromium on desktop, and mobile browsers cannot capture tab audio.
- Updated: 2026-09-08

## What it does

這一頁做兩件事，用同一條管線。音源選麥克風，你的演講邊講邊出字幕；音源選「這台電腦正在播的聲音」，你正在看的直播、影片或通話就有了即時字幕——最典型的就是看日文直播、想疊一行中文字幕。字幕列上方有兩個互不干涉的選擇器：一個選語音辨識引擎——Chrome 內建的語音辨識（邊講邊逐字吐出來）或下載一次、之後都在你電腦上跑的 Whisper 模型；另一個選翻譯引擎——Hy-MT2（下載一次、之後用 WebGPU 在你的顯示卡上跑，這台電腦有可用的 GPU 就推薦它）、Chrome 內建的 Translator、Gemini Nano，或者不翻譯。每講完一句，翻譯就在你的裝置上完成。演講的話，能選麥克風在台上特別重要：真正別在你身上的領夾麥或 USB 麥克風常常不是系統預設，自己指定收音來源，才不會拿三公尺外的筆電內建麥克風做字幕。不管哪種用法，再點一下就能把字幕列彈出成 Document Picture-in-Picture 視窗——一個真正「永遠在最上層」的視窗，macOS 和 Windows 都行：簡報時浮得上全螢幕的 Google Slides、Keynote 和 PowerPoint，看片時一樣浮得上全螢幕的播放器。字幕跑著的時候螢幕不會自動熄掉；停下來之後，整份逐字稿可以匯出成 SRT 或 TXT，原文、譯文或兩者都留。

### 模型

語音辨識：Confucius4-R2T2（簡稱 R2T2，在 GPU 上逐字串流出字幕，有可用 GPU 時就是預設）、Chrome Speech Recognition（Web Speech：不用下載，邊講字邊出；沒裝本機語言包時音訊會送到 Google）、Whisper base、Whisper small、Whisper large v3 turbo（本機跑，一句一句出，large 最重）、Qwen3-ASR 0.6B 和 Qwen3-ASR 1.7B（本機跑，一句一句出，0.6B 是輕的那個）、Gemini Nano（Chrome 內建）。翻譯：Hy-MT2 1.8B（Tencent Hunyuan-MT 2，在你的 GPU 上跑，有可用顯示卡時就是預設；英文、中文、日文之間的翻譯，我們盲測比較下來偏好它勝過 Chrome Translator）、Chrome Translator（內建，沒有 GPU 時的預設）、Gemini Nano。全部在瀏覽器裡跑：R2T2、Whisper、Qwen3-ASR、Hy-MT2 都是透過 WebGPU 在你的顯示卡上跑，「通用 GPU」版照顧沒有 shader-f16 的舊卡（例如 GTX 10 系列），「快速 GPU」版在顯示卡支援時改用 f16，沒有可用的 GPU 時，Whisper 和 Qwen3-ASR 會退回 CPU（WebAssembly，慢一些），R2T2 即時字幕就不會用，翻譯則從 Hy-MT2 改成 Chrome Translator。要下載的模型只抓一次，所有 ByteScope 工具共用。

### 把電腦正在播的聲音變成字幕

播放音訊這條路走的是瀏覽器自己的分享選擇器：按開始、選一個分頁（或視窗、或整個螢幕），然後把音訊的勾打上——最後這個勾就是關鍵。分享分頁並勾選「分享分頁音訊」是最順的路：頁面拿到的是分頁聲音的乾淨數位副本，沒有房間雜音、不經過麥克風，而且聲音全程照常播放——做字幕不會把你正在看的東西靜音。最常見的失誤就是分頁分享了、音訊忘了勾；頁面偵測得到自己收到的是無聲串流，會直接告訴你，但沒辦法幫你打勾。分頁音訊只有 Chrome 和 Edge 支援；要抓原生 App 的聲音（系統音訊），Windows 和 ChromeOS 早就可以，Mac 則要 Chrome 141 以上加 macOS 14.2 以上——因為 macOS 自己在 14.2 之前根本不讓 App 抓系統音訊；更舊的 Mac 改用分頁分享一樣能動。Firefox 和 Safari 則完全沒辦法把螢幕分享的聲音交給網頁。另外還有一條不走選擇器的路：BlackHole、Loopback 這類虛擬音訊裝置會以普通輸入的身分出現在麥克風清單裡，把系統聲音導過去，就能像選麥克風一樣選它。記得順手打開「這是播放音訊」的開關——它會關掉瀏覽器的回音消除和噪音抑制；那些是調給真人講話用的處理，不關的話會反過來吃掉你要字幕的聲音。

### 語音辨識引擎該選哪個

Chrome 內建的語音辨識是延遲最低的選項：不用下載，一句話還沒講完字就開始出來；裝了本機語言包之後，聲音也不會離開這台電腦——沒裝的話，瀏覽器會把音訊上傳到 Google 的伺服器，引擎卡片上的徽章會寫明。Whisper 則是純本機的選項：base、small、large（v3-turbo）三種，下載一次就存在瀏覽器裡、所有 ByteScope 工具共用，用 WebGPU 在你的顯示卡上跑——Whisper base 沒有 WebGPU 也能用 CPU 跑，只是明顯慢一些。Whisper 要等一句話講完才開始辨識，所以字幕是一句一句出來，不是一個字一個字出來；換來的是一個模型就認得很多種語言，而且除了 WebGPU 或 WebAssembly 之外不需要瀏覽器提供任何東西。Whisper 越大越準、也越慢——large 在這一頁收在「更多」裡，因為大多數筆電即時跟不上它。Gemini Nano 是第三個選項：只要你的 Chrome 有提供，就不用從我們這裡下載任何東西，一樣是整句整句出。任何下載都會先問過你：這台電腦還沒有的模型，會先顯示大小、剩餘空間、你是不是在行動網路上，你按了才開始；下載、驗證、載入記憶體、暖機四個階段各自有進度；「測試速度」會拿一段內建的短音訊實際跑一次，在上場前就告訴你這台電腦跟不跟得上。推薦的選項會標出來並附一行理由；你自己改過的選擇，每個工具會各自記住。

### 字幕為什麼會慢，頁面又怎麼量

即時字幕一定落後聲音一步，這一頁寧可把落後多少量給你看，也不假裝沒這回事。延遲來自三段。整句型的引擎——Whisper 和 Gemini Nano——要等到一個停頓、判定這句講完了才開始辨識，所以一句話講多長，字幕就至少晚多久。接著引擎要花時間處理這一句；如果處理時間比這句話本身還長，佇列就會越積越多，每一句都比前一句更晚出來。最後翻譯引擎每句還要再花自己的時間。頁面會在聲音進來時、字幕出去時各蓋一個時間戳，把差值顯示成字幕列角落的一顆小燈：字幕落後 3 秒以內是綠燈，3 到 8 秒是黃燈，落後持續在增加就是紅燈——紅燈的意思是引擎跟不上，不只是慢。紅燈連續 20 秒，頁面會建議你換一個較輕的模型，但絕不會自己幫你切。佇列滿了的時候，會直接丟掉幾句，而不是幾分鐘後才補出來，字幕列上會寫明「跳過了幾句」，不會悄悄吞掉。串流型的引擎有兩個，都整段省掉第一種延遲：有可用 GPU 時預設的 Confucius4-R2T2，以及不用下載的 Chrome 內建語音辨識。兩個都是你邊講字邊出來，所以只要延遲比準確度更重要，就選它們。

### 你的聲音實際上去了哪裡

這個網站平常都保證「什麼都不會離開你的瀏覽器」，在這一頁，這句話成不成立要看你選的引擎。選 Whisper 模型，承諾完全成立：聲音在你的分頁裡轉成文字，哪裡都不去。選 Chrome 內建的語音辨識，預設仍然是雲端辨識：瀏覽器會把音訊上傳到 Google（Chrome）或 Microsoft（Edge）的伺服器處理，跟瀏覽器自家的語音輸入走同一條路——只要走這條路，上傳就是事實。拿它來字幕直播的話，這件事的份量又更重：被上傳的不是你自己的聲音，是別人的——你正在看的影片、通話另一頭的人。從 Chrome 139 開始多了本機這條路：頁面問 `SpeechRecognition` 有沒有本機模型（`processLocally`），裝一次語言包之後，你的聲音就完全在這台電腦上轉成文字。不過不是每種語言都有本機模型，能不能用還會因電腦和平台而異，所以頁面會在執行時實際檢查，引擎徽章直接標出你現在走的是哪一條路，不用猜。翻譯那一半不管選哪個都在本機——Hy-MT2 下載一次之後在你的顯示卡上跑，Chrome 的 Translator 下載一次語言包，Gemini Nano 是 Chrome 自己內建的模型，三個都不會把任何一句送出去。雲端辨識留著是故意的：上台前幾分鐘不該被模型下載卡住。如果內容是機密——內部規劃、客戶的數字——或者那聲音根本不是你的，就選 Whisper 或本機路線，開始前先確認徽章。

### 為什麼講的語言要自己選

這裡沒有語言自動偵測，而且是故意的。語音辨識器開始前就得知道它在聽哪種語言；瀏覽器裡沒有可靠的自動判斷方法，硬讓它猜的結果是一整排理直氣壯的亂碼字幕——它不會承認聽不懂，只會把聲音硬套進錯的語言的詞彙裡。所以不管選哪個引擎，講的語言都是手動選擇。演講的話，這是上台前唯一值得再三確認的設定；字幕直播的話，記得要選的是「影片裡講的語言」，不是你想讀的語言——日文直播配上英文辨識，出來的是一排流暢的鬼話，不是錯誤訊息。目標語言另外挑，中途也能把兩邊對調。

### 一個比全螢幕更上層的視窗

浮動字幕用的是 `documentPictureInPicture`——跟浮動影片同一套「永遠置頂」的機制，只是裡面裝的不是影片，是一整份文件。作業系統的合成器會把這個視窗一直保持在最上面，而這正是任何全螢幕應用程式做不到的事：Keynote、PowerPoint、Google Slides 再怎麼佔滿螢幕，壓不過它，全螢幕的影片播放器也一樣。這件事在兩種用法裡都吃重：簡報時，翻譯一直蓋在投影片上；看片時，就是它讓浮動字幕變成全螢幕直播上真正的字幕。需求也照實寫。分頁和螢幕的音訊擷取只有桌機的 Chromium 瀏覽器（Chrome、Edge）做得到；Chrome 內建的語音辨識、內建的 Translator（Chrome 138 以上）、本機語音辨識（Chrome 139 以上）、Gemini Nano 和浮動視窗（Chrome 或 Edge 116 以上）也都是；Mac 上抓系統音訊還要再加 Chrome 141 以上和 macOS 14.2 以上（Windows 和 ChromeOS 沒這個門檻）。例外是拿 Whisper 字幕麥克風，還有用 Hy-MT2 翻譯：只要瀏覽器有 WebGPU 兩個都能跑（Whisper 用 WebAssembly 也行），Firefox 和 Safari 也一樣，所以在本機幫自己的聲音上字幕、再用 Hy-MT2 翻譯，並不需要 Chrome——但要字幕直播、把結果浮出去，就還是需要。缺哪樣就老實退回哪一步——純字幕、字幕留在頁面裡而不是浮動視窗、或直接用支援對照表告訴你缺什麼——不會假裝有。

## Limits

Does not save recordings or produce a subtitle file for an existing video (use video-subtitles); it captions live audio — your microphone or a tab you share — on screen, and exports that transcript as SRT/TXT afterwards.

## FAQ

### 為什麼講的語言要自己選？不能自動偵測嗎？

因為瀏覽器裡沒有可靠的自動偵測。這裡的每一個引擎——Chrome 內建的語音辨識和 Whisper 都一樣——開始前就必須指定語言，硬要它猜的話，它不會承認聽不懂，而是把你的聲音硬套進錯的語言，產出一整排看起來煞有其事的亂碼字幕。反正一場演講要講什麼語言，你自己最清楚——上台前手動選一次、確認一次，比一個會在台上出包的自動偵測誠實得多。

### 我想幫正在看的影片或直播上字幕，要怎麼做？

把音源從麥克風切成「這台電腦正在播的聲音」，瀏覽器會跳出分享選擇器。最順的走法是選影片所在的分頁、把「分享分頁音訊」打勾：頁面拿到的是乾淨的數位聲音，沒有房間雜音，而且影片照常出聲——不會被靜音。把「講的語言」設成直播講的語言、挑好翻譯目標，再把浮動視窗彈出來壓在全螢幕播放器上，就完成了。支援狀況記兩行就夠：分頁音訊只有 Chrome 和 Edge 能用；要抓原生 App 的聲音（系統音訊），Windows 和 ChromeOS 一直都行，Mac 要 Chrome 141 以上加 macOS 14.2 以上——更舊的 Mac 把直播開在分頁裡、分享那個分頁，一樣能動。Firefox 和 Safari 完全不會把螢幕分享的聲音交給網頁。

### 分頁分享了，字幕卻沒出來，是哪裡出錯？

八九不離十是那個音訊勾選框。瀏覽器的分享選擇器把聲音當成要另外同意的東西，「分享分頁音訊」沒打勾的話，頁面拿到的是一條完全正常、也完全無聲的串流——這是這個音源最常見的失誤。頁面偵測得到自己收到的是無聲，會直接說出來，不會讓你對著空白的字幕列發呆；但它沒辦法幫你打勾——停止分享、重新分享一次，這次把勾打上。如果選擇器裡根本沒有音訊可勾，代表你的瀏覽器和系統組合送不出那個聲音：視窗和整個螢幕的分享，能帶聲音的組合比分頁分享少；在 Mac 上，系統音訊還要 Chrome 141 以上加 macOS 14.2 以上。

### 語音辨識模型該選哪一個？

先想你最在乎什麼。有能用的顯示卡時，英文、中文、日文預設是 Confucius4-R2T2，邊講字幕邊出來；除非它在這台電腦的測速結果是跟不上。沒有能用的顯示卡，要延遲最低就是 Chrome 內建的語音辨識——不用下載、邊講字邊出來，只要能用，這一頁就會推薦它；不過中文和英文如果已經下載了 R2T2、而且測速結果是順的，還是會先推薦 R2T2。要隱私、又不想綁死在 Chrome：Whisper——下載一次，在你的分頁裡用 WebGPU 跑，什麼都不上傳，任何有 WebGPU 或 WebAssembly 的瀏覽器都能用。Whisper 裡面，base 最小最快，沒有 WebGPU 也能用 CPU 跑；small 是有顯示卡的筆電做即時字幕的常見選擇；large（v3-turbo）最準也最慢，這一頁把它收在「更多」裡，因為大多數電腦即時跟不上。Gemini Nano 是不用下載的本機選項，前提是你的 Chrome 有提供。拿不定主意就按卡片上的「測試速度」：它會拿一段內建的短音訊實際跑一次，直接告訴你這台電腦跟不跟得上——比任何泛泛的建議都準。

### 字幕為什麼會晚幾秒才出來？

因為三段延遲裡有兩段是引擎的工作方式本身造成的。整句型的引擎——Whisper、Gemini Nano——要等到一個停頓才判定這句講完，所以一句話講多長，字幕就至少晚多久；接著它要花時間辨識，然後翻譯引擎又要花自己的時間。在跟得上的電腦上，加起來大約是兩三秒；在跟不上的電腦上，佇列會越積越多，每一句都比上一句更晚。字幕列角落那顆燈就是這個量測結果：落後 3 秒以內綠燈、8 秒以內黃燈、落後持續增加就紅燈。一直紅燈的話，換一個較輕的模型——Whisper base，或 Chrome 內建的語音辨識，它邊講邊逐字出來，完全不用等句尾。紅燈連續 20 秒頁面會主動建議你換，但絕不會自己切；如果為了追上而丟掉幾句，也會寫明跳過了幾句，不會偷偷吞掉。

### 我的聲音是在本機處理，還是被上傳了？

看你選哪個引擎，卡片上的徽章會寫明。選任何一個 Whisper 模型，聲音都在你的分頁裡轉成文字，哪裡都不去。選 Chrome 內建的語音辨識，預設是雲端辨識，這時音訊真的會被上傳：Chrome 送到 Google 的伺服器、Edge 送到 Microsoft 的——走這條路的時候，請把這一頁當成雲端逐字稿服務看待，因為它就是。拿來字幕直播的話更要當一回事：這時被上傳的是別人的音訊——你正在看的影片、通話另一頭的人。Chrome 139 之後這個引擎裡也有出路：切到本機辨識，瀏覽器下載一次語言包，之後全程在你的電腦上轉文字（`processLocally`）。不是每種語言都有本機模型，能不能用因電腦而異，所以頁面會在執行時檢查、把目前的路徑標出來，不讓你用猜的。翻譯不管選哪個引擎都在本機。內容機密的話，就選 Whisper 或本機路線，開講前看清楚徽章。

### 模型要下載多大？每次都要重新下載嗎？

看引擎，而且在你看到數字之前不會有任何下載。Chrome 的 Translator 每個語言配對抓一個大約幾十 MB 的語言包，由瀏覽器快取，之後的工作階段、甚至其他用到同一配對的網站都直接沿用。Whisper 模型比較大，同意框會先顯示確切大小、這台電腦的剩餘空間、你是不是在行動網路上，你按了才開始；下載可以暫停，下次從中斷的地方繼續；下載完就存在瀏覽器裡一份，所有 ByteScope 工具共用。選擇器底下的「管理已下載的模型」列得出這台電腦上有哪些、也能刪掉。Chrome 內建語音辨識的本機語言包也是下載一次就好，只有一點不同：它抓不到下載進度，頁面只能顯示「準備中」。會場的 Wi-Fi 通常靠不住，建議上台前先開一次頁面、把引擎選好，讓下載先跑完。

### 瀏覽器視窗怎麼可能浮在全螢幕簡報上面？

因為它不是普通視窗。Document Picture-in-Picture 視窗由瀏覽器和作業系統的合成器保持在最上層，跟浮動影片能蓋在任何東西上面是同一套機制——全螢幕的 Keynote、PowerPoint、Google Slides 也一樣，macOS 和 Windows 都適用。把它拖到字幕該在的位置、像普通視窗一樣調大小就好；麥克風和辨識留在原本的分頁裡跑，簡報搶走焦點也不影響字幕繼續動。

### Safari 和 Firefox 能用嗎？

能用一部分，頁面會告訴你是哪一部分。Whisper 只要有 WebGPU 或 WebAssembly 就能跑，所以用本機的 Whisper 模型幫自己的麥克風上字幕，在 Firefox 和 Safari 上跟在 Chrome 上一樣可以。Hy-MT2 翻譯也一樣：下載一次、在顯示卡上跑，所以有 WebGPU 的瀏覽器都能用。這一頁其他的東西都只有 Chromium 才有：抓分頁或螢幕的聲音（Firefox 和 Safari 完全不會把螢幕分享的聲音交給網頁）、Chrome 內建的語音辨識、內建的 Translator 和 Gemini Nano，還有能浮在全螢幕程式上面的 Document Picture-in-Picture 視窗。所以在這兩個瀏覽器上，你會得到頁面裡的本機字幕（自己講的話），電腦有可用的 GPU 還能用 Hy-MT2 翻譯，但直播沒辦法上字幕、沒有內建的翻譯引擎、也沒有浮動視窗；支援對照表會明講缺了什麼，不會安靜地壞掉。要字幕直播，用桌機的 Chrome 或 Edge——要用內建的 Translator 得 Chrome 138 以上，想讓 Chrome 內建的語音辨識留在本機就用 139 以上。

### 可以只顯示翻譯、不顯示原文嗎？

可以。字幕列有顯示切換：只有原文、只有翻譯、或兩行都顯示。聽眾聽不懂你的語言時，通常就切成只有翻譯，整條字幕列都能拿來放更大的字。只有一個但書：翻譯引擎選了「不翻譯」、或這個瀏覽器根本沒有翻譯引擎時，「只有翻譯」沒東西可顯示，所以會退回顯示原文字幕，而不是給你一條空白。

### 可以指定字幕要收哪一支麥克風嗎？

可以。頁面會列出瀏覽器看得到的所有麥克風，讓你自己挑要用哪一路收音做字幕。在台上這不是小事：真正收到你聲音的通常是領夾麥或 USB 音訊介面，而它們常常不是系統預設——放著不管，就會變成拿三公尺外的筆電內建麥克風做字幕，出來的字自然是一團糊。明確選好裝置、講一句測試、確認字幕沒問題，再讓觀眾看到。這份清單裡也會出現 BlackHole、Loopback 這類虛擬音訊裝置——把系統聲音導過去再選它，就能不走螢幕分享抓到播放音訊；選了記得打開「這是播放音訊」的開關，關掉調給真人講話用的回音消除和噪音抑制，免得它們吃掉你要字幕的聲音。

## Related tools

- [Mic Test](https://bytescope.dev/zh-Hant/mic-test.md) — 上台前先確認一下字幕要聽的這支麥克風正不正常。
- [Subtitle Converter](https://bytescope.dev/zh-Hant/subtitle-converter.md) — 轉換字幕格式（SRT、VTT、ASS、SBV）並修復字元編碼。
- [Screen Recorder](https://bytescope.dev/zh-Hant/screen-recorder.md) — 直接在瀏覽器裡錄下畫面和語音。
