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 的作用,可以回去參考一開始發佈的版本,裡頭有說明。

閱讀全文

我的備份SOP (2025版)

我的備份SOP (2025版)

數位時代下,個人與家庭資料的安全性與完整性日益重要。我在2018年寫過一版當時的備份SOP。7年後,我更新了目前我所使用的,如何在多裝置、大資料量的家庭環境中,建立一套高效且可靠的備份SOP。如果你的環境比較簡單,可以用下面的簡易版本SOP作備份:

  1. 異質備份:以大容量外接硬碟作為資料備份與歸檔的主要媒介。
    • 將所有日常工作文件、重要家庭照片及影像等「熱資料」定期備份至外接硬碟。
    • 對於不再頻繁使用但具長期保存價值的「冷資料」(如已完成專案的原始檔、高解析度照片RAW檔),定期將其歸檔/搬移至大容量外接硬碟,以釋放主力設備空間。
  2. 異地防護:採用 Backblaze 進行雲端遠端備份。
    • 僅依賴本地實體儲存仍不足以抵禦區域性災害(如火災、水患或竊盜)。因此,建議利用如 Backblaze 這類提供個人電腦無限儲存空間的雲端備份服務,作為異地備份解決方案。
    • 策略性運用: 對於儲存於外接硬碟中的歸檔資料,可規劃每半年將該外接硬碟連接至主力電腦數日。此舉將使 Backblaze 偵測到並自動將這些歸檔資料納入遠端備份範圍,以極低的邊際成本實現冷資料的異地防護。

如果你對完整版的備份SOP有興趣,想了解我的心路歷程,或是想知道我怎麼處理較複雜的架構,可以繼續看下去。

閱讀全文

n8n Workflow: 在Karakeep 打星就分享到 Twitter

n8n Workflow: 在Karakeep 打星就分享到 Twitter

上週從Pocket跳船到 Karakeep 之後,由於 IFTTT 不支援 Karakeep,之前 IFTTT 上的「打星就分享到 twitter流程」就沒得用了。

正好也想用 n8n 玩點花樣,於是就到 n8n 上試著寫個 workflow 來做這件事。

個人血淚提醒:
使用 docker compose down 時千萬不要加 “- v” (也就是不要下 docker compose down -v)。
一般來說 -v 會讓人想到 –verbose;但在 docker compose 裡是把已經建好的 volume 移除 (remove),包含之前所有輸入的資料,workflow,以及設定。

我寫到一半要加個功能,想要rebuild container時,粗心大意直接 copy & paste chatGPT 給的指令,然後兩天的心血就…消失了。後面問 chatGPT 他還理直氣壯說我又沒有說要保存 volume 資料… Orz

以下的內容是先請 AI 分析我寫的 workflow,然後我再補充。
這樣產生說明文件的方式真的很快。不過某些我覺得重要的節點(node)還是會被略過。得要手動指定或是手動加入。

workflow 拆成兩個部份:

  • Karakeep_webhook_queue.json:接收 Karakeep 更新書籤時所送出的 webhook,稍後由 Karakeep_share 批次處理。
  • Karakeep_share.json:把已經打星的書籤分享到 Twitter,並把已經分享過的書籤歸到 “shared” 列表中。

我請AI 從功能、架構與流程、重要節點的設定方式等三個面向進行分析。

閱讀全文

從 pocket 跳船到 Karakeep

從 pocket 跳船到 Karakeep

從 gslin 那邊看到 Pocket 要收攤的消息:《 Pocket 總算要關掉了…
Pocket 這種「稍後閱讀 (Read it Later)」的工具,在我 GTD 的流程裡扮演了一個很重要的角色。
需要閱讀的東西,用方便的小工具 (早期是 bookmarklet,現在是 iOS的 share 跟 browser 的 extension) 丟進去 pool 裡,讀完的 archive 起來。 早期還會想要分類下 tag,但後來實在太麻煩,而且全文搜尋太好用,就不下 tag 或分類了。

我記得早期我是用 Instapaper 的,(可能是) 2014年初轉到 Pocket
當 Mozilla 買下 Pocket,我也沒什麼在意。頂多是後來帳號整合在一塊,登入的時候,要想一下用哪個密碼 (其實也不用記,有自動填入)。

之後就一直留在 Pocket 沒移動過。一直到 Mozilla 決定關掉這個服務為止,我才驚醒:哇!工作流程要被影響了!

即使現在有那麼多 AI powered,跟桌面程式深度整合的「資訊整合/閱讀」服務,我還是用著古老的 Pocket 跟 Simplenote。一個負責連結,一個負責文字、其他、和初步整理。深度的整理現在是在 Obsidian 上進行,閱讀後的發佈和分享則是交給 blog / twitter / thread 等。閱讀網路文章時,如果覺得適合分享,又不需要(或不適合)打太多心得,早期我用小海的 twitthat,後來就把 Pocket 打星的文章經過 IFTTT串到 twitter上。這麼做,已經很多年了。

