這是一張有關標題為 使用 Faster Whisper 取得任何影片或音訊的原始字幕 的圖片

使用 Faster Whisper 取得任何影片或音訊的原始字幕

在本地端完成 Faster Whisper 的安裝與設定,並提供一段簡易腳本,可輸入 YouTube、Bilibili 等相關網址,即可自動下載媒體後,離線呼叫 Whisper 模型產生逐字稿,並輸出原始字幕檔(SRT/TXT)。內容涵蓋環境建置、相依套件安裝與腳本操作,可延伸至 API 部署或雲端服務。

前言

當錄製好一段影片後,想要為影片加上字幕,該怎麼快速進行?

或是透過 iPhone 錄製好開會紀錄的對話、訪談內容後,如何將其轉換為可閱讀的文字稿?

當影片講述內容過於艱深或遇到語言障礙,如何把影片丟給 AI 進行分析後有條理的統整、並告知原因與結果?

上述需求,都可透過 OpenAI 開源的 Whisper 自動語音辨識模型,或其高效衍生專案 Faster-Whisper,在本地端完成部署與操作,實現影片/音訊的一鍵轉文字、字幕生成與後續內容分析。

什麼是 Whisper?

Whisper 是在 2022 年 9 月由 OpenAI 正式發表並開源的語音辨識系統(automatic speech recognition,ASR)。截至 2025 年,Whisper 已經問世將近 3 年。

主要功能

  • 語音轉文字:可將錄音、影片等語音內容自動辨識並轉換為文字逐字稿。

  • 多語言支援:支援超過 57 種語言(如中英日法等),並具備自動語言偵測能力。底層模型實際以 98 種語言資料進行弱監督式訓練,官方僅對「字錯率低於 50%」的 57 種語言提供保證支援。

  • 自動語言辨識:無需預先指定語言,模型可自動判斷語音所使用的語言。

  • 強大容錯能力:即使音質不佳、口音重或有背景雜訊,仍能維持較高辨識準確度。

技術特點

  • 深度學習模型:採用 Transformer 架構,並以大規模多語言語音轉文字對應資料進行弱監督式訓練。

  • 開源可得:原始碼與模型權重皆免費開放於 GitHub,方便研究者與開發者進行二次開發與客製化。

  • 跨平台支援:可在 Windows、macOS、Linux 等多種作業系統中部署。

  • 多種模型尺寸:提供從 tinylarge-v3turbo 等多種模型配置,可依資源與精確度需求做選擇。

應用場景

  • 影片字幕自動產生:快速生成影片逐字稿與字幕檔(SRT/TXT)。

  • 會議記錄自動化:將線上/線下會議錄音語音轉文字,減少人工整理時間。

  • 語音搜尋與語音控制:支援語音查詢、命令辨識等使用場景。

  • Podcast、訪談轉錄:將長篇語音內容快速語音轉文字稿,利於內容管理與檢索。

其他版本

除了原始 Whisper 模型外,社群還衍生出多個專案,以因應不同的效能與功能需求:

  1. faster-whisper:基於 Whisper 架構,採用 CTranslate2 作為推論引擎重寫,大幅提升執行速度與資源效率,適合需要高吞吐量或即時轉錄的應用場景。

  2. WhisperX:在 faster-whisper 基礎上加入批次推論、強制對齊(forced alignment)、語者分離(diarization)、語音活動偵測(VAD)等進階功能,特別適用於長音檔或多說話人錄音的精準轉錄與分析。

  3. Whisper.cpp:將 Whisper 模型以超輕量級 C/C++ 實現,可在各類邊緣裝置(如筆電、手機、IoT)中本地離線運行,並快速啟動,適合對即時性與可攜性要求極高的場景。

先前我在轉字幕,都是使用 OpenAI 官方 Whisper 進行影片字幕轉錄,但後來發現 faster-whisper 在相同硬體資源下,不僅可達到相當或更佳的辨識精度,且運算時間明顯縮短。因此,本次教學優先採用 faster-whisper;若未來需更高對齊精度或多說話者分析,可再評估導入 WhisperX。

