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。切成三段,就是付三倍。
我們自己寫在提交紀錄裡的設計理由,被自己的量測推翻了。最終版本反過來:先樂觀地一次要整支影片,只在輸出真的中斷時,才對缺掉的範圍補跑。成本降到原本的三分之一。
模型會擺爛,而且方式很具體
兩個現場故事。
要求一支長影片的最後一段,模型有時回來的東西根本不是 SRT——道歉、描述影片、就是不給字幕。修法是重試一次,把格式要求講得更兇:「不要解釋、不要道歉,從 1 那一行開始輸出。」就好了。
一次要整支影片,它給了 28 分鐘 60 個字幕塊——平均每個 29 秒。文字都對,摘要完全不受影響,但當即時字幕完全不能用:一大段字掛在畫面上半分鐘。加一句「每個字幕塊最多 8 秒」,變成 207 個,平均 8.3 秒。多花的錢?約 0.01 美金。
誠實的價格標
一支半小時、完全沒有字幕的影片,用你自己的 Gemini 金鑰轉錄一次,大約 0.05 美金(目前這個功能在 Google 那邊還是預覽階段,實際免費)。
這個功能預設關閉。它會花你自己的 AI 額度,所以它是一個你自己打開的開關——設定 > 沒有字幕的影片——而且轉錄進行時,進度提示會明說它正在做什麼。我們不代墊成本,也不隱藏成本,從第一天就是這樣。
那篇破萬貼文的最後一句是「我們破兩萬的時候再見」。兌現了。「覆蓋沒有 CC 字幕的影片」,現在也兌現了。
DeepSRT 一次購買、沒有訂閱,Mac App Store 下載。