AI Video Transcriber 自架逐字稿工具,抓字幕幾秒出稿

AI Video Transcriber 是開源自架的影片轉錄工具,有原生字幕的內容直接抓字幕,19 分鐘影片只下載約 27KB 就產出逐字稿,沒字幕才動用本機 Whisper,純音樂影片則誠實回報沒有語音。

用 AI 摘要這篇文章:

把它 clone 下來跑完一輪之後,我對 AI Video Transcriber 的判斷很明確:值不值得自架,分界線畫在你的影片來源有沒有原生字幕。有字幕的內容(多數 YouTube 影片),它是一台秒級的文字抽取器,一支 19 分鐘的影片只下載了約 27KB 的字幕檔就產出完整逐字稿;沒有字幕的內容,它就退化成一台跑在你自己 CPU 上的 Whisper 轉錄機,速度回到機器性能的手裡,但資料邊界依然乾淨。這套工具在 GitHub 上有超過 3,200 顆星,採 Apache-2.0 授權,可以商用也可以改作。

它做的事可以用一句話講完:貼上一段影片或播客網址,或者丟一個本機檔案進去,換回逐字稿、摘要,必要時加上翻譯。支援的平台交給 yt-dlp 處理,作者宣稱涵蓋 YouTube、TikTok、Bilibili、Apple Podcasts、SoundCloud 等 30 多個站,我實際只驗了 YouTube 這一條路。真正讓它跟一般「Whisper 套殼工具」拉開距離的,是三個可以逐一驗證的設計:字幕先行、無語音短路、自帶模型邊界。下面依序攤開。

有字幕的影片,轉錄成本近乎零

多數轉錄工具的思路是先下載音訊,再交給語音辨識模型。這套工具把順序倒了過來:先問平台有沒有現成字幕,有就直接抓字幕,完全跳過音訊下載和 Whisper。原始碼裡的優先序也寫得清楚,手動上傳的字幕優先,沒有才用自動生成字幕,直播聊天訊息不算字幕。抓到的 VTT 或 SRT 會被解析成帶時間戳的 Markdown 文稿。

我把 3Blue1Brown 一支 19 分鐘的深度學習教學片丟給它的命令列,整個過程的網路流量只有 26.69KiB(約 27KB),差不多就是字幕檔本身的大小,計時跑完是 3.7 秒。輸出的文稿長這樣:

# Video Transcription

**Detected Language:** en
**Language Probability:** 1.00

## Transcription Content

**[00:04 - 00:05]**

This is a 3.

**[00:06 - 00:10]**

It's sloppily written and rendered at an extremely low resolution of 28x28 pixels,

時間戳、語言偵測、正文分段都是現成的。如果你的工作是把長影片變成可以搜尋、可以引用的文字資料,這個路徑的效率會改變你的習慣:轉一支影片變成貼網址之後幾秒鐘就能收工的事。網頁介面上也會用綠色閃電標籤告訴你這次走的是字幕路徑,青色麥克風標籤則代表落到了 Whisper 路徑。

AI Video Transcriber 自架後的網頁介面,可貼上影片網址或上傳本機檔案並選擇摘要語言Pin
自架後打開瀏覽器就是這個畫面,貼網址或丟檔案都走同一顆轉錄按鈕,介面右上角可切換中英文

沒有字幕的內容,它變回一台本機轉錄機

平台沒字幕的時候,它才會下載音訊,交給 faster-whisper 在本機 CPU 上轉錄,預設模型是 base 等級,採 int8 量化,第一次使用會自動從 HuggingFace 把模型拉下來。作者在 README 給的時間參考是:5 分鐘影片約 2 到 5 分鐘,超過 30 分鐘的內容可能要 15 到 60 分鐘,這是作者提供的參考,我沒有重測長講座的語音轉錄速度,你的體感會取決於機器等級和選的模型大小。模型從 tiny 到 large 都能選,記憶體需求從 150MB 到 3GB 不等,官方建議 4GB 記憶體起步。

本機檔案也走同一條 Whisper 路徑。可以丟 mp3、mp4、wav、flac 等九種格式,單檔上限預設 200MB;純文字檔則直接跳過下載與語音辨識,進文字處理管線,我實測丟一個有內容的 txt 會直接產出文稿,丟空檔案則被程式擋下來報錯,不會裝忙。另外有個保留原片開關,預設打開,會在轉錄的同時以 720p 上限平行下載原始影片,轉完可以直接預覽和存檔,只要文字的話關掉可以省流量和硬碟。

生稿之後還有一道整理

走到這裡拿到的其實是生稿。接下來的管線會對文稿做 AI 優化,作者宣稱包含自動錯字修正、句子補全和智慧分段,讓逐字稿可以直接進入發布或檢索流程,不需要再手動清一次口語的斷裂。再往下一步是條件式翻譯:你選的摘要語言和偵測到的來源語言相同的時候,翻譯整段跳過,語言不一致才會呼叫模型把全文翻成你選的語言,最後產出摘要。整條流程的進度透過伺服器推送事件即時回報到網頁上,跑到哪一步、走的是字幕還是 Whisper 路徑,都看得到。

