香港辦公室每日都產生大量聲音:客戶電話、內部會議、WhatsApp 語音訊息、訪問錄音。錄完之後多數就係「有空再聽」,結果錄音檔喺資料夾越積越多,真正翻聽嘅時間少之又少。要人手逐句打返做文字,一個鐘錄音閒閒地要三四個鐘,打完仲要眼攰手軟。
其實「將聲音變文字」嘅技術叫語音辨識(Speech-to-Text,簡稱 STT)。OpenAI 開源嘅 Whisper 模型支援廣東話、繁體中文同英文,可以喺自己部電腦度跑,唔需要將錄音上傳去任何雲端。下面用 Python 加 faster-whisper,示範點樣一次過將整個資料夾嘅錄音變成 txt 逐字稿。
Whisper 係咩?點解揀 faster-whisper?
Whisper 係一個用大量多語言語音資料訓練出嚟嘅模型,唔使逐字教它文法,它自己會分辨人聲同背景噪音。原版 openai-whisper 安裝時要另外裝 ffmpeg,對唔熟電腦嘅同事有啲麻煩;faster-whisper 係同一批模型嘅加速版本,用 CTranslate2 重新實作,速度快幾倍、記憶體用得少,而且內置音訊解碼,唔使額外裝 ffmpeg。同一個 small 模型,可以揀喺 CPU 行(唔使獨立顯示卡)或者 CUDA 行。
第一步:安裝
開啟「命令提示字元」,打:
第一次執行時,程式會自動下載所選模型(small 大約 460MB),存放喺使用者資料夾,之後再跑就唔使再落。
第二步:程式會幫你做乜?
- 讀入錄音 —— 一次過攞齊 audio 資料夾入面所有 m4a、mp3、wav 檔
- 辨識文字 —— 逐個交俾 Whisper,並指定語言係中文
- 寫出檔案 —— 每段錄音寫成一個同名 txt,一行一句
第三步:寫程式
喺一個新資料夾開 transcribe.py,隔離開個 audio 資料夾放錄音,貼入以下 code:
逐行解釋
- WhisperModel("small", ...) —— 載入 small 模型;device 可改 "cuda" 用顯示卡;compute_type="int8" 係 CPU 最慳記憶體嘅設定。
- glob.glob(...) —— 一次過搵齊三種格式嘅檔案,砌成一個清單。
- model.transcribe(...) —— 真正做辨識:segments 係一段段文字,info 有長度等資料。
- language="zh" —— 指定中文,避免程式亂猜語言;純英文錄音改 "en" 會更準。
- vad_filter=True —— 先偵測邊段有真人聲,剪走靜音同雜音,減少空白句同亂碼。
- encoding="utf-8" —— 一定要指定,否則 Windows 預設編碼會令中文變亂碼。
第四步:執行
喺命令提示字元切換去該資料夾,打 python transcribe.py。跑完之後,每個錄音旁邊就會多一個同名 txt 檔,打開就係逐字稿。
實際速度同準確度(參考數字)
一部普通文書筆電(無獨立顯示卡)用 small 模型,一個鐘嘅會議錄音大約要 15 至 25 分鐘轉完,視乎錄音質素;有獨立顯示卡嘅話可以快三至五倍。準確度方面,安靜環境、咪高峰距離一公尺內嘅對話,繁體中文大意通常九成以上準;但如果係幾個人圍住一部手機講嘢,加上冷氣聲或者街道噪音,錯字就會明顯增加。所以實務上,逐字稿當「初稿」用,人名、公司名、銀碼一定要人手核對。
提升準確度五個貼士
- 收音最重要 —— 一部幾百蚊嘅 USB 咪,效果好過事後用任何軟件補救。
- 用大一級模型 —— 部機夠力就將 small 改做 medium,廣東話同中英夾雜嘅句子會準好多,代價係慢大約兩至三倍。
- 提供專有名詞 —— transcribe 加 initial_prompt="公司名、產品名、人名",模型會傾向用你提供嘅寫法。
- 先分段再辨識 —— 兩個鐘以上嘅檔案,切開每 30 分鐘一段,出錯時容易重跑,唔使由頭再嚟。
- 保留時間戳 —— 需要對返邊句屬邊分鐘,可以讀 seg.start 同 seg.end,輸出成 srt 字幕格式。
香港中小企實際用得着嘅場景
會議記錄:開完會直接有初稿,同事只需修改同補重點,唔使靠記憶。客戶電話:銷售同事錄低查詢,轉文字後貼入 CRM,其他同事都睇得明。WhatsApp 語音訊息:長語音轉文字,唔使開喇叭都知內容。訪問同培訓:逐字稿係後續寫文章、做教材嘅原材料。呢啲工作本身唔難,只係耗時間;交俾程式做,人手就可以放喺判斷同跟進。
總結
Python 教學:用 faster-whisper 十幾行 code,就將錄音自動變逐字稿,唔使上傳雲端、唔使逐句打字。記住三個關鍵:收音質素決定上限、模型大小換取準確度、輸出一定要用 utf-8。開始時可以先揀一兩個鐘嘅錄音試跑,睇吓自己嘅場景夠唔夠準,再決定要唔要升級模型或者加專有名詞提示。