但事情來了,就要面對。
於是這一週就花了兩天處理跳船的事情。
處理的同時,也在擔心 Simplenote 的狀況:跟 Pocket 一樣,被大型服務 (Automattic,就是Wordpress的那家公司)併購後,Simplenote 的開發一直…處於放生的狀態。雖然說服務只要穩定就好,不一定要一直疊加功能上去,但 Simplenote 的狀況比 Pocket 更悲戚一些:沒有穩定的付費模式,本來開放的 API 陸續收回 (雖然某程度上還有辦法用),第三方的工具一直隕落,也一直缺乏和其他服務的串接 (沒有太多自動化的機會),也沒有針對AI 世代有什麼明顯的回應

簡單來說,就是一個放著 run,燒不了太多錢,但也沒有花心力維護的服務。

但他還是我用過最「方便」,最順手,也留在我GTD 工具清單最久的工具之一。

這樣一個服務,要是某天 Automatic 把它關掉,我應該會哀嚎得更大聲。

好了,扯遠了。

回到 Pocket 跳船。

閱讀全文

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

閱讀全文

遊民週記 52: 遊民一年後,我寫下什麼?

遊民週記 52: 遊民一年後,我寫下什麼?

距離我離開上一份工作,竟然一年了。
本來現在應該要結束的 Gap year ,竟然又延長了。

我們常常高估一天的改變,低估數年的累積;也常高估延後一天的傷害,卻又低估拖延數年的代價。

如果問我還在公司裡的情景,專案內容,工作樣態,同事相處,技術發展…好像還在昨天一樣的歷歷在目。即使現在找前同事們出來吃飯,聊的是工作上的技術,也沒什麼落後或鴨子聽雷的感受。

但如果問我這一年來的生活、作息、和生活重心,之前工作的日子彷彿又變得遙不可及,好像是上個世紀似的。 這一年來,我的生活已經被重新定義了。中午跟孩子在閒聊工作和興趣,「我很幸運我的工作有一大部份是我的興趣,但生命中不會只有一種興趣,所以我現在正在追尋其他的興趣。」我說。

『我的導師說,你對專題的興趣這麼強烈,如果我跟你靈魂互換,我的專題成果就不會是現在這樣了』小幸福幽幽地說。

「沒關係,每個人都可以追尋 自己的興趣和夢想。你只要找到自己的興趣和夢想,如果剛好是你的專長,能夠靠它工作賺錢,那就更好了。」我回。

整理一年來的文章

一年的時間,我又把「深呼吸1」 這個習慣累積了回來。每週至少一篇,55篇文章,15萬字。今天,我試著回顧這一年來,我留下的字字句句。

閱讀全文

遊民週記 51: 2025Q1 財務盤點

遊民週記 51: 2025Q1 財務盤點

先說,因為這個財務盤點的數字是在 2025/3/26 統計的,所以 4/2的大盤急殺並沒有包括在內。
在寫這篇文章的同時,川普的「對等關稅」政策,導致跨國供應鏈的成本大幅上升,進而使各國股市 (包括美國自己) 都有大幅的下跌;,4/2~4/4 這三天,道瓊下跌9%,S&P500 下跌10%,Nasdaq -11%,科技個股還有更慘的(M7有到-15%)。台股因為清明連假休市的關係,還沒有機會反應,但預期 4/7 就會好好反應了。這些變化如果到 Q2 的財務盤點時,應該已經塵埃落定,趨勢明朗了。如果值得聊的話,會在 Q2 盤點的時候聊。


支出檢視和檢討

這一季的支出比我原本預想的略高一些。一月時,看到支出控制在50%,我還暗自竊喜,想說怎麼有這麼 好的情況?結果二月就像一場大考驗,孩子想要另外上1-on-1 的補習費 (計畫之外)、過年紅包 (計畫之內)、新螢幕17K (計畫之內的任性),瞬間讓支出衝過頭。幸好整體季支出還是壓在原訂的提領預算內,算是虛驚一場。

閱讀全文

遊民週記 47: 如何設計收益護盾以抵禦市場風險

遊民週記 47: 如何設計收益護盾以抵禦市場風險

本週終於拿到兩個孩子的護照,前前後後花了一個月有。只能說公家機關 + 孩子本人 + 照片限制 真的花時間。尤其是照片,電腦上看起來沒問題的,便利商店輸出就 degrade 一次,經過戶政事務所的掃瞄器又會再 degrade 一次。這時就羨慕身份證辦理可以直接上傳照片。

其實護照的照片也是可以用上傳的方式繳交。只是得要到外交部親辦才行。在戶政事務所送件的還不行。
有趣的是, 在戶政事務所辦身份證的話,是可以用上傳的方式繳交照片的。
在這樣繁瑣的行政流程中,時間就是這樣子消耗的。還好,我不急,可以等,只是不耐煩。

閱讀全文

遊民週記 46: 新螢幕和校色

遊民週記 46: 新螢幕和校色

把病養好後,本週開始開turbo 趕進度回到之前的生活型態。
結果好像有點趕過頭了,星期三跟朋友聊天還在說自己很忙,星期四就突然不知道要做什麼事了。

事後回顧,其實也不是沒事做,待辦事項跟計畫還是有許多項目要完成。
只是當下突然沒有「即刻應該做」或是「當下想要做」的事。
才會有「啊~~~~ 這就是退休後很無聊、不知道做什麼事的感覺嗎?」

然後過了一天,又回到有事情做的日子了。

閱讀全文