產出檔案是三份 Markdown:逐字稿、摘要,以及有觸發才有翻譯,每份都能單獨下載,原始影片的播放和存檔也在同一張結果卡上。命令列模式同樣吃這條管線,差別只在沒有瀏覽器:–json 把機器可讀的結果印到標準輸出,進度訊息走錯誤流,方便接腳本;–no-video 只拿文字、–whisper-model 指定模型大小、-l 選摘要語言,這幾個參數我在實測裡都用過,行為跟文件一致。

純音樂的影片不會被編出假逐字稿

這是我整輪測試裡最喜歡的一段。我拿 Big Buck Bunny 這部只有配樂、沒有人說話的 10 分鐘動畫短片去測 Whisper 路徑,整趟跑完包含模型下載只要 15.8 秒,結果不是一堆幻覺句子,而是一個明確的短路訊號:

{
  "source": "https://www.youtube.com/watch?v=aqz-KE-bpKQ",
  "title": "Big Buck Bunny 60fps 4K - Official Blender Foundation Short Film",
  "no_speech": true,
  "detected_language": "en",
  "files": {
    "transcript": "transcript_Big_Buck_Bunny...md"
  }
}

文稿檔裡只留一句英文說明,意思大概是這支影片沒有偵測到語音,逐字稿、摘要與翻譯都無法提供。開發者在原始碼註解裡把動機寫得很白:把空文稿丟給大型語言模型,它會憑空編造一整段對話,翻譯和摘要再把這段虛構內容一路傳下去,使用者看到的就會是一份從來不存在於影片裡的逐字稿。所以管線在源頭就把無語音的內容攔下來,不送 LLM。

這個設計對想把轉錄接進自動化流程的人特別值錢。這個專案除了網頁介面,還附了三個無頭入口:命令列 transcribe.py、讓 Claude Code 或 Codex 當原生工具呼叫的 MCP 伺服器,以及打包好的 agent 技能檔,三個入口共用同一套後端實作,不會各有各的行為。MCP 只登錄一個叫 transcribe_video 的工具,回傳逐字稿、摘要、翻譯、檔案路徑加上 no_speech 旗標,文件也明講 agent 拿到這個旗標應該如實回報沒有語音,而不是硬擠出一段摘要。作者的文件還寫到,在倉庫目錄裡工作時 Claude Code 會自動載入隨附的技能,直接用自然語言叫它轉錄連結就行,想從任何目錄呼叫就把技能資料夾複製到全域位置,這一段我照文件轉述,沒有實際登錄測試。命令列的結束碼也有約定,成功是 0,輸入不合法是 2,下載或轉碼失敗是 1,寫腳本接 cron 不用去解析 log 文字。

文稿不出你的機器,摘要模型自己挑

轉錄段完全在本機跑,那 LLM 段呢?這套工具的答案是自帶模型:打開介面裡的 AI 設定面板,填上任何 OpenAI 相容服務的 API 位址和金鑰,按一下抓取就會列出可用模型讓你選,OpenAI、OpenRouter 或你自己架的本機 LLM 端點都行。金鑰存在瀏覽器的 localStorage,原始碼裡的請求流程是瀏覽器把你填的設定交給你自架的後端,後端再轉給你指定的模型服務。

AI Video Transcriber 的 AI 設定面板,可填入 OpenAI 相容服務的 API 位址金鑰並抓取模型清單Pin
AI 設定面板就是自帶模型的全部儀表,API 位址加金鑰加模型選擇,金鑰只存在瀏覽器 localStorage

翻譯層預設用 gpt-4o 這件事有寫在 README,沒寫的是分層:不指定模型的時候,文稿優化層走 gpt-3.5-turbo,摘要和翻譯層走 gpt-4o。想省錢或想換供應商,就在面板上指定模型,一指定兩層都覆蓋。完全不設金鑰也裝得下去,轉錄照常出稿,只是優化、翻譯和摘要會降級成基本格式,我用無 LLM 模式跑完整流程是成立的。

隱私邊界還有一個預設值要看清楚。用官方啟動腳本起服務、介面裡只填金鑰沒填位址的話,啟動腳本會把請求落到一個預先寫死的中繼端點 oneapi.basevec.com,文稿和金鑰都會經過這個第三方服務轉送到模型。想讓資料只走你自己選的路,就把位址欄明確填上你的服務,或啟動前設好環境變數,這一步做得確實,自帶模型才算真的自帶。

