Mark Ku's Blog
v0.134.0 · MIT 開源

AI Podcast Cut

AI Podcast/音訊剪輯桌面工具。丟進一段錄音,它會剪掉贅字與口吃、平衡音量、保留句尾的呼吸感,並在輸出前讓你逐個接縫聽過。辨識與去人聲都在你自己的機器上,不上傳也不需要金鑰。也有一套對 AI 友善的 CLI 與內建 MCP server,讓 agent 直接下指令幫你剪。

下載最新版GitHub 原始碼
完全免費 · MITWindows / macOS / Linux · 9 個安裝檔 · 每個都附 sha256
AI Podcast Cut · 主編輯畫面
主編輯畫面:波形、候選色塊、逐字稿(被剪掉的字畫上刪除線)與右側決策面板;底下狀態列是 ffmpeg 與 claude 的即時狀態與目前模型

90 秒看它怎麼運作

從開檔、分析、審核到輸出驗收,一次看完整條流程。

它幫你做掉什麼

不是「一鍵變好聽」那種黑箱。每一項都看得到它動了哪裡、為什麼。

🗣

剪贅字與口吃

嗯/呃/那個/就是,以及講到一半重講的片段。以自然順暢為最高原則:句首的「然後」、有節奏感的語助詞會留著,不是全部剪光。

🎚

逐段音量平衡

逐段 BS.1770 量測 → 增益規劃(±12 dB、峰值守門、3-tap 平滑、階差 ≤3 dB)→ EBU R128 loudnorm 兩趟 + 限幅器。成品落在你選的目標響度。

🫁

留得住呼吸感

剪完不是把句子黏成一團。句中留 170 ms、句尾 340 ms、段落之間 575 ms;靜音不夠長時補 room tone,而不是硬接。

✂️

剪在完整波形上

剪點先貼字邊界,再貼到 ±30 ms 內的能量最低點,最後對齊 ±3 ms 內最近的上升零交越。每一刀都有漸弱漸強,安靜處 4 ms、語音接語音 24 ms。

👂

兩個 agent 互相把關

剪輯 agent 提議、審核 agent 只挑「剪了會壞」的那幾筆。兩邊意見相反時它不自己決定,標成「分歧」交給你裁決。

🧹

贅字依「詞」整群處理

一集 57 分鐘會提上千筆贅字候選,逐筆審是審不完的 —— 但它們其實只有二三十個「詞」。攝成一張表(次數 / 已剪 / 待決 / 可省多少),一列一鍵全剪或全留,另有跨集有效的個人詞表。

📚

多集批次跑完

勾選集數與步驟(分析 → 智慧剪輯 → AI 判讀 → 輸出)一次跑完。一次只跑一集(辨識吃 CPU / GPU,平行不會比較快),已有逐字稿的自動跳過分析,某一集失敗不影響其他集。

📖

領域詞(讓辨識器聽得對)

人名、產品名、公司名、技術術語 —— 辨識器聽不出來的那些。晶片式增刪、批次貼上,並且會從這一集辨識信心低的字直接推薦(排除贅字)。沒有人憑空想得起來要加哪些字。

輸出後還要驗收

成品每段的波形包絡跟來源做正規化互相關,抓出接錯段或位置偏移;有逐字稿時再重新 ASR 逐字比對,列出漏字、該剪沒剪、可疑接縫。

它還能做的事

AI 是選項不是前提:波形、手動剪、輸出這條路完全在本機,不需要任何金鑰。

🌊

開檔就有波形

不必先分析。幾秒內看到整段波形與時間尺,馬上可以播放、縮放。

🖱

手動也能剪

按 S 切選取工具,拖一段就能播放(可循環)、剪掉、只保留、靜音、淡入淡出、增益。常用的動作右鍵就在手邊。

📝

在逐字稿上剪

Shift + 點選一段範圍,或雙擊某個字直接剪掉它。

🥁

節拍格線與貼齊

從波形能量自動抓 BPM,時間軸畫出拍線與小節線,選取自動吸附拍點。抓錯可以 ÷2 / ×2,或跟著音樂敲三下重抓。

