Bili2text 開源工具:一行指令把 Bilibili 影片變成逐字稿

Bili2text 是把 Bilibili 影片轉成文字稿的開源命令列工具,貼上 BV 號就自動下載、抽音軌、跑語音辨識,可全程在本機跑。這篇從原始碼與實際安裝拆解它的三種轉寫引擎、Cookie 限制與真實坑點。

用 AI 摘要這篇文章:

想把一支 Bilibili 影片的講話內容變成文字,自己動手要串三段工:找下載器把影片拉下來、用 ffmpeg 抽出音軌、再把音檔餵給語音辨識模型。每一段各自有參數要調,也有各自的地雷,Bilibili 的反爬就是其中最出名的一個;語音辨識那段還有環境成本,本機跑 Whisper 要先裝好幾 GB 的 PyTorch 與模型檔,筆電等級的機器跑起來要有耐心。開源工具 Bili2text 做的事情,就是把這三段工收進一行指令:貼上影片連結或 BV 號,它自己下載、自己抽音軌、自己跑語音辨識,最後交出一份文字稿。專案在 GitHub 上以 MIT 授權釋出,截至 2026-09-04 有 1,882 顆星、242 次 fork、11 位貢獻者,儲存庫自述把它定位成把 Bilibili 影片轉成文字的命令列工具。

Bili2text 的 GitHub 儲存庫頁面截圖,lanbinleo/bili2text 專案顯示 1.9k 星、242 fork、114 次提交、11 位貢獻者,About 側欄為 MIT 授權與 Bilibili 影片轉文字的專案描述Pin
Bili2text 的 GitHub 儲存庫(2026-09-04):1.9k 星、242 fork,MIT 授權,Releases 頁停留在 2023 年初版。

我在 MacBook(Apple Silicon、Python 3.11)上把核心裝起來跑過一輪,也把它 2026 年 4 月改版後的原始碼、說明文件與問題追蹤區翻過一遍。動手前先弄清楚三件事:它到底自動化了什麼、裝之前要準備什麼、真實使用會撞到什麼。至於轉出來的稿子準不準,取決於你選的引擎與模型。

三段管線收進一行指令,下載層是它真正的特化

Bili2text 的核心就是一條轉寫管線,從原始碼看得出分工:下載交給 yt-dlp,輸入可以是 BV 號、完整連結或本機影片檔,多 P 影片能指定集數,下載後合併成 mp4;接著抽出純音軌餵給轉寫引擎;引擎跑完輸出文字稿。實際的指令長這樣:

uv run bili2text tx "https://www.bilibili.com/video/BV1kfDTBXEfu"

想指定引擎和模型就加參數,例如 --provider whisper --model medium;怕模型認錯專有名詞,還可以加 --prompt 塞一段提示詞引導它。輸出位置用 --output 指定,沒指定的話,下載的影片、抽出的音軌與成品稿都收在工作區資料夾(預設 ./.b2t),不會散落在專案根目錄。批次轉寫有 batch 指令,可以把一串 BV 號、連結或本機檔案路徑放進文字檔一次提交,Web 介面的輸入框也支援一次貼多行來源逐條處理。

單看「影片轉文字」這件事,yt-dlp 加 Whisper 自己串也做得到,網路上的教學一搜就是。Bili2text 的加值在兩處:一是把整段流程的參數與錯誤處理包好,指令列只要記一個 tx;二是下載層針對 Bilibili 做了特化處理,這部分是通用工具不會替你做的。

翻下載器的原始碼,會看到兩個針對 Bilibili 的設計。第一是 Cookie 檔支援:程式會優先讀環境變數 B2T_COOKIE_FILE 指定的檔案,沒有就找工作區裡的 cookies.txt,找到就帶著登入狀態去下載。想轉會員專屬或需要登入才能看高清的內容,靠的就是這個機制。

