Communitygithub.com

swei99386-alt/video-to-text-skill

一鍵將影片/音訊轉成文字稿。字幕優先策略、GPU 加速聽譯(約 18 倍即時)。適合 5G 顯卡環境。

video-to-text-skill 是什麼?

這個技能專為 AI 代理設計,提供一個自動化且高效的管道,能將來自 X(Twitter)、YouTube、Bilibili 或其他來源的影片/音訊內容轉換為文字稿。其核心策略是「字幕優先」:腳本會先嘗試從原始連結擷取現成的字幕(例如 YouTube 的自動字幕或 X 上的字幕),這是最快且資源消耗最低的方法。只有當找不到字幕時,才會觸發 GPU 加速的語音辨識(聽譯),使用本機的 NVIDIA GTX 1060(5GB 顯卡)達到約 18 倍即時速度。對於無法直接下載的內容(如微信影音號或付費加密影片),技能也提供了螢幕錄音方案。此技能適用於 Claude Code、Cursor 或 Codex 等代理工具,透過明確的腳本和指令(grab.py, record.py)簡化工作流程,並包含錯誤處理與診斷指令(如檢查 CUDA 狀態)。使用者需注意,聽譯的準確度不如原生字幕,尤其是中文部分目前使用小型模型。技能文件強烈建議遵循指定的步驟順序,以確保效率和正確性。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add swei99386-alt/video-to-text-skill

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

把影片/音訊裡「說出來的話」變成文字稿。這裡有踩過血坑的固定套路,嚴格按順序走,別自作聰明繞過第 0 步。

鐵律(這條最重要,先記住)

永遠先找「現成字幕」,實在沒有才動用「聽譯」。 絕大多數正經演講、大會、播客都會傳到 YouTube,而 YouTube 幾乎都自帶字幕——一條命令幾秒鐘扒下來,免費、不下整段影片、不佔顯示卡。 今天就是沒走這條近路,傻乎乎地把 450MB 影片下下來、用處理器硬跑半小時聽譯,還跑出一堆錯字。這個坑不許再踩。

第 0 步 拿到連結先分清楚兩件事,再決定順序

轉文字(要這段話的文字稿)和查來頭(誰講的、原版哪天講的、是不是完整版)是兩碼事,別捆一起。舊版無腦「看到 X 就先跑 YouTube」是錯的——X 自己也常自帶字幕,那趟 YouTube 白跑。

轉文字:永遠先就近探手上這條連結,不必預設繞 YouTube。

  1. 直接跑 grab.py——腳本會先扒該連結自帶的字幕(X 常有 en/es 等字幕),扒到就收工,這是最快的近路。
  2. 只有下面兩種才值得繞去 YouTube 找原版:
    • X 上壓根沒字幕(YouTube 那邊多半有);
    • X 上是剪輯片段——文案在講一個更長的影片、但 X 段子只有一兩分鐘(扒它只得一小截,要全片才去找原版)。 繞法:搜「演講者 + 主題/標題 + 活動名」找到 YouTube 原版,用它進第 1 步。

時長就是照妖鏡: 先 yt-dlp --no-download --print "%(duration_string)s" 看一眼。X 段子跟文案吹的差不多長(說「28 分鐘」、就是 27 分)= 完整搬運,直接扒;短一大截 = 剪輯片段,得去找原版。

查來頭(誰/哪天講的/是否完整)是另一碼事,只有用戶開口問才做,不是轉文字的必經步驟。 而且夠用就停:查到能回答用戶的資訊即可,別追精確日期、官方原版這種用戶沒要求的精度反覆搜(2026-07-22 踩過這坑)。

第 1 步 一鍵跑腳本(它自己判斷走字幕還是聽譯)

python "C:/Users/Administrator/.claude/skills/影片轉文字/scripts/grab.py" "<連結或本地檔案>" "輸出資料夾名稱" [語言]

第三個參數【語言】可選:中文影片傳 zh(會強制中文+繁體輸出)、英文傳 en、不傳則自動判斷。 腳本內部邏輯(已寫死):

  • 先扒現成字幕 → 成功就秒出 完整文字稿.txt,收工。
  • 扒不到字幕 → 才自動摳聲音、用顯示卡(GPU)跑聽譯(不是處理器)。
  • 產物統一落到桌面 <輸出資料夾名稱> 裡:完整文字稿.txt(乾淨純文字)+ 原始字幕/字幕檔案。

跑完把 完整文字稿.txt 的位置和詞數報給用戶即可。

