Mac 上的本機 Whisper:需要什麼、成本多少、怎麼執行

本機 Whisper,是指在你自己的 Mac 上執行 OpenAI 的 Whisper 語音模型,讓你的音訊在這台機器上變成文字,而不是在某處的伺服器上。在 Mac 上,要認識的引擎是 whisper.cpp,它把 Apple 晶片當作一等公民,而真正要做的決定是模型檔案:模型越大,聽得越準,佔用的磁碟空間和記憶體也越多。

這一頁談各部分怎麼組合、依 whisper.cpp 自己的數字,每種模型大小要花多少、自己執行的指令,以及 YapToText 在哪裡派上用場。YapToText 是我做的免費 App,它用 whisper.cpp 執行原版的 Whisper Large v3 Turbo (Q5) 檔案,所以請帶著這一點來評估那一段。如果你只是想知道 Mac 上有沒有 Whisper 的 App,Whisper Mac App 頁面回答了這個問題。

在 Mac App Store 下載 YapToText免費下載。不需要帳號,沒有鎖住的功能。需要搭載 Apple 晶片的 Mac 和 macOS 14 或以上版本。 原始碼在 GitHub 上。

本頁內容:12 個部分
  1. 步驟
  2. 認識本機 Whisper 的三個部分
  3. 依磁碟空間和記憶體選模型
  4. 用 whisper.cpp 自己執行 Whisper
    1. 步驟 1:取得程式碼和模型
    2. 步驟 2:建置並轉寫範例
    3. 步驟 3:先轉換你自己的音訊
    4. 或是使用 OpenAI 的 Python 套件
  5. 不用終端機,在 YapToText 用同一個模型
  6. 本機 Whisper 很慢或聽錯的時候
  7. 本機 Whisper 不會改變的事
  8. 重點整理
  9. 指南
  10. 更多指南(英文)
  11. 資料來源
  12. 常見問題

步驟

  1. 從 GitHub 複製 whisper.cpp 儲存庫,並在終端機裡打開它的檔案夾。
  2. 用專案的 download-ggml-model.sh 腳本下載模型,例如 large-v3-turbo-q5_0。
  3. 用 CMake 建置專案,使用它的 README 裡的兩條 cmake 指令。
  4. 把錄音轉換成 16 位元的 WAV 檔案,例如用 ffmpeg。
  5. 用你的模型檔案和 WAV 檔案執行 whisper-cli,在終端機裡讀取逐字稿。

認識本機 Whisper 的三個部分

本機 Whisper 有三個部分,而且三個都在你的 Mac 上。模型是一個檔案,引擎負責執行它,你的音訊完全不必離開這台機器。

  • 模型。Whisper 是 OpenAI 的語音辨識模型,OpenAI 以 MIT 授權釋出它的程式碼和模型權重。你只要下載一次模型檔案,由這個檔案負責聽。
  • 引擎。whisper.cpp 是 Whisper 的純 C 和 C++ 實作,同樣採用 MIT 授權。它的 README 稱 Apple 晶片為一等公民,透過 ARM NEON、Accelerate、Metal 和 Core ML 做了最佳化,並說在 Apple 晶片上,推論完全透過 Metal 在 GPU 上執行。OpenAI 自己的套件則是從 Python 執行 Whisper。
  • 你的音訊。錄音或你的麥克風輸入,文字輸出。只有一開始下載模型檔案時需要網際網路。

這就是它和雲端服務的差別:沒有任何內容為了轉寫而上傳。這也代表工作由你的 Mac 來做,所以你選的模型,決定了這份工作要佔用多少記憶體和磁碟空間。

App Store 海報,標題為 Nothing leaves your Mac,畫面上是 YapToText 的 AI Models 頁面,兩個模型都標示為 Included。
圖1. YapToText 裡同一行上的模型和引擎:來自 OpenAI 的 Whisper Large v3 Turbo (Q5),由 whisper.cpp 執行,574 MB,標示為 Included。

依磁碟空間和記憶體選模型

whisper.cpp 公布了每個模型在磁碟和記憶體中的用量,OpenAI 則公布了每個模型的參數數量。Turbo 是 OpenAI 的 large-v3 加速版,它的 5 位元檔案只佔 large 磁碟空間的約五分之一。

2026年10月3日,在 whisper.cpp 的 README 與模型列表,以及 OpenAI 的 Whisper README 中查證。