第二個設計更值得注意:它預設停用系統代理、強制直連。作者在原始碼註解裡寫明理由,Bilibili 的 CDN 經常封鎖代理節點,造成 412 錯誤或連線失敗,直連通常反而順;真的需要走代理的環境,可以設 B2T_USE_PROXY=1 環境變數把系統代理開回來。問題追蹤區到 2026 年 7 月都還有人回報 412(Issue #98),而社群提交的「從瀏覽器直接匯入 Cookie」功能(PR #96)目前還沒被併入主線。換句話說,碰到 412 時的正確反應是檢查代理與 Cookie,而不是以為工具壞了。

三個引擎,本機與雲端的分界自己選

轉寫引擎有三個選項,定位差距很大。Whisper 是 OpenAI 開源的語音辨識模型,裝在本機離線跑,多語言通用,代價是要下載模型,電腦要有點算力;模型從 tiny、base、small、medium 到 large 五級,原始碼裡的預設是 small,速度與辨識力的折衷點。SenseVoice 是阿里巴巴開源的本機模型,官方定位強調中文辨識,但它需要你自備本機模型目錄,跑初始化精靈才會設定好。第三個是字節跳動旗下的火山引擎,走雲端 API,官方說法是辨識準確而且推薦使用;走這條路要自己申請帳號、把 API 金鑰填進設定檔,音檔內容會送到這個雲端服務處理。

隱私邊界就落在這條線上:選 Whisper 或 SenseVoice,整條管線除了下載影片那一步,都在你自己的電腦上跑完;選火山引擎,等於多一次資料外送,換官方標榜的辨識品質,送到的服務是你自己開的帳號。原文稿內容敏感的人,這個選擇比任何功能比較都重要。

2026 年 4 月的大改版,讓網路上的舊教學先過期

這是搜到舊資料的人最需要知道的一段。Bili2text 在 2026 年 4 月 10 日整理成 0.3.0 版,整個架構重寫成以命令列為主體:核心程式搬進 src/b2t 目錄,舊的腳本式寫法收進 archive 資料夾,過去那種 pip install -r requirements.txtpython main.py 的安裝路線,對應的檔案已經搬家,舊教學照著敲只會碰壁。

現在的安裝路線改用 uv 這個 Python 套件管理工具,需要 Python 3.10 到 3.12:

git clone https://github.com/lanbinleo/bili2text.git
cd bili2text
uv sync

我在本機實測,核心安裝只拉輕量依賴,幾秒鐘裝完,連 yt-dlp 都是核心的一部分。轉寫引擎和介面用分層安裝自選,例如要 Whisper 加 Web 介面就是 uv sync --extra whisper --extra web。這個設計的好處是不會一開始就拉兩個 GB 的 PyTorch,先裝核心試手感,確定要用了再補引擎。

裝完跑 bili2text --help,會看到八個指令:轉寫、批次、環境檢查、初始化設定、Web 介面、服務模式、桌面視窗、切換語言,大多有縮寫。第一次使用建議先跑 bili2text init,組態精靈用方向鍵加勾選的操作方式,讓你一次勾多個引擎與功能,只針對勾選的項目逐一問設定,最後直接生成並執行對應的 uv sync --extra 安裝指令,新手不用自己查文件拼湊指令。接著跑 bili2text doctor,它會逐項打勾打叉告訴你缺什麼;我在只裝核心的機器上跑,它正確報出 yt-dlp 與 ffmpeg 已就緒、三個轉寫引擎都還沒裝,該補什麼一目了然。介面本身有中英文兩套語系,用 bili2text language 隨時切換。

不打指令也有介面,但它仍然是本機工具

不想碰終端機的人有兩個替代入口。bili2text ui 會在本機 8000 連接埠起一個 Web 介面,瀏覽器開起來是一張表單:貼 BV 號、下拉選引擎、填模型名稱、按開始。我在本機把它裝起來實際啟動過,表單與影片庫都正常運作。

bili2text 的 Web 介面截圖,本機 127.0.0.1:8000 啟動的開始轉寫表單,含 BV 號輸入框、whisper 引擎下拉選單、small 模型欄與紫藍色開始按鈕,下方為計數歸零的 Videos 影片庫卡片Pin
bili2text 的 Web 介面:貼上 BV 號、選引擎、按開始就能轉寫,影片庫計數在下方。此為本機實際啟動畫面。

介面好看歸好看,定位要講清楚:這是跑在你自己電腦上的本機工具,README 也明言目前沒有對 Docker 或長時間對外服務做優化,建議先當本機自用。桌面上大量轉寫、或想開給區域網路內其他機器用的 server 模式存在,但同一句提醒適用。

!bili2text 的 Web 介面:貼上 BV 號、選引擎、按開始就能轉寫,影片庫計數在下方

!Bili2text 的 GitHub 儲存庫頁面,1.9k 星、242 fork,114 次提交與 11 位貢獻者

還開著的坑:SenseVoice 缺件、Intel Mac 裝不了、主線暫停合併

問題追蹤區能看出一個開源專案真實的樣貌。目前還開著的 Issue 裡,有幾個直接影響選擇:SenseVoice 引擎的官方模型檔沒辦法開箱即用,模型缺件與參數問題有一筆回報(Issue #101),社群跟著提了修復 PR(#102)但尚未併入,想走這條路要有自己補模型檔的心理準備;Intel Mac 裝不了 Whisper 引擎,因為它依賴的 PyTorch 已經不支援這個平台(Issue #95),Apple Silicon 沒有這個問題;轉寫本機檔案時,在更新索引階段有回報過崩潰的案例(Issue #100)。

專案節奏也值得知道:主分支最後一次合併停在 2026 年 6 月 16 日,之後社群提交的四個功能(小米 MiMo 雲端引擎、Apple Silicon MPS 加速、瀏覽器 Cookie 匯入、進度串流)都還掛著沒進主線。這不代表專案死了,Issue 討論到 2026 年 8 月都還有新回報,但代表你在別處看到的「即將支援」功能,要自己確認進主線了沒。GitHub 的 Releases 頁也只停在 2023 年的初版,新版號只反映在程式自己的 --version,我實測回報 0.3.0。星星是真的、社群是活的,但發布紀律是鬆的,安裝時以儲存庫主分支為準,不要等打包版。

最少阻力的路徑很明確:Apple Silicon 的 Mac、Whisper 引擎、走 uv 安裝。

拿它做什麼:筆記、字幕草稿與訪談語料

這類工具的典型用途有三塊。把一小時的教學影片或演講變成可搜尋的筆記,事後找「某句話到底怎麼講的」比拖時間軸快得多;幫自己的影片打字幕草稿,機器轉完再人工校,比從零打字省力;做質性研究的人把訪談音檔批次轉成語料。學語言的人也有專屬用法:把只有字幕沒有講稿的教學影片轉成逐字稿,對照聽力練習,比反覆暫停抄寫順。Bilibili 上的內容特別適合第一種,長篇教學、技術分享與課程錄影的密度高,語速快、術語多,轉成文字後價值會留下來,也更容易翻譯或摘要。要提醒的是逐字稿連口誤、語助詞都會忠實留下,直接當文章用之前要再整理一輪。

如果你要轉的影片不只在 Bilibili,先前介紹過的 AI 影片轉文字工具AI Podcast 轉錄工具 走的是線上服務路線,免裝環境、按分鐘數計價,偶爾轉一支影片反而省事。反過來說,已經有一堆本機影片檔想找出「哪一支講過某個概念」,EditMind 這類本機影片搜尋工具 解決的是找片問題,與轉文字互補。常駐 Bilibili 的人,Bilibili Cleaner 瀏覽器擴充功能 清版面干擾,和這篇的工具剛好一個在瀏覽端、一個在下載端。

環境需求前面提過:Python 3.10 到 3.12、uv、ffmpeg(doctor 會幫你查,macOS 用 Homebrew 裝即可)。流程上建議的順序是裝核心、跑 bili2text init 讓精靈帶你選語言與引擎、再依它給的指令補裝 extras、跑 doctor 確認全綠。還不想碰 Bilibili 下載時,可以先拿本機影片檔練手感,uv run bili2text tx ./my-video.mp4 對本地檔案一樣走抽音軌與轉寫,介面與輸出完全相同。需要登入內容或碰到 412 時,把瀏覽器裡 Bilibili 的 Cookie 匯出成 cookies.txt 放進工作區,或設 B2T_COOKIE_FILE 環境變數指過去,這也是轉高解析度與會員專屬內容的鑰匙。

最後是一條工具幫不了你的線:版權與平台規則。README 的使用須知寫得直接,使用時要遵守所在地的版權法律與平台規則,確認自己有權下載與轉寫該內容,開發者不對非法使用負責。轉自己上傳的影片、取得授權的內容、明確標示可下載的素材,這些沒有灰色空間;把別人的付費課程整批轉成文字稿另作他用,風險全在使用者自己身上。工具是 MIT 授權的自由軟體,自由的是程式,內容的權利歸內容的權利人。

回到開頭的對比:自己串三段工當然可行,Bili2text 把它收成一行指令的同時,也把 Bilibili 特有的反爬對策、引擎選擇與環境檢查一併收好。對有終端機習慣、定期要把 Bilibili 內容變成文字的人,這是個值得放進工具箱的選擇;偶爾轉一支影片的人,線上服務的門檻低得多。

Sliven 褚崇名
Sliven 褚崇名

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

文章: 1108

發佈留言

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


Share to...