Whisper AI 運作原理:完整指南
深入剖析 OpenAI 的開源語音辨識模型——從梅爾頻譜圖到 Transformer 解碼。
OpenWhispr
工程
目錄
Whisper 是 OpenAI 開發的自動語音辨識(ASR)模型。它於 2022 年 9 月發布,是一套通用語音辨識系統,以從網際網路蒐集的 68 萬小時多語言音訊資料訓練而成。Whisper 採用編碼器—解碼器 Transformer 架構,將音訊轉換為對數梅爾頻譜圖,透過神經網路編碼器處理,再以自迴歸方式解碼出文字 token。它支援 99 種語言的轉錄、翻譯成英文、語言辨識,以及時間戳預測——全部整合在單一統一模型中。與大多數商用 ASR 服務不同,Whisper 的權重在 MIT 授權下完全開源,催生出蓬勃發展的移植版本、最佳化方案與應用生態——其中包括 whisper.cpp,這個 C/C++ 實作讓 Whisper 得以實現即時、裝置端的語音辨識。
最後更新:2026 年 2 月 17 日。本文中的量化陳述均經過至少兩個原始來源交叉查證。
事實查核快照(雙重來源)
- Whisper 發布、訓練規模與授權: OpenAI 於 2022 年 9 月發布 Whisper,以 68 萬小時資料訓練,採用 MIT 授權。 arXiv 論文 · OpenAI Whisper 程式庫
- 任務範圍與語言支援: Whisper 支援轉錄、翻譯成英文、語言辨識,以及橫跨 99 種語言的時間戳 token。 Whisper 模型卡 · Whisper README
- 英文基準背景: 約 3% 的 WER 是在 LibriSpeech test-clean 上針對英文評估的基準數字,並非通用的真實世界錯誤率。 large-v2 模型卡 · 基準細節
- 近期模型更新: large-v3 在多種語言上的錯誤率低於 large-v2,而 turbo 則著重於更低延遲與更小的解碼器運算量。 large-v3 模型卡 · turbo 發布討論
- 與 OpenWhispr 的關聯: OpenWhispr 透過 whisper.cpp 使用 Whisper,在各桌面平台上提供本機、離線優先的口述聽寫。 whisper.cpp · OpenWhispr
Whisper 如何處理音訊
為什麼它對 OpenWhispr: 很重要
透過 whisper.cpp 在本地運作 — 原始音訊保留在裝置上。
模型大小控制速度/準確性的權衡。
相同的管線支援 macOS、Windows 和 Linux 之間的聽寫。
什麼是 Whisper?
Whisper 由 OpenAI 的 Alec Radford、Jong Wook Kim、Tao Xu、Greg Brockman、Christine McLeavey 與 Ilya Sutskever 在論文 《Robust Speech Recognition via Large-Scale Weak Supervision》中提出。程式碼與模型權重於 2022 年 9 月在 GitHub 上以 MIT 授權發布。
在 Whisper 之前,最先進的語音辨識系統通常以經過篩選、由人工標註的資料集訓練——往往侷限於特定語言、口音或領域。Whisper 打破了這種做法,改以一個龐大、多元的資料集進行訓練:68 萬小時的音訊,搭配從網際網路擷取的逐字稿。關鍵洞見在於,這種「弱監督」方法——使用不完美的、由機器生成或使用者上傳的逐字稿,而非人工標註的資料——能夠造就一個在語言、口音、背景噪音與專業術語上都具有卓越穩健性的模型。
成果是一個能處理多種語音任務的單一模型:轉錄(將語音轉成同一語言的文字)、翻譯(將任何語言的語音轉成英文)、語言辨識,以及帶時間戳的語音活動偵測。這種多任務能力透過一套指定要執行哪項任務的特殊 token,內建於模型架構之中。
Whisper 的開源發布意義重大。它讓高品質的 ASR 得以普及,使開發者、研究人員與企業都能使用一個足以與商用 API 匹敵的模型——不必按分鐘計費、不必把音訊送往雲端,也不必受制於特定廠商。這促成了 whisper.cpp、Faster Whisper 等工具,以及數十款以它們為基礎打造的應用——其中也包括 OpenWhispr。
架構深度解析
Whisper 採用編碼器—解碼器 Transformer 架構——這與原始 Transformer(Vaswani 等人,2017)以及許多機器翻譯系統背後的根本設計相同。編碼器處理音訊,解碼器生成文字。以下說明每個階段的運作方式。
音訊前處理
在進行任何神經網路處理之前,原始音訊會先轉換成一種稱為對數梅爾頻譜圖的聲音視覺化表示。流程如下:
- 音訊重新取樣至 16,000 Hz(16 kHz 單聲道)。
- 以 25 毫秒視窗搭配 10 毫秒位移(hop length)計算短時傅立葉轉換(STFT)。
- 頻譜被投影到 80 個梅爾頻率濾波器組(large-v3 為 128 個),透過以對數方式排列頻帶來近似人類聽覺感知。
- 套用對數縮放,產生最終的對數梅爾頻譜圖。
- 頻譜圖被切分為 30 秒區塊。短於 30 秒的音訊會以零填補;較長的音訊則以連續區塊處理。
成果是一個形狀為 (80, 3000) 的 2D 表示——80 個梅爾通道乘上 3,000 個時間步(以 10 毫秒位移計的 30 秒)。這類似於一張影像,編碼器處理它的方式也很像視覺模型處理像素資料。
編碼器
編碼器將梅爾頻譜圖轉換為一連串學習得來的音訊表示。它由以下部分組成:
- 兩個 1D 卷積層——第一個卷積的 kernel 大小為 3、padding 為 1,後接 GELU 激活。第二個卷積的 kernel 大小為 3、stride 為 2、padding 為 1,會將時間維度減半。這會把 3,000 個時間步下採樣為 1,500 個位置。
- 正弦位置嵌入——與解碼器不同,編碼器使用固定的正弦嵌入(非學習得來),用以編碼每個時間步的位置。
- Transformer 區塊——一疊標準的 Transformer 編碼器層,每層包含多頭自注意力與一個帶 GELU 激活的前饋網路,並透過殘差連接與層正規化相連。
輸出是一連串 1,500 個帶上下文的音訊特徵向量——每 20 毫秒輸入音訊對應一個——解碼器會在生成文字時對其進行注意力運算。
解碼器
解碼器以自迴歸方式生成文字 token——一次一個 token,每個 token 都以編碼後的音訊與所有先前生成的 token 為條件。它由以下部分組成:
- Token 嵌入層——將 token ID 轉換為密集向量表示。
- 學習得來的位置嵌入——與編碼器的正弦嵌入不同,解碼器使用與模型一同訓練的學習式位置嵌入。
- 帶交叉注意力的 Transformer 區塊——每個解碼器層有三個子層:遮罩式自注意力(避免模型看到未來的 token)、對編碼器輸出的交叉注意力(讓模型得以「聆聽」音訊),以及一個前饋網路。
最終的解碼器輸出會被投影到詞彙表上,以產生 token 機率。解碼策略包括貪婪搜尋、束搜尋,以及基於溫度的取樣。
特殊 Token 與多任務訓練
Whisper 透過一套巧妙的、充當指令的特殊 token 系統,以單一模型執行多項任務。解碼器輸入遵循一種結構化格式:
<|startoftranscript|> <|en|> <|transcribe|> <|notimestamps|> Hello, how are you today? <|endoftext|><|startoftranscript|>——標示輸出序列的開始。<|en|>——指定語言(99 個語言 token 之一)。可自動偵測或手動設定。<|transcribe|>或<|translate|>——指定要以原始語言轉錄,還是翻譯成英文。<|notimestamps|>——控制是否產生時間戳 token。啟用時間戳時,模型會生成像這樣的時間偏移 token<|0.00|>與<|2.40|>,用以將文字對齊到音訊。
這種統一的 token 格式意味著單一模型就能執行轉錄、翻譯、語言偵測與帶時間戳的轉錄——全都不需要獨立的模型頭或微調。任務完全由提供給解碼器的 token 序列決定。
訓練資料
原始的 Whisper 模型(從 tiny 到 large-v2)以 68 萬小時的音訊搭配從網際網路蒐集的逐字稿訓練而成。這個資料集並未公開。其關鍵特性在於屬於弱監督——逐字稿標註並未經人工標註者逐一核實,而是來自字幕、隱藏式字幕以及其他與音訊配對的使用者生成文字等來源。
資料組成
根據官方模型卡,這 68 萬小時的訓練集細分如下:
| 類別 | 小時數 | 占比 | 說明 |
|---|---|---|---|
| 英文 ASR | 438,000 | 65% | 英文音訊搭配英文逐字稿 |
| 翻譯(X 轉英文) | 126,000 | 18% | 非英文音訊搭配英文逐字稿 |
| 多語言 ASR | 117,000 | 17% | 非英文音訊搭配母語逐字稿(涵蓋 98 種語言) |
嚴重的英文偏重(占訓練資料 65%)解釋了為何 Whisper 在英文上的表現明顯優於資源較少的語言。至於 2023 年 11 月發布的 large-v3 模型,OpenAI 將訓練集擴充至 100 萬小時的弱標註音訊,外加額外 400 萬小時的偽標註音訊——後者是透過讓 Whisper large-v2 處理未標註資料所生成,屬於一種自我訓練或知識蒸餾。
為何「弱監督」很重要
大多數早期的 ASR 系統以 LibriSpeech(960 小時)或 Common Voice(每種語言數千小時)這類資料集訓練——都是經過細心篩選、人工核實的資料集。Whisper 的做法是以標註品質換取單純的規模:68 萬小時,相對於傳統系統使用的數百到數千小時。論文證明這種取捨是值得的。來自網際網路的資料多元性,賦予 Whisper 對真實世界條件的卓越穩健性:背景噪音、重疊語音、口音、特定領域詞彙,以及那些會難倒以錄音室品質朗讀語音訓練之模型的聲學環境。
然而,弱監督也帶來一個已知限制:幻覺。由於訓練逐字稿並不完美,模型有時會生成聽起來合理、但實際上根本沒人說過的文字——尤其是在靜默或非常安靜的段落。這是這種方法固有的取捨,至今仍是積極改進的領域。
模型尺寸
Whisper 提供多種尺寸,參數量從 3,900 萬到 15.5 億不等。較小的模型速度較快但準確度較低;較大的模型準確度較高,但需要更多運算與記憶體。.en 變體是純英文模型,對英文的表現往往較佳,尤其在較小的尺寸上更為明顯。large 模型沒有純英文變體。
| 模型 | 參數量 | 純英文 | VRAM | 相對速度 |
|---|---|---|---|---|
| tiny | 39 M | tiny.en | ~1 GB | ~10x |
| base | 74 M | base.en | ~1 GB | ~7x |
| small | 244 M | small.en | ~2 GB | ~4x |
| medium | 769 M | medium.en | ~5 GB | ~2x |
| large (v1, v2, v3) | 1,550 M | -- | ~10 GB | 1x |
| turbo (large-v3-turbo) | 809 M | -- | ~6 GB | ~8x |
速度相對於 large 模型而言。VRAM 需求為透過原始 Python 實作、以 fp16 精度進行 GPU 推論時的數值。whisper.cpp 使用的記憶體大幅減少(例如 large 模型只需約 3.9 GB RAM,而非約 10 GB VRAM)。
turbo 模型(2024 年 10 月發布)是 large-v3 的蒸餾版本,搭配大幅縮小的解碼器。它保留了 large-v3 的大部分準確度,同時執行速度約快 8 倍——使其在重視速度時成為絕佳選擇。請注意,turbo 不支援翻譯任務。
large 模型歷經三次迭代:large-v1(2022 年 9 月)、large-v2(2022 年 12 月)與 large-v3(2023 年 11 月)。每個版本都提升了準確度,large-v3 將梅爾頻率分箱從 80 增至 128,並以大得多的資料集訓練。若想詳細了解各尺寸的差異與如何選擇,請參閱我們的Whisper 模型尺寸指南。
Whisper 的準確度如何?
Whisper 的準確度通常以詞錯誤率(WER)衡量——即被錯誤轉錄的字詞百分比(插入、刪除與替換的總和)。WER 越低越好。
英文基準
在 LibriSpeech test-clean——最廣泛使用的英文 ASR 基準,由有聲書中乾淨的朗讀語音組成——上,Whisper large-v2 達到約 3.0% 的 WER[1][2]。這足以與商用 ASR 系統及專門訓練的模型匹敵,不過在 LibriSpeech 上微調過的特化模型,在該特定基準上可以達到更低的 WER。Whisper 的優勢不在於攻克狹隘的基準,而在於穩健性——在各種真實世界條件下都能維持穩定的優異表現。
large-v3 的改進
根據 OpenAI 的評估,在 Common Voice 15 與 Fleurs 評估資料集上錯誤率低於 60% 的語言中,Whisper large-v3 相較於 large-v2 展現出 10–20% 的錯誤率降幅[2][3]。這些改進在非英文語言上尤其顯著,擴充後的訓練資料(共 500 萬小時)在那裡帶來最大的差異。
Whisper 的比較定位(2026 年 2 月)
自 Whisper 發布以來,較新的開源 ASR 模型已在乾淨語音基準上超越它。NVIDIA 的 Parakeet TDT(0.6B 參數)在 LibriSpeech test-clean 上達到 1.69% 的 WER,其 Canary 模型則達到 1.6% 的 WER——兩者都明顯低於 Whisper large-v3 的約 2.7%。不過,由於生態成熟、語言涵蓋廣泛,以及像 whisper.cpp 這類最佳化執行環境的存在,Whisper 仍是部署最廣泛的開源 ASR 模型。
詞錯誤率:Whisper 與開源競爭對手
LibriSpeech test-clean(英文朗讀演講)-越低越好
來源:Hugging Face 模型卡、NVIDIA 模型卡、Open ASR Leaderboard (Feb 2026)。僅限純英語朗讀語音 - 現實世界的準確性因音訊品質、口音和領域而異。商業 API 被省略,因為它們不會發布 LibriSpeech 基準。
註:商用雲端 API(Deepgram Nova-3、Google Chirp、AssemblyAI Universal-2)並未公布 LibriSpeech 的 WER 數字,因此無法在本圖表中直接比較。它們的基準採用專有的真實世界測試集。OpenAI 也於 2025 年 3 月發布了 GPT-4o-transcribe,作為僅供 API 使用的模型(非開源、非以 Whisper 為基礎),據稱錯誤率更低——但它僅限雲端,無法用於本機推論。
Whisper 的強項
- +對口音與方言的穩健性 ——以多元的網際網路音訊訓練,Whisper 在處理區域口音上勝過以朗讀語音訓練的系統。
- +對背景噪音的容忍度 ——即使在有音樂、其他說話者或環境噪音的情況下,模型仍能維持合理的準確度。
- +專業術語 ——得益於訓練資料的廣度,Whisper 在處理特定領域術語(醫療、法律、技術)上勝過許多通用 ASR 系統。
- +多語言能力 ——單一模型即支援 99 種語言,無需逐語言微調。
Whisper 的弱項
- -幻覺 ——最常被提及的問題。在靜默或非常安靜的段落,Whisper 可能生成從未被說出的文字。這是弱監督訓練方法的後果。
- -低資源語言 ——訓練資料稀少的語言(68 萬小時中大部分是英文)錯誤率明顯較高。
- -重複文字生成 ——自迴歸解碼器可能「卡」在迴圈中,反覆產生相同的短語。搭配特定參數的束搜尋可以緩解,但無法完全消除這個問題。
- -預設不支援即時處理 ——Whisper 處理 30 秒區塊,因此存在固有延遲。串流解決方案(如 whisper.cpp 的即時模式)能繞過這點,但會增加複雜度。
whisper.cpp 與本機推論
原始的 Whisper 實作需要 Python、PyTorch 與一張支援 CUDA 的 GPU 才能有合理效能。這使它在桌面應用、行動裝置與邊緣部署上難以實用。由 Georgi Gerganov 打造的 whisper.cpp 解決了這個問題。
whisper.cpp 是以純 C/C++、零相依套件對 Whisper 推論的完整重新實作。它讀取相同的模型權重,但無需 Python、無需 PyTorch,也無需 GPU 即可執行(不過有 GPU 會大幅受益)。主要特色包括:
- 零執行期記憶體配置 ——所有記憶體都預先配置,使效能可預測,並適合嵌入式系統。
- Apple Silicon 最佳化 ——在搭載 M 系列晶片的 Mac 上,編碼器可透過 Core ML 在 Apple Neural Engine 上執行,相較於純 CPU 執行可帶來超過 3 倍的推論加速。同時也支援 Metal GPU 加速以進行完整的 GPU 推論。
- 量化支援 ——模型可量化為 4-bit、5-bit 或 8-bit 整數精度,在準確度損失極小的情況下大幅降低記憶體用量並提升速度。
- GPU 加速 ——支援 NVIDIA CUDA(透過 cuBLAS)、Vulkan(跨廠商)、OpenVINO(Intel),以及用於 CPU 加速的 OpenBLAS。
- 語音活動偵測(VAD) ——內建 VAD 以跳過靜默片段,同時提升速度與逐字稿品質。
記憶體需求(whisper.cpp)
| 模型 | 磁碟大小 | 所需 RAM |
|---|---|---|
| tiny | 75 MB | ~273 MB |
| base | 142 MB | ~388 MB |
| small | 466 MB | ~852 MB |
| medium | 1.5 GB | ~2.1 GB |
| large | 2.9 GB | ~3.9 GB |
whisper.cpp 可在 macOS(Intel 與 Apple Silicon)、Linux、Windows、iOS、Android、FreeBSD、Raspberry Pi 上執行,甚至能透過 WebAssembly 在瀏覽器中執行。它在一般消費級硬體上就能達到快於即時的轉錄——包括 Raspberry Pi 4 與 iPhone 13 這類小型裝置。
正是這種可攜性,讓本機、私密的語音辨識變得實用。像 OpenWhispr 這樣的應用,底層便採用 whisper.cpp 來提供完全在使用者裝置上執行的即時按鍵口述聽寫——音訊永遠不會離開這台機器。
Whisper 與其他 ASR 系統的比較
Whisper 存在於更廣闊的語音辨識系統版圖之中。以下是它與最常見替代方案的比較。
Google Cloud Speech-to-Text
Google 的雲端 ASR 服務。準確度極佳,尤其在英文上,並支援即時串流與說話者分離。主要差異在於:它是專有的、需要將音訊送往 Google 的伺服器,且按處理的音訊分鐘數計費。Whisper 在一般用途上提供相當的準確度、可在本機執行,且免費——但缺乏內建的串流與說話者分離。
Amazon Transcribe (AWS)
Amazon 的雲端 ASR,與 AWS 生態系緊密整合。提供醫療轉錄、通話分析與自訂詞彙。與 Google 有類似的取捨:依賴雲端、按分鐘計費,且為專有。對於需要離線運作、開源授權或不受廠商綁定的應用,Whisper 是更合適的選擇。
Mozilla DeepSpeech
Mozilla 基於百度 Deep Speech 研究打造的開源 ASR 引擎。它曾是最早的高品質開源 ASR 模型之一,但 Mozilla 已於 2021 年停止積極開發。Whisper 在準確度、多語言支援與社群動能上已實質取代 DeepSpeech。DeepSpeech 作為輕量、易於理解的基準仍有用處,但已不再推薦用於新專案。
Vosk
一套支援 20 多種語言、模型小巧而快速的開源離線語音辨識工具包。Vosk 非常適合資源受限的環境——其模型只有 Whisper 的一小部分大小,在低功耗硬體上也能順暢執行。代價在於準確度:Vosk 明顯不如 Whisper 準確,尤其是在帶口音的語音、嘈雜音訊與專業術語上。
Faster Whisper (CTranslate2)
使用 SYSTRAN 的 CTranslate2 推論引擎對 Whisper 的重新實作。它以相同的準確度執行相同的 Whisper 模型,但速度最高可達原始 OpenAI 實作的 4 倍,且記憶體用量更低。Faster Whisper 以 Python 為基礎(不同於 whisper.cpp 的 C/C++),是伺服器端批次轉錄的絕佳選擇。它支援 CUDA GPU,以及搭配 INT8 量化的 CPU 推論。
實際應用
Whisper 結合了準確度、多語言支援與開源可得性,使其成為各式各樣應用的支柱:
桌面口述聽寫
像 OpenWhispr 這樣的應用,運用 whisper.cpp 在 macOS、Windows 與 Linux 上提供系統層級的按鍵口述聽寫。音訊在本機處理——不會有任何內容送往雲端。
字幕生成
Whisper 的時間戳預測使其非常適合生成字幕與隱藏式字幕。stable-ts 與 auto-subtitle 等工具可自動化這套工作流程。
Podcast 與會議轉錄
Whisper 能妥善處理長篇音訊轉錄,尤其搭配分塊處理的方法時。許多 Podcast 編輯器與會議筆記工具都使用 Whisper(或 Faster Whisper)來批次轉錄錄音。
翻譯與在地化
Whisper 內建的翻譯能力(任何語言轉成英文)被用於跨語言內容取用、媒體在地化,以及即時翻譯原型。
無障礙
為失聰與聽障使用者提供即時字幕、為肢體障礙使用者提供語音介面,以及音訊描述的轉錄——這些都是 Whisper 正積極投入的領域。
資料標註與研究
研究人員使用 Whisper 來建立偽標註資料集以訓練其他模型——這正是 OpenAI 用來建立 large-v3 訓練資料的方法。它也被廣泛用於語言學研究與語料庫建置。
資料來源與延伸閱讀
- [論文] Radford, A., Kim, J. W., Xu, T., Brockman, G., McLeavey, C., & Sutskever, I. (2022). Robust Speech Recognition via Large-Scale Weak Supervision. arXiv:2212.04356. arxiv.org/abs/2212.04356
- [程式碼] OpenAI Whisper GitHub 程式庫。 github.com/openai/whisper
- [程式碼] whisper.cpp——Georgi Gerganov 的 C/C++ 移植版。 github.com/ggml-org/whisper.cpp
- [模型卡] Hugging Face 上的 Whisper large-v2(WER 基準:LibriSpeech test-clean 約 3.0%)。 huggingface.co/openai/whisper-large-v2
- [模型卡] Hugging Face 上的 Whisper large-v3(相較 v2 錯誤率降低 10–20%)。 huggingface.co/openai/whisper-large-v3
- [模型卡] Hugging Face 上的 Whisper large-v3-turbo(著重延遲的蒸餾變體)。 huggingface.co/openai/whisper-large-v3-turbo
- [模型卡] OpenAI Whisper 模型卡(訓練資料組成細項)。 github.com/openai/whisper/blob/main/model-card.md
- [發布說明] OpenAI large-v3 發布公告與評估說明。 github.com/openai/whisper/discussions/1762
- [發布說明] OpenAI turbo 發布討論與著重速度的取捨。 github.com/openai/whisper/discussions/2363
- [程式碼] Faster Whisper——SYSTRAN 基於 CTranslate2 的重新實作。 github.com/SYSTRAN/faster-whisper
- [產品] OpenWhispr 透過 whisper.cpp 使用 Whisper 來進行本機口述聽寫工作流程。 openwhispr.com
用 OpenWhispr 在本機體驗 Whisper
OpenWhispr 透過 whisper.cpp 使用 Whisper,在 macOS、Windows 與 Linux 上提供本機、私密的口述聽寫。按鍵即說、99 種以上語言、無需雲端。免費試用。
無需帳號 · 可離線運作 · 永遠開源