於本地部署 faster-whisper

安裝 Python

需要安裝 Python 3.9 或更新的版本,在此直接透過 WinGet 進行安裝:

1
winget install -e --id Python.Python.3.9

透過 python -V 檢查版本,有回傳版本號表示安裝成功:

1
2
PS C:\Users\wells> python -V
Python 3.9.13

安裝 faster-whisper

1
pip install faster-whisper

安裝 CUDA Toolkit 12 與 cuDNN(選擇性)

⚠️ 本步驟僅適用於搭載 NVIDIA 顯示卡且支援 CUDA 的系統。

若使用支援 CUDA 的 GPU,可大幅加速模型轉換處理流程,顯著縮短所需時間。以下為支援 CUDA 的 NVIDIA GPU 型號整理:

類別型號
資料中心與超級晶片B200, B100, GH200, H200, H100, L40S, L40, L4, A100, A40, A30, A16, A10, A2, T4, V100
工作站與專業卡RTX PRO 6000, RTX PRO 5000, RTX PRO 4500, RTX PRO 4000, RTX 6000, RTX 5000, RTX 4500, RTX 4000, RTX 2000, RTX A6000, RTX A5500, RTX A5000, RTX A4500, RTX A4000, RTX A2000, Quadro RTX 8000/6000/5000/4000, Quadro GV100, Quadro T-Series
GeForceRTX 50: 5090, 5080, 5070 Ti, 5070, 5060 Ti, 5060 <br> RTX 40: 4090, 4080, 4070 SUPER/Ti, 4070, 4060 Ti, 4060, 4050 <br> RTX 30: 3090 Ti, 3090, 3080 Ti, 3080, 3070 Ti, 3070, 3060 Ti, 3060, 3050 Ti, 3050 <br> RTX 20: 2080 Ti/Super, 2080, 2070 Super, 2070, 2060 Super, 2060 <br> GTX 16: 1660 Ti/Super, 1660, 1650 Super/Ti, 1650 <br> TITAN: Titan RTX, TITAN V
Jetson SoCJetson AGX Orin, Jetson Orin NX, Jetson Orin Nano

根據官方 CUDA Toolkit 12.0 Downloads 下載連結,選擇對應的作業系統、版本。

在此,我當前下載的是 cuda_12.9.1_576.57_windows.exe,安裝過程全程採用預設設定。

安裝完成後,可於系統目錄 C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA 確認 CUDA 是否已安裝完成。

CUDA Toolkit 下載頁面 確定系統目錄中已經安裝 CUDA

接續於 cuDNN 加速函式庫官方下載頁面 下載相容的 cuDNN 版本。

下載後,取得的為 zip 壓縮檔,檔名為 cudnn-windows-x86_64-9.10.2.21_cuda12-archive.zip。

解壓縮後,將其中的 bin、include、lib 三個資料夾,全部複製到已安裝的 CUDA 目錄下。

cuDNN 下載頁面 將 zip 內的 bin, include, lib 複製到 CUDA 目錄中

上述 CUDA 及 cuDNN 的安裝與配置即已完成。

使用腳本將影片語音轉文字逐字稿

腳本下載

下載完整套件:generate-srt.zip

解壓縮後,將整個資料夾放在任意目錄即可執行,資料夾內含三個檔案:

  1. generate-srt.bat(主程式)
  2. generate-srt.py
  3. 參數設定.txt

批次檔需要透過外部工具來下載影片,會需要使用到 yt-dlp 下載 YouTube 影片,或是 lux 下載 bilibili 影片。

可以使用 WinGet 進行 yt-dlp 的安裝:

1
winget install yt-dlp.yt-dlp

如果有轉換 Bilibili 影片的需求,則需使用 lux。請前往其官方發布頁面下載 lux.exe 執行檔

下載完畢後,解壓縮 lux.exe 到 generate-srt 資料夾內即可。

generate-srt 目錄

generate-srt.bat

