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 真是驚人。

閱讀全文

遊民週記 11: 暑假開始了

遊民週記 11: 暑假開始了

上週提到的暑假「哇哇叫大作戰」,目前已經跟孩子一起完成進行方式規劃跟第一週的安排。接下來就是第一週看實行的狀況,再進行修正。想一想,人生有多少次可以兩個月不用上班,跟不用上學的孩子們好好泡在一起,而且又避開孩子很小 (著眼在「養」孩子)跟孩子很大 (孩子已經不想跟你泡在一起了) 的這兩個階段。想一想,就拋棄所謂的「暑假鬼門開」,放下原來在bucket list 上想要做的事情 (當然有的還是可以排,只是要跟孩子討論好再去做),把這兩個月專心拿來跟他們泡在一起。希望未來回顧這段旅程時,不管是對他們,還是對我自己而言,都是很難忘、很美好、也很珍貴稀有的兩個月。

閱讀全文