← 開發筆記

沒有字幕的影片,也能看懂了

2026 年 8 月 7 日 · DeepSRT 開發筆記

一年半前許下的承諾,用一個當時不存在的方法兌現。

2025 年 3 月,DeepSRT 使用者破萬的那篇貼文裡,我們寫了這句話:

也會教大家如何結合 whisper 更方便地做出自己喜歡的字幕,進而完整覆蓋那些沒有提供 CC 字幕的影片。

這句話躺了快一年半。1.3.0 把它兌現了——但用的不是 whisper。

當年的答案是 whisper,為什麼最後不是

語音辨識從來不是難點,難的是拿到音訊。DeepSRT 的影片跑在 YouTube 官方播放器裡,而那個播放器的音訊,沒有任何 API 可以接出來。剩下的路都是死路:

抓系統音訊?要螢幕錄製權限——為了一個使用者沒有要求的功能,彈出 macOS 最嚇人的授權對話框。下載音訊串流?我們公開承諾過 DeepSRT 不是下載器,不下載、不轉換、不儲存任何影音。為了一個功能打破架構的底線,不值得。

所以 whisper 這條路的問題,從來不是辨識能力,是拿不到音訊,而我們不願意用骯髒的方式拿

答案簡單得有點掃興

Gemini 可以直接接受一個公開的 YouTube 網址,當成影片輸入。

就這樣。App 把網址交出去,模型自己去看影片,回來一份帶時間戳的逐字稿。不下載、不轉換、不儲存——跟「沒有伺服器」的架構完全一致,用的還是你自己的金鑰。

量測改寫了設計,兩次

第一次量測:對同一支影片,只要摘要花 19,393 個 input token,要完整逐字稿花 19,431 個——幾乎一模一樣。影片的攝取是固定成本,你問什麼都一樣。結論很清楚:絕不能為了摘要和逐字稿各打一次影片呼叫,那是付兩次錢買同一支影片。

於是我們把長影片切成十分鐘的視窗,求穩、求漸進顯示。然後第二次量測來了:每個視窗都會重新攝取整支影片。對一支 28 分鐘的影片只要求最後 8 分鐘,帳單仍然是全片的 156,762 個 token。切成三段,就是付三倍。

我們自己寫在提交紀錄裡的設計理由,被自己的量測推翻了。最終版本反過來:先樂觀地一次要整支影片,只在輸出真的中斷時,才對缺掉的範圍補跑。成本降到原本的三分之一。

攝取才貴,輸出很便宜。涵蓋率是用攝取次數買的,粒度是用輸出 token 買的——前者要省,後者幾乎免費。

模型會擺爛,而且方式很具體

兩個現場故事。

要求一支長影片的最後一段,模型有時回來的東西根本不是 SRT——道歉、描述影片、就是不給字幕。修法是重試一次,把格式要求講得更兇:「不要解釋、不要道歉,從 1 那一行開始輸出。」就好了。

一次要整支影片,它給了 28 分鐘 60 個字幕塊——平均每個 29 秒。文字都對,摘要完全不受影響,但當即時字幕完全不能用:一大段字掛在畫面上半分鐘。加一句「每個字幕塊最多 8 秒」,變成 207 個,平均 8.3 秒。多花的錢?約 0.01 美金。

誠實的價格標

一支半小時、完全沒有字幕的影片,用你自己的 Gemini 金鑰轉錄一次,大約 0.05 美金(目前這個功能在 Google 那邊還是預覽階段,實際免費)。

這個功能預設關閉。它會花你自己的 AI 額度,所以它是一個你自己打開的開關——設定 > 沒有字幕的影片——而且轉錄進行時,進度提示會明說它正在做什麼。我們不代墊成本,也不隱藏成本,從第一天就是這樣。

那篇破萬貼文的最後一句是「我們破兩萬的時候再見」。兌現了。「覆蓋沒有 CC 字幕的影片」,現在也兌現了。

1.3.0 已在 Mac App Store 上架。這一版同時帶來介面語言設定、繁體中文拆分為台灣與香港,以及 AI agent 的逐字稿快取——同一支影片問兩次,只付一次錢。

DeepSRT 一次購買、沒有訂閱,Mac App Store 下載