ByteScope

Video Subtitles

本機 Whisper 或 Chrome 內建的 Gemini Nano 把錄音轉成 SRT 或 VTT,還能出雙語字幕,檔案不會離開這個分頁。

檔案不會離開你的瀏覽器 — 全部在本機處理。

把影片或音訊丟進來。Chrome 內建的 Gemini Nano 在這個分頁轉成字幕,檔案不會上傳。

這台電腦第一次用,可能會下載本機 Nano 模型(常常好幾 GB)。下載的是模型,不是你的錄音。下面的進度是瀏覽器自己的 `downloadprogress`,不是我們估的。

把影片或音訊檔拖到這裡

mp4、webm、mov、mp3、wav、m4a — 或點一下選檔

語音辨識
比較所有模型

辨識完再把每個字對上聲音,字幕的開始和結束會剛好落在講話的地方。預設關閉,第一次用要先下載對齊模型。

翻譯
比較所有模型

瀏覽器對照表

轉寫靠 Chrome 的 Prompt API 吃音訊。Firefox 跟 Safari 沒這套。Edge 雖是 Chromium,這一欄只寫實際測過的。

功能ChromeEdgeFirefoxSafari
Prompt API(`LanguageModel`)網頁版 Prompt API 從 Chrome 148 起。138 只給擴充功能。Edge 這邊沒測過。✓可以◐部分/未測✗不行✗不行
音訊多模態 prompt需要 `expectedInputs: [{ type: "audio" }]`。API 從 Chrome 148 起就有。這台機器仍可能因硬體或模型還沒下載而顯示 unavailable;若是這樣,沒有 Whisper 後路。Edge 這邊沒測過。✓可以◐部分/未測✗不行✗不行
在分頁裡解音訊AudioContext / OfflineAudioContext。只在 Window 有,解碼本身進不了 worker;混單聲道跟重取樣才在 worker 跑。✓可以✓可以✓可以✓可以
翻譯模型可選。Chrome 內建翻譯器、Gemini Nano,或另外下載的模型。預設不翻譯。◐部分/未測◐部分/未測✗不行✗不行
用 Chrome 語音辨識處理檔案把檔案即時播放一遍邊聽邊辨識,檔案多長就要等多久。只在有 SpeechRecognition.start(track) 的版本確認可用(Chrome 135+)。◐部分/未測◐部分/未測✗不行✗不行

現在這個瀏覽器

  • LanguageModel …
  • LanguageModel audio …
  • AudioContext.decodeAudioData …

關於這個工具

課堂或會議錄音,不該非丟到雲端語音服務不可。把影片或音訊丟進來,就由你挑的語音辨識引擎在這個分頁轉寫:Whisper 模型——base、small、large(v3-turbo)三種,下載一次存在瀏覽器裡、用 WebGPU 在你的顯示卡上跑——或者 Chrome 內建的 Gemini Nano(走 Prompt API),不用從我們這裡下載任何東西。另一個獨立的選擇器負責翻譯——Hy-MT2(下載一次、用 WebGPU 在顯示卡上跑)、Chrome 內建的 Translator 或 Gemini Nano,全都在裝置上跑——所以同一趟就能出雙語字幕。輸出 SRT、VTT 或純文字,下載前可以用小表微調時間。隔壁是 Subtitle Converter 跟 Subtitle Sync,分別管格式跟整份平移。

模型

語音辨識:Whisper base(小又快,沒有 WebGPU 用 CPU 也能跑)、Whisper small(一般的折衷)、Whisper large v3 turbo(有可用的顯示卡時,英文、中文、日文檔案通常推薦它)、Qwen3-ASR 0.6B(沒有 GPU 時通常推薦它)、Qwen3-ASR 1.7B(比較大的那個 Qwen3-ASR)、Confucius4-R2T2(簡稱 R2T2,在 GPU 上邊辨識邊逐字串流出來的模型)、Gemini Nano(Chrome 內建,不用跟我們下載)、Chrome Speech Recognition(Web Speech:只能用播放速度聽,沒裝本機語言包時音訊會送到 Google)。精準時間戳:Qwen3-ForcedAligner 0.6B——選配、預設關閉、約 1.85 GB,把轉好的逐字稿逐字或逐個字元對回音訊。翻譯:Hy-MT2 1.8B(Tencent Hunyuan-MT 2,在你的 GPU 上跑,有可用顯示卡時就是預設)、Chrome Translator(內建,沒有 GPU 時的預設)、Gemini Nano。全部在瀏覽器裡跑:Whisper、Qwen3-ASR、R2T2、Hy-MT2 和 ForcedAligner 都是透過 WebGPU 在你的顯示卡上跑,「通用 GPU」版照顧沒有 shader-f16 的舊卡(例如 GTX 10 系列),「快速 GPU」版在顯示卡支援時改用 f16,沒有可用的 GPU 時,Whisper、Qwen3-ASR 和 ForcedAligner 會退回 CPU(WebAssembly,慢一些),R2T2 還是只建議在 GPU 上跑,翻譯則從 Hy-MT2 改成 Chrome Translator。下載一次,所有 ByteScope 工具共用。

