podcast2md — 播客單集連結 → 章節文字稿
定位
- 輸入:yt-dlp 支援的播客單集頁面或音訊直鏈
- 輸出:
<out-dir>\<slug>\chapters.md——完整轉錄稿按節目已有章節切分;非摘要、不發明內容
- 引擎:本機 CapsWriter-Offline(fun_asr_nano),腳本自動拉起 server/client
執行(用部署副本,必須與 start_server.exe 同目錄)
python "D:\iStall\CapsWriter-Offline\podcast2md.py" "單集URL"
python "D:\iStall\CapsWriter-Offline\podcast2md.py" "單集URL" --transcribe-timeout 10800
- 源倉庫:
D:\iStall\podcast2md\(podcast2md.py + README.md + PODCAST2MD.md)。改腳本只改倉庫版,改完複製到 D:\iStall\CapsWriter-Offline\ 部署。
- 完整參數表、流水線細節、退出碼:按需讀
D:\iStall\podcast2md\PODCAST2MD.md,不要預設整讀。
關鍵參數
| 參數 | 預設 | 說明 |
|---|
--out-dir | <腳本目錄>\work | 成品在 work\<slug>\chapters.md |
--force | 關 | 刪除已有單集目錄重跑;會丟手動修改 |
--polish | off | basic 只是規則去語氣詞,非模型潤色;要忠實原稿用 off |
--server-timeout | 600s | server 拉起等待 |
--transcribe-timeout | 7200s | 轉錄等待;長節目調大(如 10800) |
坑(先讀再跑)
- 長音訊(>1h)轉錄幾十分鐘起步:背景行程跑 + 輪詢日誌,別前台乾等撞工具逾時。
- server 轉錄完保持常駐(復用加速下次);停止走托盤退出。
- 退出碼:3=下載失敗,4=server 失敗,5=轉錄失敗,6=成品已存在/佔用,7=切分或校驗失敗。
- 日誌:
<out-dir>\_podcast2md_server.log 和 <slug>\logs\。
- ffmpeg 必須在 PATH,否則 client 轉錄必失敗。
- 說話人分離不做;多說話人稿需後處理。
本機實測事實(2026-10-19 驗證,直接引用不必重新探測)
- ffmpeg 8.1.2 已在 PATH——client 檔案轉錄的前提已滿足;不確定時先
ffmpeg -version 實測再說,不要寫成推斷
- 本機無獨立 NVIDIA GPU,轉錄走 CPU:30–60 分鐘的節目約 10–30 分鐘出稿,1 小時以上 40–90 分鐘;FunASR-Nano 實測 95 分鐘錄音純轉寫約 46 分鐘(約 0.5 倍即時速度,含模型載入,見 work\full.out.log 2026-10-17)
- FunASR-Nano 參考腳本實測特性:15 秒分段(60s 整段會重複"嗯")、JSONL 逐段落盤斷點續跑、靜音段按能量閾值跳過
- B 站字幕覆蓋:官方/UP 主 CC 字幕並非全覆蓋,AI 字幕更常見——先
yt-dlp --list-subs 探測再定路線,不要憑假設斷言覆蓋率
本地音訊 / 相鄰場景分工
- 本地音訊檔案(錄音、已下載的 mp3/wav,無連結):不走本 CLI。用 FunASR-Nano:venv
D:\iStall\FunASR-Nano\.venv,權重 D:\iStall\model-cache\huggingface\local\Fun-ASR-Nano-2512-hf;長音訊必須分段逐段辨識(60s 整段會重複"嗯"),參考 D:\iStall\FunASR-Nano\work\full_transcribe.py。
- B站等有字幕的影片:先探測字幕(
yt-dlp --list-subs),有 CC/AI 字幕就直接拉字幕成文,不必跑語音轉寫。
- 字幕轉文章(去時間軸、成文):那是 srt-translator 工作流,不是本 CLI。