模型參數(OpenAI)磁碟上的檔案(whisper.cpp)記憶體(whisper.cpp)
tiny39 M75 MiB約 273 MB
base74 M142 MiB約 388 MB
small244 M466 MiB約 852 MB
medium769 M1.5 GiB約 2.1 GB
large(v1、v2 或 v3)1550 M2.9 GiB約 3.9 GB
large-v3,5 位元 (q5_0)量化的 large-v31.1 GiB未列出
large-v3-turbo809 M1.5 GiB未列出
large-v3-turbo,5 位元 (q5_0)量化的 turbo547 MiB未列出

MiB 和 GiB 以 1,024 為單位進位,所以 whisper.cpp 列表裡 547 MiB 的 turbo 檔案,和 YapToText 顯示為 574 MB 的是同一個檔案。這就是兩個誠實的頁面為什麼可以把同一個檔案分別寫成 547 和 574,而且兩個都對。whisper.cpp 的記憶體表只涵蓋原本的五種大小,沒有提供 turbo 或量化檔案的數字。

YapToText 的 AI Models 頁面:Whisper Large v3 Turbo (Q5) 和 Phi-3.5 Mini Instruct 標示為 Included,下方是模型庫。
圖2. YapToText 以 MB 顯示大小,所以 whisper.cpp 列為 547 MiB 的 turbo 檔案,在這裡顯示為 574 MB,其他 Whisper 模型列在下方。

兩個專案還有幾點補充:

  • 英文專用模型。tiny、base、small 和 medium 也有大小相同、只聽英文的 .en 檔案。OpenAI 說它們對英文往往表現較好,尤其是 tiny.en 和 base.en,到了 small.en 和 medium.en 差距就縮小了。
  • 量化模型。以 q5_0 結尾的檔案是量化過的。whisper.cpp 說量化模型需要的記憶體和磁碟空間較少,視硬體而定,處理起來可能更有效率。
  • Turbo。OpenAI 稱它是 large-v3 的最佳化版本,轉寫更快,準確度只有極小的下降,並評估它的速度約為 large 的 8 倍。這個比例是在 A100 上測得的,不是在 Mac 上,OpenAI 也說 turbo 沒有針對翻譯訓練。
  • 語言。OpenAI 說 Whisper 的表現因語言而有很大的差異。
  • OpenAI 的記憶體欄。OpenAI 的 README 列的是它的 Python 套件所需的 VRAM:tiny 和 base 約 1 GB,turbo 約 6 GB,large 約 10 GB。這些不是 whisper.cpp 的數字。

我替 YapToText 選了 5 位元的 turbo 檔案,因為用我自己的聽寫來試,它聽到的內容和完整模型幾乎一模一樣,而記憶體只要三分之一。那只是一個人的聽寫,不是基準測試,所以在定案之前,請用你自己的聲音試兩種大小。

用 whisper.cpp 自己執行 Whisper

自己執行 whisper.cpp,需要終端機,以及它的 README 的指令預設已有的兩個工具:Git 和 CMake。下面是 README 自己的指令,只是把模型換成 5 位元的 turbo 檔案。你得到的是在終端機裡的音訊檔案逐字稿,不是輸入到你各個 App 裡的文字。

步驟 1:取得程式碼和模型

終端機:複製 whisper.cpp,並下載 5 位元的 turbo 模型。

git clone https://github.com/ggml-org/whisper.cpp.git
cd whisper.cpp
sh ./models/download-ggml-model.sh large-v3-turbo-q5_0

結果:專案會放進 whisper.cpp 檔案夾,腳本會從 Hugging Face 把 ggml-large-v3-turbo-q5_0.bin 下載到它的 models 檔案夾。想下載小一點的,可以換成 base.en 或 small。

步驟 2:建置並轉寫範例

終端機:建置 whisper-cli,再對專案附帶的範例錄音執行它。

cmake -B build
cmake --build build -j --config Release
./build/bin/whisper-cli -m models/ggml-large-v3-turbo-q5_0.bin -f samples/jfk.wav

結果:CMake 建置專案,whisper-cli 用你下載的模型轉寫範例,並把文字顯示在終端機裡。

步驟 3:先轉換你自己的音訊

README 說 whisper-cli 目前只能處理 16 位元的 WAV 檔案,並提供了一條 ffmpeg 指令,用來轉換其他格式。ffmpeg 要另外安裝。

終端機:把 MP3 轉成 whisper-cli 讀得懂的 WAV 格式。

ffmpeg -i input.mp3 -ar 16000 -ac 1 -c:a pcm_s16le output.wav

結果:ffmpeg 把 output.wav 寫成 16 kHz、單聲道、16 位元的音訊,接著你把它放在 -f 後面交給 whisper-cli。

