---
# System prepended metadata

title: 在 macOS 上安裝使用 Whisper.cpp 完整指南
tags: [' macos', ' audio-transcription', ' speech-recognition', whisper, ' openai', ' cpp']

---

---
title: 在 macOS 上安裝使用 Whisper.cpp 完整指南
description: 實作 OpenAI Whisper 語音識別模型的 C++ 版本，支援即時麥克風辨識和多語言（含中文）轉錄
tags: whisper, openai, audio-transcription, speech-recognition, cpp, macos
image: https://i.imgur.com/EKlSBgc.png
lang: zh-tw
---

# 在 macOS 上安裝使用 Whisper.cpp 完整指南

:::info
**📄 文件說明**：本文檔詳細介紹如何在 macOS 系統上安裝、編譯和使用 Whisper.cpp 進行即時語音辨識，支援中文（繁體/簡體）。最後更新：2025年5月
:::

[TOC]

## 📚 簡介

[whisper.cpp](https://github.com/ggerganov/whisper.cpp) 是 OpenAI [Whisper](https://openai.com/research/whisper) 語音識別模型的 C/C++ 實作版本，與原版 Python 相比，具有以下優點：

- 🚀 **更快速**：C++ 實作使推理速度提升 4-5 倍
- 💻 **更輕量**：不需要 Python、PyTorch 或大型 ML 框架
- 📱 **更便攜**：可在多種裝置上運行，包括 CPU 和 GPU 支援

### 主要功能

- ✓ 即時麥克風語音辨識
- ✓ 支援多國語言（含繁體/簡體中文）
- ✓ 高精度語音轉錄
- ✓ 低延遲和高效能
- ✓ 語音活動偵測（VAD）整合
- ✓ 時間戳標記（定位詞語時間點）
- ✓ 輸出多種格式（文字、SRT、VTT 字幕）
- ✓ 支援 Apple Silicon 原生加速

## 🛠️ 環境設置

### 系統需求

- macOS 10.15 (Catalina) 或更新版本
- 4GB+ RAM（建議 8GB+）
- 支援 Intel 和 Apple Silicon (M1/M2/M3) 晶片

## 💨 快速安裝方法 (2025年最新)

### 使用 Homebrew 一鍵安裝 (最簡單)

2025年，Whisper.cpp 已正式提供 Homebrew 安裝套件，這是最簡單的安裝方法：

```bash
# 安裝 Whisper.cpp 和依賴的 ffmpeg
brew install whisper-cpp ffmpeg
```

:::tip
**提示**：這種方法適合快速入門，但功能相對有限。若需要最大化效能或啟用進階功能（如 Metal 加速），建議從源碼編譯安裝。
:::

### 檢查安裝版本

安裝後，您可以檢查 Whisper.cpp 的版本：

```bash
whisper-cpp --version
```

目前最新穩定版本為 v1.7.2（截至2025年5月）。

## 🎤 安裝 SDL2 音訊處理函式庫

whisper.cpp 的即時轉錄功能依賴 SDL2 來擷取麥克風音訊。

在終端機中執行以下命令安裝 SDL2：

```bash
brew install sdl2
```

## 📥 從源碼編譯安裝 (進階選項)

### 1. 複製專案

```bash
git clone https://github.com/ggerganov/whisper.cpp.git
cd whisper.cpp

# 切換到最新穩定版本（目前為v1.7.2）
git checkout -b v1.7.2 v1.7.2
```

### 2. 啟用 Metal 和 Core ML 加速 (Apple Silicon 專用)

對於 M1/M2/M3 芯片的 Mac，可以啟用 Metal 和 Core ML 加速以獲得最佳效能：

```bash
# 使用 Metal 加速（Apple Silicon 優化）
cmake -B build -DWHISPER_METAL=ON -DWHISPER_SDL2=ON
```

或者也可以啟用 Core ML：

```bash
# 使用 Core ML 加速
cmake -B build -DWHISPER_COREML=ON -DWHISPER_SDL2=ON
```

### 3. 標準編譯（適用於所有 Mac）

如果不需要特殊加速，可以使用標準編譯：

```bash
cmake -B build -DWHISPER_SDL2=ON
cmake --build build --config Release
```

編譯完成後，whisper-stream 可執行檔將位於 `build/bin/` 目錄中。

## 🔎 模型選擇與下載

Whisper 提供多種不同大小和精確度的模型。對於中文語音辨識，建議使用多語言模型，而非僅限英文的 `*.en` 模型。

### 模型對照表 (2025年更新)

| 模型名稱 | 檔案大小 | 記憶體需求 | 相對速度 | 準確度 | 中文支援 | 備註 |
|---------|--------|-----------|---------|-------|---------|------|
| tiny    | ~75MB  | ~390MB    | 最快     | 最低   | ✅ 基本支援 | 適合極度受限的裝置 |
| base    | ~142MB | ~500MB    | 快       | 較低   | ✅ 支援   | 適合一般對話 |
| small   | ~466MB | ~1.0GB    | 中等     | 中等   | ✅ 良好支援 | 平衡速度和準確度 |
| medium  | ~1.5GB | ~2.6GB    | 較慢     | 較高   | ✅ 優良支援 | 適合專業轉錄 |
| large-v3 | ~3.1GB | ~5.0GB   | 慢       | 最高   | ✅ 最佳支援 | 最高準確度 |
| large-v3-turbo | ~3.0GB | ~4.8GB | 中等 | 較高 | ✅ 最佳支援 | **新**: 平衡速度與準確度 |

:::warning
**注意**：
- 帶有 `-q5_0` 或 `-q8_0` 後綴的模型是量化版本，犧牲少量準確度來換取更快的速度和更小的檔案大小
- 帶有 `-turbo` 後綴的模型是2024年新增的平衡型模型，提供更好的效能和精確度平衡
:::

### Apple Silicon 專用模型

對於 M1/M2/M3 芯片的 Mac，可以使用專為 Apple Silicon 優化的模型版本：

```bash
# 下載 Apple Silicon 優化版 large-v3 模型
./models/download-ggml-model.sh large-v3-applesilicon
```

### 一般模型下載

使用內建的下載腳本取得所需模型：

```bash
# 下載 base 多語言模型（支援中文，較小）
./models/download-ggml-model.sh base

# 或下載量化版 large-v3 模型（最佳中文支援，速度較快）
./models/download-ggml-model.sh large-v3-q5_0

# 或下載新的 turbo 模型（平衡速度與準確度）
./models/download-ggml-model.sh large-v3-turbo

# 或下載完整 large-v3 模型（最佳準確度，但較慢）
./models/download-ggml-model.sh large-v3
```

:::info
**提示**：下載時請使用模型名稱（如 `large-v3`），而非檔案名稱（如 `ggml-large-v3.bin`）。
:::

## 🎧 音訊格式處理

Whisper.cpp 最佳支援 16kHz、16-bit 單聲道 WAV 格式。如果您的音訊檔案是其他格式，需要先進行轉換。

### 使用 ffmpeg 轉換音訊

```bash
# 將任何音訊檔案轉換為 Whisper 最佳支援格式
ffmpeg -i 輸入檔案.mp3 -ar 16000 -ac 1 -c:a pcm_s16le 輸出檔案.wav
```

### 從影片提取音訊

```bash
# 從影片提取音訊並轉換為適合的格式
ffmpeg -i 影片檔案.mp4 -ar 16000 -ac 1 -c:a pcm_s16le 輸出檔案.wav
```

## 🚀 執行即時語音轉錄

### 中文語音辨識（即時麥克風輸入）

```bash
# Homebrew 安裝版本的執行方式
whisper-cpp \
  --model ~/tools/ggml-large-v3-turbo.bin \
  --language zh \
  --threads 4 \
  --step 500 \
  --length 5000 \
  --vad-thold 0.6 \
  --print-colors \
  --split-on-word \
  --max-len 65

# 或使用源碼編譯版本的執行方式
./build/bin/whisper-stream \
  -m models/ggml-large-v3-q5_0.bin \
  -l zh \
  -t 4 \
  --step 500 \
  --length 5000 \
  --keep 200 \
  --vad-thold 0.6 \
  --freq-thold 100.0 \
  -ps \
  -kc \
  -f whisper_output.txt
```

### 2025年新增實用參數

| 參數 | 說明 |
|-----|------|
| `--split-on-word` | 在單詞邊界分割文本，避免單詞被截斷 |
| `--print-colors` | 使用彩色輸出，提高可讀性 |
| `--max-len <n>` | 設定每行最大字元數，適合字幕製作 |
| `--no-timestamps` | 關閉時間戳記輸出 |
| `--output-vtt` | 輸出 WebVTT 格式字幕 |
| `--output-srt` | 輸出 SRT 格式字幕 |

### 原有參數說明

| 參數 | 說明 |
|-----|------|
| `-m` | 模型檔案路徑 |
| `-l zh` | 語言設定為中文（支援繁體/簡體） |
| `-t 4` | 使用 4 個執行緒 |
| `--step 500` | 每 500ms 擷取語音進行分析 |
| `--length 5000` | 每輪處理 5 秒音訊 |
| `--keep 200` | 保留前一段 200ms 防止語音被截斷 |
| `--vad-thold 0.6` | 語音活動偵測門檻，0.5~0.8 間調整 |
| `--freq-thold 100.0` | 高通濾波，消除背景低頻雜訊 |
| `-ps` | 顯示特殊 tokens，如 [NOISE] |
| `-kc` | 保留語境，可提升對話連貫性 |
| `-f whisper_output.txt` | 將輸出儲存至文字檔 |

:::tip
**最佳化提示**：若模型辨識結果出現重複詞彙循環，可以：
1. 降低 `--keep` 值至 100ms
2. 不使用 `-kc` 參數
3. 增加 `--step` 間隔時間至 1000ms
4. 考慮使用未量化的完整模型
:::

## 📊 效能參考數據 (2025年)

以下是在不同 Apple 裝置上處理 10 分鐘中文音訊的參考時間：

| 裝置 | 模型 | 處理時間 | 即時因子 |
|------|------|---------|--------|
| MacBook Pro M3 | large-v3-turbo | ~1.5 分鐘 | 6.7x |
| MacBook Pro M2 | large-v3-q5_0 | ~2 分鐘 | 5.0x |
| MacBook Air M1 | medium | ~1.8 分鐘 | 5.5x |
| Mac Mini Intel i5 | small | ~2.5 分鐘 | 4.0x |

*即時因子：處理時間與音訊長度的比率，越高越好*

## 📱 進階應用：集成到 iOS/macOS 應用

Whisper.cpp 2025年版本提供了 XCFramework 支援，方便開發者集成到自己的 iOS 和 macOS 應用中。

### 建立 XCFramework

```bash
# 在 whisper.cpp 目錄下
cd apple
./setup.sh
./build-xcframework.sh
```

這將在 `apple/framework/whisper.xcframework` 生成可直接集成到 Xcode 專案的框架。

### 在 Xcode 專案中使用

1. 將生成的 `whisper.xcframework` 拖曳到您的 Xcode 專案
2. 在 Build Phases > Link Binary With Libraries 中確認框架已加入
3. 在 Swift 或 Objective-C 代碼中引用 Whisper API

```swift
import whisper

// 初始化 Whisper 上下文
let context = whisper_init_from_file("path/to/model.bin")

// 使用 Whisper 進行轉錄
// ...

// 釋放資源
whisper_free(context)
```

## 📝 常用指令範例

### 建立便捷執行腳本

可以創建 `whisper-mic.sh` 腳本，方便日後執行：

```bash
#!/bin/bash
./build/bin/whisper-stream \
  -m models/ggml-large-v3-q5_0.bin \
  -l zh \
  -t 4 \
  --step 500 \
  --length 5000 \
  --keep 200 \
  --vad-thold 0.6 \
  --freq-thold 100.0 \
  -ps \
  -kc \
  -f whisper_output.txt
```

加上執行權限：

```bash
chmod +x whisper-mic.sh
```

### 處理音訊檔案（非即時）

使用 `whisper-cli` 工具處理預先錄製的音訊檔：

```bash
./build/bin/whisper-cli \
  -m models/ggml-large-v3-q5_0.bin \
  -f samples/zh.wav \
  -l zh \
  --output-txt \
  --output-srt
```

### 自動檢測語言

```bash
# 自動檢測音訊的語言
./build/bin/whisper-cli \
  -m models/ggml-large-v3.bin \
  -f samples/audio.wav \
  --auto-language
```

## 🔍 常見問題排解

### 1. 辨識結果重複詞彙或句子

**問題**：輸出像 `[_BEG_]回顧一年的房地產[_TT_100][_TT_100]回顧一年的房地產[_TT_200]...` 反覆出現。

**解決方案**：
- 減少 `--keep` 參數值
- 移除 `-kc` 參數
- 增加 `--step` 間隔
- 使用更高質量的模型

### 2. 輸出含有 `[_BEG_]` 和 `[_TT_]` 標記

**說明**：
- `[_BEG_]` 表示新段落開始
- `[_TT_150]` 是時間戳標記（表示 1.5 秒）

這些是內部標記，用於標示轉錄時間點，一般可忽略。

### 3. 不想在終端顯示輸出

```bash
./build/bin/whisper-stream ... > /dev/null
```

這會將所有輸出導向空設備，但仍保留檔案輸出（如有使用 `-f` 參數）。

### 4. Metal 或 Core ML 加速無法使用

**問題**：編譯時啟用了 Metal 或 Core ML，但執行時出現錯誤。

**解決方案**：
- 確保您使用的是 Apple Silicon Mac
- 使用 `xcode-select --install` 確保開發工具齊全
- 嘗試更新至最新的 macOS 版本

## 🌐 網頁版支援 (2025新增)

Whisper.cpp 現在也支援在網頁瀏覽器中運行(透過 WebAssembly)：

1. 在線試用：https://ggml.ai/whisper.cpp/
2. 自行部署：
   ```bash
   cd examples/web
   ./build.sh
   python -m http.server
   ```

## 📚 參考資源

- [whisper.cpp GitHub 倉庫](https://github.com/ggerganov/whisper.cpp)
- [OpenAI Whisper 模型](https://github.com/openai/whisper)
- [Hugging Face 模型庫](https://huggingface.co/ggerganov/whisper.cpp)
- [Apple Metal 加速指南](https://developer.apple.com/metal/)
- [Core ML 集成文檔](https://developer.apple.com/documentation/coreml)

---

###### tags: `whisper` `openai` `audio-transcription` `speech-recognition` `cpp` `macos`