此批次檔負責整體「下載 → 轉寫 → 檔案整理」自動化,重點邏輯包括:

  1. 設定區段(⚠️ 首次使用需要根據電腦進行調整)

    • whisperModel:指定 Faster-Whisper 模型大小(tiny/base/small/medium/large-v3/turbo)
    • whisperDevice:運算設備(cpu/cuda)
    • whisperTask:任務模式(transcribe:轉寫/translate:翻譯)
    • computeType:精度類型(float16/int8_float16/…)
    • openEditor:轉寫完成後開啟字幕檔的編輯器(none/notepad/code)
    • autoLoop:是否自動循環處理多支影片(true/false)
  2. 環境檢查

    • 檢查 yt-dlp、lux 下載器是否安裝或存在於當前目錄
    • 檢查 Python 是否可用、並能 import faster_whisper
    • 檢查同級目錄是否含有 generate-srt.py
  3. 使用 yt-dlp 或 lux 下載影片後,將影片路徑傳給 generate-srt.py 並輸出為字幕檔

  4. 最終使用文字編輯器開啟字幕檔

generate-srt.py

此 Python 腳本採用 Faster-Whisper 套件執行語音辨識。其中核心參數可經由外部傳遞。基本上這個檔案不需要進行任何修改。

參數設定.txt

檔案說明所有可調整參數、範例用法與建議設定,內容示例如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# 參數設定說明

## whisperModel
可選:tiny, base, small, medium, large-v3

## openEditor
可選:none, notepad, code

## autoLoop
true:轉換完自動重新開始
false:只執行一次

## whisperDevice
可選:cpu, cuda
- 若要使用 GPU 加速,需具備 NVIDIA 顯示卡,並安裝:
  - CUDA 12
  - cuDNN 9 for CUDA 12
- 重要:faster-whisper 最新版依賴的 ctranslate2 僅支援 CUDA 12。
- 若為 AMD GPU 或無 NVIDIA CUDA,請選擇 cpu。

## whisperTask
可選:transcribe, translate
- transcribe:將語音內容直接轉換為原語言的文字(即語音轉文字,ASR)。
- translate:將語音內容翻譯成英文文字(即語音翻譯)。

## computeType
可選:auto, default, float16, int8_float16, int8, int8_float32, int8_bfloat16, int16, float32, bfloat16
- NVIDIA 顯示卡(Compute Capability >= 7.0):float16 或 int8_float16(速度快且省記憶體)
- 只有 CPU(Intel/AMD):int8_float32 或 int16(省記憶體,速度佳),或 auto
- AMD GPU:建議用 auto 或 float32(AMD 支援有限,auto 會自動選最快)
- 不確定時可設 auto,系統會自動選擇最佳型態
- 參考:https://github.com/OpenNMT/CTranslate2/blob/master/docs/quantization.md

⚠️ 要開始使用前,務必根據自己電腦硬體進行修改 bat 批次檔,並將修改後結果更改於 generate-srt.bat 的同名變數區段。

whisperModel=turbo,是兼具轉換結果與性能,電腦性能差的可改為 base 或是 tiny。

whisperDevice=cpu,如果已經安裝 CUDA 支援,可以改為 cuda,轉換時間會大幅下降。

openEditor=none,想要轉換完畢自動開啟字幕檔,可以設定為 notepad 或是 code。

使用範例

  1. 請先修改 generate-srt.bat 裡面的全域變數,如果已設定好 GPU 支援請改為 SET "whisperDevice=cuda",可以加快轉換速度。

  2. 直接雙擊 generate-srt.bat,系統將自動檢查執行環境是否符合需求。

    執行 generate-srt.bat

  3. 輸入 Youtube 網址,以 《台江國家公園-黑面琵鷺保育及棲息環境》 為例子。本身影片為內嵌字幕,且不提供其他語言的字幕。

    下載並轉換為字幕

  4. 轉換完成後,可於 output 資料夾中找到生成之 .srt 字幕檔。

    轉換結果

逐字稿轉換結果:

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
1
00:00:00,690 --> 00:00:05,969
台江國家公園是2009年的12月28號成立

2
00:00:05,969 --> 00:00:11,269
它是一個以濕地為主的一個國家公園

