Colab + WhisperX 將音檔轉成逐字稿 (20250619版)

Colab + WhisperX 將音檔轉成逐字稿 (20250619版)

這兩天有需求,再上 colab 用 WhisperX 把音檔轉成逐字稿。發現之前寫好的code 又跑出錯誤訊息了。

解決問題的路上,發現新版已經跑得起來,不用像之前還要移除 Pytorch、安裝特定相容的版本。但版本依賴的狀況還是蠻混亂的。

新的版本還是帶來新的問題:

  • whisperx.DiarizationPipeline 指令改成 whisperx.diarize.DiarizationPipeline
  • alignment.py 裡有個Index Error,Issue 裡也有人回報,但還在等修復,目前需要自己進去改code。

我整理了一下,再把新的code 放上來,但使用上要小心。再幾個版本後可能又不能用了。

目前日期 (2025/6/19)所安裝的版本為:

whisperx 3.3.4
ctranslate2 4.4.0
pyannote-audio 3.3.2
torch 2.6.0+cu124
torchaudio 2.6.0+cu124
libcudnn8 8.9.7.29-1+cuda12.2
libcudnn8-dev 8.9.7.29-1+cuda12.2

以下是目前的code 跟修改的地方。如果要知道更多 code 的作用,可以回去參考一開始發佈的版本,裡頭有說明。

閱讀全文

Colab + WhisperX 將音檔轉成逐字稿

Colab + WhisperX 將音檔轉成逐字稿

前幾天在聽podcast時聽到一段不錯的內容,不過因為我用的不是 Apple Podcast, 沒有逐字稿,索性把之前在 colab 上跑的 fast whisper 拿出來用。但因為 podcast 是對談,想分不同的講者,於是找了一下有沒有 solution。發現大多是用 pyannote 去進行說話人分割 (diarization),然後再 對齊 (align)。 目前 whisperX 已經有支援。

whisperX 之前有「停更」過一段,今年又恢復更新。於是找了些資料,把 colab 的版本架了起來。後面又發現中文的斷句和標點有些麻煩, GPT 介紹的幾個作法不是不好用,就是有幻覺。最後還是選擇直接叫 GPT 來修飾文字,畢竟本來就是語言模型。

過程中發現 ChatGPT 很有耐心地關心我的需求和碰到的錯誤,真的像是要一步步地帶著我完成所有的程式碼。雖然產出的東西偶爾會有錯,我也會自己手殘去修改一些我要的邏輯。不過如果回饋給他,他會記住,並且在後續的版本持續完善整個程式碼。

這些 code 完全由我自己寫的已經 <50% 了, vibe coding 真是驚人。

閱讀全文