自動精華片段

選 15 / 30 / 60 / 90 秒,依能量與律動挑出最像副歌的一段,有拍網格時起訖貼齊小節。

🎤

去人聲 / 分軌

一鍵分成人聲 + 伴奏(2 軌)或人聲/鼓/貝斯/其他(4 軌)。伴奏軌就是去人聲版本,可以接著剪。同樣在本機跑(demucs)。

🤖

AI 助手(工具迴圈)

本機 claude CLI 透過內建的 MCP server 直接操作剪輯決策:「把 10 分鐘後的『就是』都剪掉,但句首的留著」。每個工具呼叫都看得到。

⌨️

鍵盤審核模式

一次一筆、自動預聽剪後結果,A 接受 / R 拒絕並自動前進。整組相同的贅字可以一次決定。

🔍

三種預覽

原始 / 剪後(即時近似)/ 剪後(成品)。成品預覽走與正式輸出同一個剪接器,關掉逐段平衡時與成品逐 byte 相同。

✂️

刀片與漣漪修剪

B 刀片、T 修剪工具(拖中間是捲動、拖兩側是漣漪)、N 統一吸附、Shift+Delete 提起。右鍵接縫可以打開精準修剪器,上下兩排並排看這一刀有沒有吃掉半個字。

🔖

章節寫進成品

標記與章節可以直接寫進輸出檔:mp3 得到 ID3 CHAP、m4a 得到 QuickTime 章節(Apple Podcasts / Spotify 讀得到),時間自動從來源換算成剪完之後的位置。

🎛

配樂軌與人聲閃避

波形下緘兩條 lane 放配樂與音效。閃避不丟給壓縮器猜,而是依人聲區間算出看得見也拖得動的音量控制點,位置釘在成品時間 —— 之後再多剪幾個贅字,音樂不會跟著跑掉。

⬇️

本機辨識一鍵安裝

辨識用你電腦上的 faster-whisper。選好模型(small 到 large-v3)再按,模型一併下載;按之前先給你看實際會執行的指令,跑起來輸出逐行顯示。每個模型都標了顯存需求,並拿你的顯示卡去比,直接寫「跑得動」還是「還差多少」。

💾

專案存檔

存成 *.aicut.json,含逐字稿、候選、決策、效果與 AI 判讀快取。同一個音檔重開沿用快取,不重跑 ASR。

實際畫面

上方是四步流程列,中間波形疊著候選色塊與拍線,右側是決策 / 助手 / 驗收側欄。

主編輯畫面:波形、候選色塊、逐字稿(被剪掉的字畫上刪除線)與右側決策面板;底下狀態列是 ffmpeg 與 claude 的即時狀態與目前模型
主編輯畫面:波形、候選色塊、逐字稿(被剪掉的字畫上刪除線)與右側決策面板;底下狀態列是 ffmpeg 與 claude 的即時狀態與目前模型
贅字管理:整集的贅字按「詞」攝成一張表,一列一鍵全剪或全留;另一個分頁是跨集有效的個人詞表
贅字管理:整集的贅字按「詞」攝成一張表,一列一鍵全剪或全留;另一個分頁是跨集有效的個人詞表
批次處理:勾選要跑的集數與步驟,一次只跑一集,跑完列出每一集省了多少、輸出在哪
批次處理:勾選要跑的集數與步驟,一次只跑一集,跑完列出每一集省了多少、輸出在哪
本機辨識安裝:選好套件與模型再按,按之前先看得到實際會執行的指令
本機辨識安裝:選好套件與模型再按,按之前先看得到實際會執行的指令
領域詞:晶片式增刪,下面那排是從這一集辨識信心最低的字推薦的
領域詞:晶片式增刪,下面那排是從這一集辨識信心最低的字推薦的

開始之前要知道的三件事