模型該選哪個

處理檔案的話,英文、中文、日文的推薦模型是照我們實測的準確度排的:有能用的顯示卡通常是 Whisper large(v3-turbo),沒有的話通常是 Qwen3-ASR 0.6B;一樣準的話,已經下載好的優先。下載好的模型會用這台電腦跑得動的最快速度把整份錄音處理完,下載一次所有 ByteScope 工具共用;Whisper 三種大小是速度和準確度的取捨——base 小而快,沒有 WebGPU 也能用 CPU 跑(慢);small 是中間的選擇;large(v3-turbo)最重,有顯示卡時也比 base 和 small 更準。Gemini Nano 只要你的 Chrome 有提供就不用下載,會把音訊切成 30 秒一段餵給模型。Chrome 內建的語音辨識也在清單裡,但卡片上會老實寫:它只能照播放速度聽,一小時的影片就要一小時,而且預設模式會把音訊送到 Google 的伺服器。任何下載都會先問過你——這台電腦還沒有的模型,會先顯示大小、剩餘空間、你是不是在行動網路上,你按了才開始;下載、驗證、載入記憶體、暖機各自有進度;「測試速度」會拿一段內建的短音訊跑一次,讓頁面估給你看一小時的音訊在這台大概要多久。推薦的選項會標出來並附一行理由;你自己改過的選擇會記住。不管選哪個模型,打開「精準時間軸」(預設關閉)就會再用第二個本機模型 Qwen3-ForcedAligner 0.6B 把轉出來的文字對回音訊:英文逐字、中文和日文逐個字對齊,每句字幕都從真正開口的地方開始、講完就結束,超過 6 秒左右的字幕會在字詞邊界切開。它要多下載一次大約 1.85 GB(跟其他模型一樣會先問你),有顯示卡就用顯示卡跑,沒有就用 CPU、慢很多。中文、英文、日文完整支援,幾種歐洲語言部分支援,韓文不支援;對不上音訊的句子會保留語音模型原本的時間。

聲音怎麼進模型

音軌用 AudioContext / OfflineAudioContext 解開。Web Audio 只存在於 Window,這一步出不了主執行緒(不過編解碼是瀏覽器自己的執行緒在跑。解碼會要求 16 kHz;建不出這個取樣率的 context 時,就由 worker 重取樣。一個容器只解第一條音軌)。混成單聲道跟重取樣則在 worker。之後把音訊一段一段餵給引擎,避免長檔把上下文塞滿。Whisper 的下載進度是這一頁自己量的;Gemini Nano 在這台電腦第一次用時可能會下載本機模型(常常好幾 GB),那邊看到的進度是瀏覽器自己的 downloadprogress,不是我們轉的圈。把字幕燒進畫面不在 v1:那要拖 ffmpeg.wasm,這批先不驗證那個需求。

雙語字幕

把翻譯選擇器設成一個目標語言,轉寫完的每一句就會在裝置上翻譯,然後寫成雙語的 SRT 或 VTT——原文在上或譯文在上,你自己選——也可以只出譯文。Hy-MT2 是 1.8B 的模型,下載一次(約 1.3 GB)之後用 WebGPU 在你的顯示卡上跑,電腦有可用的 GPU 就推薦它——我們盲測比較下來它比較準;Chrome 的 Translator 每個語言配對下載一個小語言包,是快的那個,也是沒有可用 GPU 時的預設;Gemini Nano 是比較大的內建模型,每句比較慢。選擇器留在「不翻譯」,整條翻譯管線就不會啟動。

做不到的事

Whisper 只要有 WebGPU 或 WebAssembly 就能跑,所以轉寫本身不綁 Chrome;Gemini Nano、Chrome 內建的語音辨識和兩個內建的翻譯引擎都只有 Chrome 才有,Firefox 跟 Safari 沒有;翻譯用的 Hy-MT2 跟 Whisper 一樣,有 WebGPU 的瀏覽器都能跑。Edge 雖是 Chromium,這一頁只寫實際跑過的。Nano 還要模型肯跑的硬體;unavailable 是常態,不是 bug,也沒有雲端後路——唯一的例外是 Chrome 內建語音辨識的預設模式,它本來就是雲端服務,卡片上也這樣寫。轉寫品質就是你選的模型在那一段上的表現——漏句、時間飄了,在表裡改;每一句都晚同樣長度,再拿去 Subtitle Sync。

常見問題

影片或音訊會上傳嗎?