或是使用 OpenAI 的 Python 套件

終端機:如果你比較想用 Python,就安裝 OpenAI 自己的套件。

pip install -U openai-whisper

結果:pip 會安裝 whisper 指令。OpenAI 的 README 說,這段程式碼預期可以在 Python 3.8 到 3.11 上執行,它需要 ffmpeg,預設模型是 turbo。

要做即時語音,whisper.cpp 附有 whisper-stream,它每半秒取樣一次你的麥克風,並持續轉寫。它需要 SDL2,README 稱它是一個簡單的範例。把文字送進 Mail、Slack 或你的編輯器,則是 App 多出來的那一部分。

不用終端機,在 YapToText 用同一個模型

YapToText 執行的是同一個引擎和同一個檔案,不需要終端機視窗:App 內建一份用 Metal 和 Accelerate 建置的 whisper.cpp,ggml-large-v3-turbo-q5_0.bin 就在 App Store 的下載內容裡。它的 SHA-256 和 Hugging Face 上的檔案相同,所以是原版模型,不是自訂調校或重新訓練過的。我做這款 App,是因為我的手打字有困難,我想要 Whisper 把文字輸入到每一個 App,而不是印在終端機視窗裡。它就是腳本下載的那個檔案,改變的是它周圍的一切。

App Store 海報,標題為 Yap it. Bam. It's typed.,畫面上有 YapToText 的 Home 視窗和三種浮動面板版面。
圖3. 同一個 Whisper 檔案,不用終端機:你說話時,文字在浮動面板裡成形,然後落到最前面那個 App 的游標位置。

App 在模型周圍加了這些東西:

  • 會還給系統的記憶體。在 Energy 頁面,Keep models in memory 決定模型在聽寫之後保持載入多久:預設是使用後 2 分鐘,選項從 Only while dictating 到 Until quit。早一點卸載可以省電和省記憶體,卸載之後的下一次聽寫會多花幾秒。
  • 留給 macOS 的空間。當 macOS 的記憶體不足時,YapToText 會立刻卸載它載入的模型,並等五分鐘才再次預熱。
  • 用電池時換較輕的模型。Switch models with the power source 預設是關閉的,開啟後,聽寫模型和整理模型各有一個插電時和一個用電池時的選擇。
  • 你自己的檔案。在 AI Models 頁面的 Your own models 底下,Add Model 接受任何 whisper.cpp 的 GGML .bin,所以你用腳本下載的模型也可以。App 會讀取檔案來判斷它是什麼,其他的就拒絕。
  • 你的 Mac 的數字。Energy 頁面上的 This Mac 卡片會顯示你的晶片和記憶體,這就是拿來對照上面那張表的數字。

AI Models 頁面的 Dictation Model Library 還有十個 Whisper 模型,從 Tiny 到 Large v3,每個都有 App 顯示的大小。AI 模型指南列出了它們,節能指南說明記憶體設定。App Store 的下載大小約為 2.9 GB,因為 App 的兩個模型都包含在內。Homebrew 版本約 12 MB,第一次聽寫之前需要先下載語音模型。

本機 Whisper 很慢或聽錯的時候

在下載更大的模型之前,先試試省事的解決方法。先修好麥克風和用詞,再換模型。

  1. 等第一次執行完。模型要先載入才能轉寫。在 YapToText 裡,啟動後的第一次聽寫會花一點時間。如果你用 Core ML 建置了 whisper.cpp,它的 README 說,在裝置上第一次執行時會比較慢,因為 Neural Engine 服務要先編譯模型。
  2. 設定你說的語言。YapToText 在 AI Models 頁面的 Language 選擇器一開始是 Mac 的系統語言,Whisper 不能用的語言會退回自動偵測。語言頁面列出全部 29 種。
  3. 修好麥克風。藍牙麥克風只有電話等級的音質,所以 Mac 自己的麥克風聽得更清楚。在 YapToText 裡,從選單列面板的 Input 選擇器選它。
  4. 教它你的用語。YapToText 的 Dictionaries 頁面不只修正它輸入的文字,還會用你的名字和專有名詞預先提示 Whisper。字典指南說明了做法。
  5. 說英文就用英文專用模型。如果記憶體吃緊,而且你只說英文,OpenAI 說 .en 版本往往表現較好,最明顯的是 tiny 和 base。
  6. 改變模型大小。聽錯而且記憶體夠用,就換大一點的,太慢就換小一點的。在 YapToText 裡,AI Models 頁面的星等顯示兩者的取捨,History 裡的每次聽寫也有自己從停止到出現文字的時間。