說在前面,免得你下載完才發現。

  1. 1

    不用網路也能用一半

    看波形、手動剪、套效果(靜音/淡入淡出/增益)、輸出 mp3 / m4a / wav,全部在本機跑,不需要任何金鑰或連線。

  2. 2

    辨識與去人聲也在你的電腦上

    逐字稿走 faster-whisper、去人聲走 demucs,兩個都在本機:不上傳、不需要金鑰、沒有伺服器要顧。第一次用會先裝套件與模型(按之前先給你看指令),之後就都在這台機器上。要自備 Python 3.9 以上。

  3. 3

    AI 判讀與 AI 助手需要 Claude Code CLI

    用你本機已經登入的 claude CLI,預設模型 sonnet —— 點狀態列那顆晶片就能換模型,也可以整個換成 Codex。沒裝也不影響前面兩項。

全部在地端:整條流程不需要伺服器

辨識與去人聲都跑在你自己的機器上,音檔不會離開這台電腦,也不需要任何金鑰。

🔒

音檔留在你的硬碟上

辨識不上傳任何音訊。逐字稿依音檔指紋存成本機快取,同一集重開直接沿用,不會再跑一次辨識。

🧩

規則層拿到完整訊號

輸出帶著字級時間戳、no_speech、avg_logprob、compression_ratio 一個不少,贅字、口吃、含糊那些規則需要的訊號全都在,不是閹割版。

💻

沒有顯示卡也跑得動

以 int8 量化載入、裝置設 auto:偵測得到 CUDA 就用 GPU,沒有就用 CPU 慢慢跑。差別在等多久,不在能不能跑。

🐍

不會偷動你的 Python

偵測只用 importlib 探測、不真的 import(載 ctranslate2 要好幾秒,為了畫一個勾不值得);安裝走 python -m pip 而不是裸 pip —— 機器上常有好幾個 python,裝完 import 不到是最難查的失敗。按下去之前,先給你看實際會執行的指令。

四個模型可以挑

名字直接餵給 faster-whisper。越大越準也越慢;顯存是 int8 的估計值,App 會拿你的顯示卡去比。

small~0.5 GB · 顯存 0.9 GB機器比較弱,或只是想先確認整條流程跑得動。
medium~1.5 GB · 顯存 1.7 GB折衷選項。中文人名與技術術語開始接得住。
large-v3-turbo~1.6 GB · 顯存 1.9 GB體感跟 large-v3 差不多,但快很多。趕時間選這個。
large-v3~3 GB · 顯存 3.0 GB預設值。中英混講的 podcast 直接用它;顯存不夠時 auto 會自動往下挑。

安裝時可以順便把模型抓下來(預設打勾)。不先抓的話,第一次分析才開始下載 —— 那時候你正等著看結果,卻卡在一個沒有進度的下載上。pip 與模型下載的輸出逐行顯示,你分得出是在下載還是掛了。

什麼留在這台機器、什麼會離開

留在這台機器

  • 波形、響度與節拍分析(Rust,開檔幾秒內就有)
  • 所有剪點運算、效果與輸出編碼(ffmpeg)
  • 語音辨識(faster-whisper)與逐字稿快取
  • 去人聲與分軌(demucs)
  • 專案檔 *.aicut.json,含決策與 AI 判讀快取
  • 輸出後的音訊比對驗收(成品對來源逐段比波形)

唯一會離開這台機器的

  • AI 判讀、助手與節目筆記送的是逐字稿文字,交給你自己登入的 claude 或 codex,音檔不會送出去
  • 不用 AI 判讀的話,整條流程完全不連外

地端辨識與去人聲要自備 Python 3.9 以上,這個 App 不會替你裝 Python。桌面版與 CLI 走的是同一組模型與參數,同一個檔在兩邊得到同一份逐字稿。

技術棧

音訊的重活在 Rust,介面在 React。

桌面殼層Tauri 2
前端React 18 + TypeScript 5 + zustand
波形wavesurfer.js 7.12.11
音訊處理Rust(ebur128 / hound / blake3)
轉檔與編碼ffmpeg(Windows 內建 LGPL 版)
AIClaude Code CLI(可換 Codex)+ faster-whisper / demucs(本機)

下載:一份程式碼,三大平台 9 個安裝檔