我也把整包原始碼掃過一輪遙測:後端七個模組加前端 JavaScript,找不到任何分析或錯誤回報元件,前端的所有資料請求都打向同一個自架來源,頁面另外只從公開 CDN 載入圖示和 Markdown 渲染兩個靜態函式庫,不帶使用者資料。跟 TransPocket 這類雲端語音轉文字服務比起來,差異就在邊界:雲端服務方便,但音檔和文稿要交給對方的伺服器處理;這裡轉錄在你的機器上完成,要交給雲端的只有你自己選擇的那一段 LLM 呼叫,交給誰由你填的端點決定。

成本也好抓。LLM 段的用量就是逐字稿本身的長度,以我實測那支 19 分鐘影片為例,整份逐字稿落在 25KB 上下的純文字,優化和摘要都繞著這個量級轉,換算成 token 是幾千字的規模;用 OpenRouter 之類的服務挑便宜模型跑摘要,單支影片的成本可以壓到幾毛錢台幣以下。反過來說,長播客一小時的文稿是這個數字的三倍起跳,量大的時候模型選擇會直接反映在帳單上,這也是自帶模型設計實際的好處:換模型不用等作者改程式。

自架前要先接受的幾件事

跟台灣讀者直接相關的是語言:摘要和翻譯的清單有 11 種語言,中文選項是簡體,沒有繁體。逐字稿這端的字形我實測過一段台灣口音,Whisper 給的是繁體,但夾了一個聽錯的字、標點也是半形,正式引用前要自己校一輪;影片本身帶繁體字幕、走字幕路徑的稿面則會留在繁體。Any2Text 實測時也遇過同樣的簡體輸出問題,這是目前多數海外 AI 工具的共同空白。

硬碟則是要自己照顧的。產出的文稿和下載的原片都堆在 temp 目錄,沒有自動清理,原片下載又預設打開,長期使用要定期清,README 有給刪除七天前檔案的指令可以排進 cron。維運面也要看清現實:這是單人專案,issue 的回應週期以月計,外部 PR 幾乎沒有合併,但作者本人的提交持續在走,2026 年 3 月把整個架構改成字幕先行,2026 年 8 月中加入 agent 整合,我查核當天最近一次提交是 2026 年 8 月 24 日。依賴單人開發者的工具,更新節奏要有心理準備。

還有一條要放進長期視角的依賴:平台支援的骨幹是 yt-dlp,YouTube 這類網站改版時,下載和字幕抽取偶爾會失效,這種失效是整個 yt-dlp 生態的日常,並非這個專案獨有。依賴清單把 yt-dlp 鎖在 2024 年 12 月之後的版本,遇到突然抓不到影片,先在虛擬環境裡把 yt-dlp 升級到最新,多數平台類故障會自己好。跑長影片的時候記得用正式模式啟動,關掉熱重載,官方提醒這對半小時以上任務的進度串流穩定性有差。

順帶一提它的商業關係:README 尾段和自架版的頁尾都放了 sipsip.ai 的連結,那是同一位開發者的商業版服務,做每日信件摘要和知識庫,官網自述是用這個開源專案當核心長出來的產品,星數還寫在兩千九,倉庫實際已經破三千二。自架版頁尾那行是靜態文字連結,不是遙測,介意的人改一行前端就能拿掉。授權是 Apache-2.0,商用、修改、再散佈都在條款允許範圍內。

誰該裝,誰先不用急

該裝的人輪廓很清楚:你訂閱或收藏了大量有字幕的長影片,需要把它們變成文字進入筆記或知識庫;你在意文稿不要流進別人的伺服器;你有一點點跑 Python 專案的經驗;或者你想把轉錄接進 agent 流程,no_speech 旗標和 MCP 入口對你真的是生產力。實際的樣貌大概是:做內容的人把訪談和講座轉成逐字稿寫稿引述,上課的人把錄音變成可搜尋的筆記,經營頻道的人拿它生 show notes 草稿,這幾種情境吃的都是字幕路徑的秒級速度。裝的門檻不高,Python 3.8 以上加 FFmpeg 是硬前置,一鍵安裝腳本或 Docker 都有,預設埠 8000,打開瀏覽器介面右上角就能切中文。

先不用急的人:如果你的內容來源以播客或沒有字幕的平台為主,機器又是一般等級,Whisper 路徑的等待時間會磨掉耐心,先考慮雲端服務或算力更足的機器再說;如果你只是偶爾轉一兩支影片,為此自架一套服務也不值得。同樣拿 yt-dlp 當地基的自架專案還有 把 YouTube 和 Bilibili 頻道變成播客的 PigeonPod,走本機 Whisper 路線做完整語音處理的可以看 Voice-Pro 的 Whisper 本機管線,各有各的位置。這一套的位置,就是用字幕先行把有字幕內容的轉錄成本壓到接近零,剩下的邊界,交給你自己決定。

Sliven 褚崇名
Sliven 褚崇名

每日分享科技新知、免費資源以及 WordPress、虛擬主機相關主題,任何問題歡迎在科技月球下方留言,或是發送 Email 至 [email protected] 與我聯繫。

文章: 999

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *


Share to...