YapToText 的一筆 History 記錄,展開處理細節:原始逐字稿、整理後的逐字稿、模式、傳送方式、目標 App 和耗時。
圖4. History 裡的每次聽寫都有自己的耗時:你說了多久,以及從停止到出現文字的時間,分成轉寫、AI 整理和傳送。

本機 Whisper 不會改變的事

在本機執行 Whisper,是把工作搬到你的 Mac 上,也僅止於此。本機改變的是你的聲音去哪裡,不是聽得有多準。

  • 錯誤。不管在哪裡執行,聽得多準都由模型決定,所以聽錯的名字需要字典項目或更好的麥克風,不是換個執行的地方。
  • 翻譯。OpenAI 說 turbo 沒有針對翻譯訓練,而 YapToText 只會要求 Whisper 轉寫,從不要求它翻譯。
  • 一次下載。本機模型還是要下載一次。whisper.cpp 的腳本從 Hugging Face 取得,YapToText 的 App Store 版本已經內建,Homebrew 版本則從 AI Models 頁面取得。
  • Intel Mac。whisper.cpp 列出支援 Intel 和 Arm 的 Mac。YapToText 需要 Apple 晶片和 macOS 14 或以上版本,我不對 Intel Mac 作任何說明。
  • 準確度數字。我不公布任何模型的準確度百分比。星等和你自己的 History 才是依據。

要證明一個設定真的在本機執行,離線聽寫頁面有一個一分鐘的測試:關掉 Wi-Fi 再聽寫。

重點整理

  • 本機 Whisper。它是你 Mac 上的一個模型檔案加一個引擎,不上傳任何內容。
  • 模型。5 位元的 turbo 檔案,在 whisper.cpp 的列表裡是 547 MiB,也是 YapToText 內附的那個。
  • 自己動手。複製 whisper.cpp,下載模型,用 CMake 建置,再對 16 位元的 WAV 檔案執行 whisper-cli。
  • 或是跳過終端機。YapToText 執行同一個檔案,並且免費把文字輸入到任何 App。

先依你 Mac 的記憶體選模型,再依你自己的聲音選。如果這裡的內容和你看到的不一樣,請在 GitHub 上提交 issue。每一則我都會看。

在 Mac App Store 下載 YapToText免費下載。不需要帳號,沒有鎖住的功能。需要搭載 Apple 晶片的 Mac 和 macOS 14 或以上版本。 原始碼在 GitHub 上。

關於作者。 Ryleigh Newman 從事軟體開發,用手打字有困難,每天都用本站介紹的 YapToText 聽寫。本頁譯自英文。App 的介面和網站的其他頁面是英文的。 進一步瞭解這個專案(英文)。

指南

更多指南(英文)

資料來源

常見問題

怎麼在 Mac 上本機執行 Whisper?

用 whisper.cpp:複製儲存庫,用它的 download-ggml-model.sh 腳本下載模型,用 CMake 建置,再對 16 位元的 WAV 檔案執行 whisper-cli。也可以安裝內建它的 App,例如 YapToText,它不用任何設定就能執行 Whisper Large v3 Turbo。

Whisper 需要多少記憶體?

要看模型。whisper.cpp 列出 tiny 約 273 MB、small 約 852 MB、medium 約 2.1 GB、large 約 3.9 GB,並說量化模型需要的更少。它沒有提供 turbo 的記憶體數字。

最好的本機 Whisper 模型是哪一個?

我會從 Large v3 Turbo 開始,它的 5 位元檔案就是 YapToText 內附的那個:在 whisper.cpp 的列表裡是 547 MiB。如果記憶體吃緊,small 或 base 的用量少得多,OpenAI 也說在最小的幾種大小,英文專用版本對英文往往表現較好。

Whisper Large v3 Turbo 模型有多大?

在 whisper.cpp 的模型列表裡是 1.5 GiB,5 位元的 q5_0 檔案則是 547 MiB,以十進位單位計算是 574 MB。OpenAI 列出 turbo 的參數為 8.09 億個。

本機 Whisper 需要網路嗎?

只有下載模型的那一次。之後,whisper.cpp 和 YapToText 不需要連線就能轉寫,YapToText 的 App Store 版本更是內附模型,連那次下載都省了。

可以在 YapToText 裡使用 whisper.cpp 的模型嗎?

可以。在 AI Models 頁面的 Your own models 底下,Add Model 接受任何 whisper.cpp 的 GGML .bin 檔案,App 會從檔案本身判斷它是什麼。