3
00:00:11,269 --> 00:00:13,710
有紀錄的鳥類將近300種

4
00:00:13,710 --> 00:00:16,710
當然最主要是水鳥

5
00:00:16,710 --> 00:00:20,789
當然包括雁鴨類或鷺鷥類

6
00:00:20,789 --> 00:00:22,269
當然還有黑面琵鷺

7
00:00:22,269 --> 00:00:26,429
我們全世界黑面琵鷺大概有3000多隻

8
00:00:26,429 --> 00:00:30,589
可是來台灣去年已經超過了2000隻

9
00:00:30,589 --> 00:00:36,149
當中的90%是在我們曾文溪口

10
00:00:36,149 --> 00:00:45,530
在我們來的第二年數量大概減少了四五百隻

11
00:00:45,530 --> 00:00:52,130
我們推斷的原因可能是它度冬期間的食物來源不足

12
00:00:52,130 --> 00:00:56,130
所以我們提倡淺坪式的魚塭

13
00:00:56,130 --> 00:00:57,350
為什麼要淺坪呢

14
00:00:57,350 --> 00:01:00,990
就是水深大概是一公尺以內

15
00:01:00,990 --> 00:01:04,549
陽光照射到魚塭裡面它會自然的

16
00:01:04,549 --> 00:01:06,549
產生藻類

17
00:01:06,549 --> 00:01:09,549
再適時的加以一些飼料

18
00:01:09,549 --> 00:01:11,549
虱目魚就可以長得很好

19
00:01:11,549 --> 00:01:16,549
所以虱目魚在一般四月份開始養殖

20
00:01:16,549 --> 00:01:18,549
一直到十月份收成

21
00:01:18,549 --> 00:01:22,549
以後還有一些小魚小蝦它要洩水

22
00:01:22,549 --> 00:01:27,549
這個地方就變成黑面琵鷺最喜歡的這個覓食場所

23
00:01:27,549 --> 00:01:30,549
也強調人用半年鳥用半年

24
00:01:30,549 --> 00:01:34,430
我們想到這樣子的方式去推動以後

25
00:01:34,430 --> 00:01:37,430
那也得到BirdLife International

26
00:01:37,430 --> 00:01:40,430
世界上最大的鳥類保育組織的認同

27
00:01:40,430 --> 00:01:44,430
來給我們頒授這個保育的成就獎

獨立轉換本地檔案

若不需透過 bat 檔下載影片,且已具備本地端音訊檔案,可直接執行下列指令進行字幕轉換:

1
python generate-srt.py [input.mp3] --model_size turbo --device cuda --task transcribe --compute_type float16

結論

將影音內容轉換為文字後,可以將這些文字逐字稿提交給大型語言模型(如 ChatGPT 或 Gemini)進行摘要、分析、或是重點整理。這個步驟能幫助我們在短時間內掌握影片的核心資訊,有效過濾冗長或離題的內容,大幅提升資訊獲取效率。

我在測試上發現 base 輸出內容蠻多不正確的,容易把專有名詞輸出錯誤,但丟給 GPT 分析統整是沒什麼大問題。而 turbo 與 large-v3 我個人覺得差不多,但 turbo 勝在轉換速度極快。所以日常使用上基本會以 turbo 為主。

最後分享兩台電腦,針對 18 分鐘影片轉換結果,一台使用 NVIDIA 的 GPU,另一台純 CPU 的時間比較供有需要的人參考。

硬體組態模型版本GPU 使用轉檔耗時
NVIDIA RTX 3060 Tibase01 分 16 秒
NVIDIA RTX 3060 Tilarge-v3-turbo01 分 42 秒
NVIDIA RTX 3060 Tilarge-v306 分 43 秒
AMD Ryzen 5 3500Xbase03 分 17 秒
AMD Ryzen 5 3500Xlarge-v3-turbo11 分 29 秒

參考文獻

  1. openai/whisper
  2. Speech to text - OpenAI API
  3. Word error rate
  4. SYSTRAN/faster-whisper
  5. m-bain/whisperX: WhisperX
主題 Stack 由 Jimmy 設計