不會——只有一個標明的例外。解碼、切段、Whisper 或 Prompt API 的呼叫都在這個分頁跑。會連網的只有這台機器第一次抓模型的時候,你的錄音不會附在那些請求上。例外是 Chrome 內建語音辨識的預設模式,它會把音訊送到 Google 的伺服器;卡片上有這個徽章,選 Whisper 或 Gemini Nano 就完全避開。

模型該選哪一個?

英文、中文、日文,選標著推薦的那個就對了。有能用的顯示卡時通常是 Whisper large(v3-turbo);沒有的話通常是 Qwen3-ASR 0.6B,不過日文如果已經下載了 Qwen3-ASR 1.7B,就會先推薦它。要是有幾個模型實測一樣準,頁面會挑這台電腦已經有的那個——這是省你一次下載,不代表它比其他打平的模型更準。其他語言選 Whisper small:下載一次、在顯示卡上跑、很多語言都準。這台電腦沒有 WebGPU,或檔案很短只想快點拿到結果,選 Whisper base;它也能用 CPU 跑,只是慢。準確度比時間重要,選 Whisper large(v3-turbo)——下載最大、跑最慢。不想下載任何東西而且你的 Chrome 有提供,選 Gemini Nano。Chrome 內建的語音辨識除非檔案很短否則跳過:它照播放速度聽,一小時就是一小時,預設模式還會上傳音訊。拿不定主意就按卡片上的「測試速度」:頁面會拿一段內建的短音訊跑一次,告訴你一小時的音訊在這台電腦大概要多久。

哪些瀏覽器真的轉寫得出來?

Whisper 在任何有 WebGPU 的瀏覽器都能轉寫,Whisper base 沒有 WebGPU 時也能透過 WebAssembly 用 CPU 跑。Gemini Nano 要有 Prompt API 而且吃得了音訊的 Chrome;Firefox 跟 Safari 跑不了,Edge 可能因為是 Chromium 而能用,但對照表在有人實測前標未測。翻譯引擎裡,Chrome 的 Translator 和 Gemini Nano 也一樣只有 Chrome 才有;Hy-MT2 下載一次就在顯示卡上跑,有 WebGPU 的瀏覽器都能翻。就算這個瀏覽器跑不了,說明跟表還是會在。

為什麼第一次會下載好大一包?

那是模型,不是你的檔。Whisper 模型會在你看過大小、按下下載之後從模型託管站抓一次,存在瀏覽器裡、所有 ByteScope 工具共用;「管理已下載的模型」看得到也刪得掉。Gemini Nano 則是 Chrome 自己抓(常常好幾 GB,磁碟跟顯示卡/記憶體也有門檻),百分比來自 LanguageModel.create({ monitor }) 的 downloadprogress。之後可以離線轉寫。

能把字幕燒進影片嗎?

這個版本不行。下載 SRT 或 VTT,在剪輯軟體裡疊上去。燒進去要 ffmpeg.wasm,這批刻意沒帶。

時間不準,或少了一句,怎麼辦?

在表裡改。這些模型都不是工作室級 ASR,分段可能飄或漏行,Whisper 越大通常漏得越少。每一句都晚一樣多,拿到 Subtitle Sync 做平移。要 ASS 或 SBV,去 Subtitle Converter。

能標出是誰在講話嗎?

有實驗性的做法。轉寫完成之後按「分辨說話者」,就會依每個人的聲音把每一句分成「說話者 1、2、3…」;人數可以留自動,也可以指定 2–10 人。幫某個說話者改一次名字,他的每一句都會跟著改。匯出時勾「標出說話者」,SRT 會在每句前面加 [名字] ,WebVTT 用 <v 名字> 的 voice 標籤,TXT 會把連續同一個人講的句子歸在名字底下;沒勾的話檔案跟以前一模一樣。它只會把聲音分組,不會認出任何人是誰;兩個模型都在這個瀏覽器裡跑,這一步不會把音訊送到任何地方。第一次要下載 31 MB 的模型(pyannote segmentation-3.0,MIT 授權;WeSpeaker ResNet34-LM,CC BY 4.0),之後留在瀏覽器裡。有 WebGPU 的話一小時音訊幾分鐘就好,沒有就改用 CPU,每 10 分鐘音訊大約要等 6 分鐘。準確度要老實講:用公開的測試錄音試下來,有 9–26% 的說話時間沒被標出來或標錯人。真實會議裡大家搶著講話的段落佔了錯誤的 40–46%,「嗯」「對」這種很短的回應大多會錯,而猜錯人數影響最大——有一段錄音只因為把兩個人併成一個,錯誤率就從 13% 跳到 39%。自己指定人數也不一定比較好,因為它一樣可能把真的兩個人併在一起。中文很短、輪得很快的對話比較容易漏掉;日文目前只用合成的對話測過。