嗶哩嗶哩 / 國內網站(和 YouTube 不一樣,單獨記)

  • 能下載:下載工具支援嗶哩嗶哩(B 站)、以及不少國內站,抓影片/聲音這步沒問題。
  • 但「扒現成字幕」這條免費近路基本指望不上:B 站沒有 YouTube 那種全站機器字幕,只有少數 UP 主手傳了 CC 字幕才扒得到。彈幕不是字幕(彈幕是觀眾飄屏評論,不是台詞),別去扒彈幕。
  • 所以 B 站影片絕大多數直接走「顯示卡聽譯」。中文影片記得把第三個參數傳 zh:
    python ".../grab.py" "<B站連結>" "輸出資料夾名稱" zh
    
  • 中文精度提醒:現在用的是小號(small)模型,認中文只能「聽個大概」,容易有錯別字。要更準需換中號(medium)模型(約 1.5G,一次性下載,當前未裝)。用戶 2026-07-21 選了「先用小號將就」、要更準時再裝 medium 並把腳本 --model small 改成 medium。
  • 登入:B 站會員專享/高清/需登入的影片,下載時要帳號 cookie。遇到先問用戶,別擅自動帳號。

抓不到連結的影片(微信影片號 / 付費加密頁 / 任何只能在螢幕上播的)→ 錄螢幕聲音

下載工具夠不著這類影片(影片號關在 App 裡、付費頁有加密)。唯一通用辦法:邊播邊錄電腦正在響的聲音,再轉文字。本機已裝好內錄能力(soundcard 庫,不用驅動/不用點設定)。

三步走:

  1. 開錄(背景跑,錄到你停它為止):
    python "C:/Users/Administrator/.claude/skills/影片轉文字/scripts/record.py" "輸出資料夾名稱"
    
  2. 把影片從頭播到尾(即時錄,3 小時的影片就得播 3 小時,快進不了)。
  3. 停掉錄製程序(智能體停背景任務 = 硬停,沒關係),然後直接把 錄音.pcm 餵給 grab.py 轉文字(它認得 pcm,中文加 zh):
    python "C:/Users/Administrator/.claude/skills/影片轉文字/scripts/grab.py" "<桌面路徑>/<資料夾>/錄音.pcm" "<資料夾>" zh
    
  • 邊錄邊寫磁碟,中途被強殺也不整段丟(pcm 一直在,不依賴任何「收尾」步驟)。
  • 能拿到連結就別用錄的:下載幾分鐘搞定,錄得即時等滿全程。錄螢幕只留給真抓不到連結的。

第 2 步 只有聽譯時才需要關心的事

  • 必須走顯示卡:這台機器有 NVIDIA GTX 1060(5G 顯示記憶體),腳本會自動優先用它。若某天日誌裡顯示「處理器(CPU)」,說明「會用顯示卡的 torch」又被換回 CPU 版了,按下面【顯示卡地基】一節修。
  • 時長很長(>20 分鐘)、跑起來慢是正常的,但用顯示卡應是分鐘級;若慢得像半小時那必是掉回 CPU 了。
  • 聽譯難免有錯字/漏詞,是「聽個大概」,精度不如原生字幕。能扒到字幕就別聽譯。

顯示卡地基(聽譯要靠它,壞了照這修)

聽譯用顯示卡的前提是裝了「會用顯示卡」版的 torch。自檢:

C:/Users/Administrator/portable-python311/runtime/python.exe -c "import torch;print(torch.__version__, torch.cuda.is_available())"
  • 顯示 ...+cu126 True = 正常,能用顯示卡。
  • 顯示 ...+cpu False = 掉回只用處理器了,重裝:
C:/Users/Administrator/portable-python311/runtime/python.exe -m pip install --force-reinstall torch==2.11.0 --index-url https://download.pytorch.org/whl/cu126

(driver CUDA 12.6 → 用 cu126 源。這塊 5G 顯示卡夠跑語音辨識/OCR/中小模型;要 8G 顯示記憶體起步的大模型帶不動。)

常用手動命令(腳本之外,備查)

  • 只看有哪些字幕語言: yt-dlp --no-download --list-subs "<url>"
  • 只扒英文字幕不下影片: yt-dlp --skip-download --write-auto-subs --sub-langs "en-orig,en.*" --convert-subs srt -o "%(title)s.%(ext)s" "<url>"
  • 核對時長/發布日: yt-dlp --no-download --print "%(title)s | %(duration_string)s | %(upload_date)s" "<url>"

相關技能