同一份原始碼一次建出 Windows(exe / msi)、macOS(Apple 晶片與 Intel 各一)、Linux(deb / rpm / AppImage)共 9 個安裝檔,每個都附 sha256。桌面版與 CLI 共用同一套剪輯核心,所以在哪個平台上跑,結果都一樣。

Windows 10 / 11

x64-setup.exe(47.3 MB)· x64_en-US.msi(63.6 MB)

安裝檔內建 LGPL 版 ffmpeg,裝完直接能用。你自己裝的 ffmpeg 優先權更高。

macOS

aarch64.dmg(10.1 MB)· x64.dmg(10.4 MB)

Apple Silicon 與 Intel 各一版。需要自行安裝 ffmpeg 7 以上(brew install ffmpeg)。

Linux

amd64.deb · x86_64.rpm(各 6.4 MB)· amd64.AppImage(80.1 MB)

deb / rpm 已宣告相依 ffmpeg,套件管理員會一起裝。AppImage 需自行準備 ffmpeg。

Windows 版比其他平台大 40–60 MB,差額就是壓縮後的內建 ffmpeg。目前沒有 Windows ARM64 與 Linux aarch64 版本,這兩個平台請從原始碼建置。

從原始碼建置

  1. 1

    npm install --legacy-peer-deps:peer 依賴刻意用 legacy 解法,不加這個旗標會裝不起來。

  2. 2

    node scripts/fetch-ffmpeg.mjs(選用):抓內建的 LGPL ffmpeg,URL 與 sha256 釘死在 scripts/ffmpeg-manifest.json,對不上就直接失敗。不跑也能開發,只是會退回用 PATH 上的 ffmpeg。

  3. 3

    npm run tauri dev:前端跑在 1420,Rust 首次編譯要 5 到 10 分鐘,之後就快了。

一行版(複製後貼進終端機):

也有 CLI: aicut

無視窗跑完整條流程,每個子命令都能單獨呼叫,verify 有問題會回 exit code 2,腳本或 AI agent 都驅動得動。

打包成單檔(Node 20+)

npm run cli:build

只要逐字稿

node dist-cli/aicut.mjs transcribe ep12.m4a

分析並存成專案檔(含 AI 判讀)

node dist-cli/aicut.mjs analyze ep12.m4a --judge --project ep12.aicut.json

一步剪完輸出

node dist-cli/aicut.mjs cut ep12.m4a --judge -o ep12_cut.mp3

去人聲

node dist-cli/aicut.mjs separate song.mp3 --format wav

抓 BPM 與拍點

node dist-cli/aicut.mjs beats song.mp3 --bars

驗收成品(自動化用)

node dist-cli/aicut.mjs verify ep12.m4a ep12_cut.mp3

CLI 跟桌面版用同一組地端模型與參數。要注意 CLI 只做全域 loudnorm,沒有桌面版的逐段音量平衡。

授權與第三方元件

AI Podcast Cut 本身是 MIT。Windows 安裝檔內建 LGPL-2.1-or-later 授權的 ffmpeg(n8.1.2,下載 URL 與 sha256 釘死在 repo 的 scripts/ffmpeg-manifest.json,對不上就讓 build 失敗),以獨立程序加動態連結的方式使用,不會連進主程式,也不是 ffmpeg 的衍生作品。你可以換成自己 build 的 ffmpeg 放同一個目錄,或在設定裡指到別的路徑。完整聲明與 LGPL 全文見 repo 的 THIRD-PARTY-NOTICES.txt。

看 THIRD-PARTY-NOTICES.txt

把剪輯的時間還給你

贅字、音量、接縫這些機械活交給它,你留著判斷什麼該講、什麼該刪。全部在你的電腦上跑,MIT 授權,程式碼全部可以看。

贊助開源

這些工具都是免費且開源的

沒有付費牆、不用註冊帳號,程式碼全部公開在 GitHub。如果它幫你省下了時間,可以請我喝杯咖啡,讓後續的更新跟新工具繼續做下去。

請我喝杯咖啡

自訂金額·PayPal 安全結帳

AI Podcast Cut:免費開源的 AI Podcast 音訊剪輯工具(全部在你的電腦上跑) - Mark Ku's Blog