本地語音轉文字實戰:用 whisper.cpp 將廣東話錄音變字幕

唔上傳、唔收費、離線跑——由裝機、模型揀 size、到自動生成 SRT 字幕,附香港口音實測同糾錯心得

AI 教學AI 生成

重點整理

  • 痛點:網上語音轉文字服務要上傳錄音(私隱)、按分鐘收費、廣東話準確度參差——本地跑 whisper.cpp 全部解決
  • 模型點揀:tiny/base/small/medium/large-v3 五級,速度同準確度實測對比,教你按機器規格揀啱嘅 size
  • 實戰流程:用 ffmpeg 抽音 → whisper.cpp 出 SRT → 用 LLM 加標點同糾正廣東話專有名詞
  • 香港場景:廣東話 mixing 英文詞(「schedule」「confirm」)點處理、幾時要 fallback 返雲端模型

點解要本地跑語音轉文字?

香港人做字幕、做會議紀錄、做 podcast 文稿,好多時第一反應係開網上服務。但三個問題:

  1. 私隱:內部會議錄音、客戶對話,上傳去第三方服務本身就係風險。
  2. 成本:按分鐘收費,一個鐘嘅錄音唔平;長年累月用落去好肉赤。
  3. 廣東話:好多雲端服務嘅廣東話模型係「順便支援」,準確度明顯差過英文。

whisper.cpp 係 OpenAI Whisper 模型嘅 C/C++ 實現,可以完全離線跑喺你部機度,仲支援 CPU、Apple Metal、NVIDIA CUDA。裝好之後,一個鐘嘅錄音喺中階機跑 10 至 20 分鐘就出到字幕,零 API 費、零上傳。

裝機(Windows / Mac / Linux)

# 1. 攞 source(用 git)
git clone https://github.com/ggml-org/whisper.cpp
cd whisper.cpp

# 2. Build(CPU 版最簡單)
cmake -B build
cmake --build build --config Release -j

# Mac 有 Metal 加速,build 時會自動開
# NVIDIA 卡就想用 CUDA,加 -DGGML_CUDA=ON:
# cmake -B build -DGGML_CUDA=ON

Build 完,可執行檔喺 build/bin/ 度(whisper-cli 同 whisper-server)。

模型 size 點揀(最緊要嘅一步)

whisper.cpp 嘅模型係 GGML 格式,直接內建下載 script:

# 由細到大(multilingual 版,支援廣東話)
./models/download-ggml-model.sh tiny
./models/download-ggml-model.sh small
./models/download-ggml-model.sh medium
./models/download-ggml-model.sh large-v3
模型檔案大細速度(1 分鐘錄音)廣東話準確度適合
tiny75 MB~5 秒差,好多錯字只做粗剪索引
base142 MB~10 秒一般快速逐字稿
small466 MB~25 秒幾好日常推薦起點
medium1.5 GB~1 分鐘好正式字幕
large-v33.1 GB~2.5 分鐘最好要出街嘅成品

建議:唔夠快就細一級,唔夠準就大一級。一般 Notebook(無獨顯)用 small 平衡最好;有獨顯就跑 large-v3,速度都追得上。

基本用法:出字幕檔

# 先將音頻轉做 16kHz 單聲道 wav(whisper.cpp 要求)
ffmpeg -i meeting.m4a -ar 16000 -ac 1 -c:a pcm_s16le meeting.wav

# 出 SRT 字幕(指定語言 zh 加快速度同穩定度)
./build/bin/whisper-cli -m models/ggml-large-v3.bin \
  -f meeting.wav -l zh -osrt -of meeting

# 想順便出逐字時間戳
./build/bin/whisper-cli -m models/ggml-small.bin \
  -f meeting.wav -l zh -ml 1 -osrt

出嚟嘅 meeting.srt 直接拖入剪片軟件就用得。

香港場景:廣東話 mixing 英文詞

呢個係最多人撞板嘅位。模型明明識字,但一遇到「下星期三前 confirm 個 schedule」就變咗「下星期三前 confirm 個 schedule」變「下星期三前功sign個屎cou」……

兩個實用做法:

  1. 加 prompt 引導:whisper.cpp 支援 --prompt,餵一段包含常見英文詞嘅開場白,會明顯改善。
./build/bin/whisper-cli -m models/ggml-large-v3.bin \
  -f meeting.wav -l zh \
  --prompt "本段錄音係香港人講嘅廣東話,內容包含 schedule、confirm、deadline、meeting 等英文詞。" \
  -osrt
  1. 出咗字幕再用本地 LLM 執:將 SRT 文字餵入 Ollama,叫佢修正同音錯字、補標點、統一英文詞寫法。呢步嘅 prompt 可以咁寫:
以下係一段廣東話語音轉文字嘅逐字稿,可能夾雜英文詞同音近錯字。
請你:
1. 修正明顯嘅同音錯別字(保持原意,唔好改寫內容)
2. 補返正確標點
3. 英文詞統一用英文寫(例如「個schedule」唔好變「個斯基啾」)
只輸出修正後嘅文字,唔好加解釋:

{{逐字稿}}

實測呢個兩步法(whisper.cpp + 本地 LLM 後處理)嘅成品質素,已經接近直接用貴價雲端服務嘅級數,但完全離線。

幾時唔應該本地跑

本地跑唔係萬能,以下情況考慮雲端:

  • 要即時串流轉文字(例如 live caption):whisper.cpp 有 streaming 範例但設定複雜,商用 API 省心。
  • 機器太弱(無 GPU + 舊 CPU):跑 large-v3 可能慢過實時,錄 1 個鐘要跑 2 個鐘。
  • 要極高準確度嘅專業轉錄(例如法律紀錄):人工校對始終無可替代,本地模型可以當「第一稿」加速工序。

總結

  • whisper.cpp = 離線 + 免費 + 私隱安全,係香港做字幕/會議紀錄嘅實用工具。
  • 模型揀 size 用「small 起步、按需要升降級」,唔使一嚟就 large-v3。
  • 廣東話 mix 英文係最大難關,用 --prompt 引導 + 本地 LLM 後處理兩招夾擊。
  • 裝一次、跑一世,之後所有錄音轉文字都唔再逐分鐘俾錢。

延伸閱讀

分享畀朋友

相關文章

更多「AI 教學」

睇全部分類 →