
把 30 秒的英語語音算完,要多久?答案是 0.379 秒。在一台 Mac Studio(64GB)上,用 mattmireles/kokoro-coreml 把 Kokoro-82M 餵進 Apple Neural Engine,30 秒台詞 379 毫秒生完,等於 79 倍 realtime。同一台機器、同一個模型,丟給 MLX(GPU)跑要 763 毫秒,丟給 PyTorch CPU 慢到三五千毫秒——同模型不同 runtime,速度可以差一個數量級。
過去兩年寫過幾個 voice agent 的人應該都很熟那種痛:LLM 已經把 token 吐出來了,TTS 在那邊吭吭吭算半秒,整個對話節奏就斷掉。雲端 API 不是不能用,但 ElevenLabs Flash 官方公告 first-byte ~135ms ,加上網路 round-trip 直接破半秒。如果你的 Mac 就在桌上,這延遲根本沒道理付出去。
這篇把 2026 年中目前 macOS 上最快的幾個 TTS 工具實測數字攤開來講,順便分享一個多數人沒注意到的事實:Apple Neural Engine 才是 M 系列上真正的 TTS 速度王牌,而不是 GPU 或 MPS。
環境前置:本文所有實測數字來自 2026 年 6 月的公開 benchmark。硬體涵蓋 M1 Mini / M2 Air / Mac Studio(64GB) / M4 Pro。所有工具都是 100% on-device 本機推論,不打雲端 API。
速度排行榜:一表看完
先丟結論。下面這張是我把所有來源交叉驗證後整理出來的,數字都有出處可查:
| 排名 | 工具 | 加速後端 | 實測速度 | 模型 | 中文支援 |
|---|---|---|---|---|---|
| 🥇 | kokoro-coreml | Apple Neural Engine | Mac Studio 64GB:30s 音檔 379 ms(79×RT);M1 Mini 14×RT | Kokoro-82M, 170 MB | ✅ 8 voices |
| 🥈 | Supertonic 3 | ONNX Runtime(CPU / WebGPU) | M4 Pro CPU 中等文 RTF 0.013(≈77×RT);長文峰值 RTF 0.006(≈167×RT) | 66~99M | ❌ 31 語言沒中文 |
| 🥉 | Piper TTS | ONNX Runtime(CPU) | RTF 0.008(≈ 125×RT), ~22 MB | VITS, 20M | ✅ zh_CN |
| 4 | macOS say / AVSpeechSynthesizer | 系統內建 | 啟動瞬間(無模型載入) | 內建 | ✅ Mei-Jia / Ting-Ting |
| 5 | MLX-Audio(Kokoro / Qwen3-TTS / Higgs) | MLX(Metal GPU) | Kokoro RTF 0.44;Qwen3-TTS RTF ~2 | 82M ~ 4B | ✅ Qwen3-TTS 中文業界頂尖 |
來源:mattmireles/kokoro-coreml 實測表 、Supertonic 3 官方 benchmark 、Soniqo Apple Silicon 對照 、sherpa-onnx Supertonic 對照表 。
這份表我自己整完有幾個地方讓我重看了三次。
最便宜的 M1 Mini(16GB,現在二手不到三萬台幣)跑 kokoro-coreml 也有 14× realtime。意思是你聽 1 秒語音,它只算 70 毫秒。這個延遲已經比你的鍵盤防彈跳還短,跑 voice agent 不會聽到「呃……」的卡頓。
Supertonic 3 的數字更誇張——M4 Pro 純 CPU 中等文本 RTF 0.013(≈ 77×RT),長文本峰值衝到 RTF 0.006(≈ 167×RT)。同一個 sherpa-onnx 對照表裡,ElevenLabs Flash v2.5 API 中等文本 RTF 0.077、OpenAI TTS-1 RTF 0.302、Gemini 2.5 Flash TTS RTF 0.673。一個 99M 參數的開源 ONNX 模型純 CPU 跑出 6 倍於 ElevenLabs、23 倍於 OpenAI 的速度,這在 2024 年根本不敢想。
被嚴重低估的還有 macOS 內建的 say。它的「啟動延遲」是真正的 0,因為根本不用載模型——系統永遠開著。對於 shell 通知、簡單無障礙場景,這還是最快的工具,下面會專段聊。
kokoro-coreml:把 ANE 真正榨乾

先講背景。Apple Neural Engine(ANE)這顆 NPU 從 A12 開始就裝在每一支 iPhone 跟每一台 M 系列 Mac 上,FLOPS 數字很漂亮、能耗也低——社群實測 LLM 工作負載大約是 GPU 的 1/10 (M4 Pro 上有人量到 ANE 2W、GPU 20W)。但開發者社群一直碰不到它——CoreML 是黑箱排程器,你連模型有沒有真的跑在 ANE 上都很難確認,更別說優化。
mattmireles/kokoro-coreml 把 Kokoro-82M 拆成 5 個子模型,每個子模型分派到最適合的處理器(ANE / CPU / GPU),用 Swift 的 MLModel(contentsOf:) 載 .mlpackage 就能跑。實測數字:
| 音檔長度 | M1 Mini (16GB) | M2 Air (24GB) | Mac Studio (64GB) |
|---|---|---|---|
| 3 秒 | 234 ms | 148 ms | 51 ms |
| 10 秒 | 686 ms | 466 ms | 126 ms |
| 30 秒 | 1,959 ms | 1,405 ms | 379 ms |
對比同硬體上的 MLX-Audio (Metal GPU 路線):
| 音檔 | Mac Studio:CoreML vs MLX | 加速倍率 |
|---|---|---|
| 7 秒 | 96 ms vs 224 ms | 2.3× |
| 10 秒 | 126 ms vs 289 ms | 2.3× |
| 30 秒 | 379 ms vs 763 ms | 2.0× |
對比 PyTorch:
- vs PyTorch MPS(GPU):1.8~3.4× 快
- vs PyTorch CPU:3.5~7.3× 快
每個 bucket 都更快,越新的 silicon 差距越大——這正是 ANE 路線真正的潛力。GPU 你加再多核心也卡在記憶體頻寬,ANE 是專為神經網路設計的固定函式硬體,跑 conv / matmul 不會跟 GPU 搶 Metal queue。
整合到 Swift App 大概長這樣:
import CoreML
// 載入預編譯的 .mlpackage(5 個子模型)
let config = MLModelConfiguration()
config.computeUnits = .all // 讓 CoreML 自動派 ANE/CPU/GPU
let textEncoder = try MLModel(contentsOf: textEncoderURL, configuration: config)
let durationPredictor = try MLModel(contentsOf: durationURL, configuration: config)
let decoder = try MLModel(contentsOf: decoderURL, configuration: config)
// ... 然後 pipeline 串起來
// 同步推論
let pcmBuffer = try synthesizer.synthesize(text: "Hello, world.")
// 在 M1 Mini 上這行回來大約 50ms(短句)
raw 數字、benchmark 腳本、跨 Mac 比較矩陣都在 GitHub ,要做 Swift app 整合直接拿來用。
唯一的坑:作者老實寫了,iPhone(A14 / A17 Pro)的 ANE 編譯器會拒絕完整的 ANE 計畫(ANECompile() FAILED),iPhone 版本只能用 staged policy——decoder-pre 跑 ANE、其他階段跑 CPU+GPU。但 M 系列 Mac 沒這個問題,本文聚焦的是 macOS。
Supertonic 3:純 CPU 也能贏雲端 API

如果 ANE 是「在 Apple 生態裡作弊」,那 Supertonic 3 就是「連 GPU 都不用,純 CPU 直接幹翻所有人」。
Supertonic 是 Supertone Inc.(韓國公司,被 HYBE 收購過)開源的 TTS,66~99M 參數、用 flow-matching 架構、純 ONNX Runtime 跑。實測在 M4 Pro 上:
| 系統 | RTF (mid 152 chars) | chars/sec |
|---|---|---|
| Supertonic 3 (M4 Pro CPU) | 0.013 | 1,048 |
| Supertonic 3 (M4 Pro WebGPU) | 0.007 | 1,801 |
| ElevenLabs Flash v2.5(API) | 0.077 | 209 |
| OpenAI TTS-1(API) | 0.302 | 55 |
| Gemini 2.5 Flash TTS(API) | 0.673 | 18 |
| Kokoro(sherpa-onnx CPU) | 0.124 | 107 |
數字來源:sherpa-onnx HuggingFace benchmark (同一頁有完整 API 對照)。
讓我們把這個數字放在桌上看清楚——Supertonic 用 M4 Pro 的 CPU,跑出比 ElevenLabs Flash 快 6 倍、比 OpenAI TTS-1 快 23 倍的速度。它甚至不需要 ANE,連 GPU 都不用。一個 99M 的 ONNX 模型輾過所有商業 TTS API,乾。
Flow matching 架構是它的祕密武器——傳統 autoregressive TTS(像 Tacotron、Bark)要 token by token 慢慢吐,flow matching 把生成重新定義成「從 noise ODE 解到 mel-spectrogram」的平行解碼問題。對 CPU 來說,平行化的工作量比 sequential token 友善太多。
裝起來就一行:
pip install supertonic
from supertonic import SupertonicTTS
tts = SupertonicTTS(language="en")
audio = tts.synthesize("Hello, this is Supertonic running on CPU.")
# audio 是 numpy array,可以直接寫 wav
但有個非常致命的限制:官方支援的 31 種語言 包含阿拉伯、保加利亞、捷克、丹麥、荷蘭、英、愛沙尼亞、芬蘭、法、德、希臘、印地、克羅埃西亞、匈、印尼、義、日、韓、拉脫維亞、立陶宛、波、葡、羅馬尼亞、俄、斯洛伐克、斯洛文尼亞、西、瑞典、土、烏克蘭、越南——就是沒有中文。對台灣讀者來說這個直接 deal-breaker,後面會講中文場景該怎麼選。
Piper 與 macOS say:老兵不死

聊完最快的兩隻,回來講「夠用但被低估」的兩個老兵。
Piper TTS
Piper (Rhasspy 開發、現在轉到 Open Home Foundation)是輕量場景的事實標準。VITS 架構、ONNX 編譯、medium voice ~22 MB、CPU 上 RTF 0.008(125 倍 realtime),30+ 語言含中文 zh_CN。Home Assistant 用它做語音助理、NVDA 螢幕閱讀器用它做無障礙、LocalAI 內建它做 TTS endpoint。
brew install piper-tts # 或 pip install piper-tts
piper --model en_US-amy-medium --output_file out.wav <<< "Hello world"
它的優勢不在絕對速度(在 M-Mac 上 Supertonic 跟 kokoro-coreml 都比它快),而在「樹莓派級裝置都能跑即時 TTS」這件事。如果你想做家用智慧音箱、想在 Mac mini server 上跑 voice 服務、想嵌進低耗能設備,Piper 還是首選。
要注意的坑:原本的 rhasspy/piper repo 在 2025 年 10 月封存了,授權從 MIT 改成 GPL-3.0。如果你的產品要商用閉源發布,先確認新授權對你 OK 再用。
macOS 內建 say 跟 AVSpeechSynthesizer
這個老實說被嚴重低估。say 是 macOS 內建 CLI,啟動延遲是真正的 0——因為系統永遠把語音引擎掛在 background,根本不用載模型。
# shell 通知用法
sleep 30 && say -v Fiona "Build done, get back to work"
# 跑模型訓練不想盯著螢幕
python train.py && say "Training finished" || say "Training failed"
# 列出所有聲音
say -v "?"
macOS 26 開始,內建的「Premium / Neural Voice」品質已經非常 OK,繁體中文有 Mei-Jia(台灣國語)、粵語有 Sin-Ji、普通話有 Ting-Ting。設定 → 輔助使用 → 旁白 → 語音 → 自訂裡可以下載高品質版(每個約 200~500 MB)。
say -v Mei-Jia "你好世界,今天天氣真好"
對應的 Swift API 是 AVSpeechSynthesizer,可以調語速、音高、音量:
import AVFoundation
let synthesizer = AVSpeechSynthesizer()
let utterance = AVSpeechUtterance(string: "你好世界")
utterance.voice = AVSpeechSynthesisVoice(language: "zh-TW")
utterance.rate = 0.5
utterance.pitchMultiplier = 1.0
synthesizer.speak(utterance)
但這隻有個 voice agent 開發者必須知道的硬限制:AVSpeechSynthesizer 不能處理串流 partial text ——你必須把整段文字餵進去它才會開講。對 LLM token-by-token 輸出的場景完全不適用。Apple 至今沒補這個洞,這也是為什麼 voice agent 開發者寧可裝 kokoro-coreml 或 Supertonic 也不用內建 API。
中文場景:別被 Supertonic 騙了,Qwen3-TTS 才是王者

如果你是台灣讀者要做中文 TTS,前面 Supertonic 的速度數字看了會流口水,但記住——它沒中文。中文場景必須重新排名:
| 中文需求 | 推薦工具 | 為什麼 |
|---|---|---|
| 速度第一、中文夠用 | kokoro-coreml + zf_xiaoyi | 8 個普通話 voice,社群實測 zf_xiaoyi 達 A-、zm_yunxi B+;ANE 加速速度跟英文一樣 |
| 中文品質第一、可接受慢一點 | Qwen3-TTS-0.6B via MLX-Audio | 阿里出品、訓練數據海量、中文表現業界頂尖;M-Mac RTF ~2 |
| 零安裝、繁中 | say -v Mei-Jia | 台灣國語內建語者、無門檻 |
| 跑中文 audiobook | MLX-Audio + Qwen3-TTS | myByways 有 ePub→audiobook 腳本 可參考 |
| 樹莓派 / HA 中文 | Piper zh_CN | 輕量、ONNX、長期維護 |
Qwen3-TTS 是這次研究中我覺得中文使用者最該認識的工具——阿里巴巴 Qwen 團隊 2026 年 1 月開源(Apache 2.0),支援 12Hz / 25Hz、0.6B / 1.7B 多檔位、3 秒語音 cloning、10+ 語言。在 SEED 中文測試上 WER 0.77(1.7B 12Hz),比 CosyVoice 3、F5-TTS、Spark TTS 都低。
Apple Silicon 透過 MLX-Audio 跑:
pip install mlx-audio
# 下載 8bit 量化版(M Mac 上記憶體友善)
huggingface-cli download mlx-community/Qwen3-TTS-12Hz-1.7B-CustomVoice-8bit
# 跑
python -m mlx_audio.tts.generate \
--model mlx-community/Qwen3-TTS-12Hz-1.7B-CustomVoice-8bit \
--text "你好,今天我們來聊聊 macOS 上最快的 TTS。" \
--voice "default"
實測在 M2 macMini 大約「1,000 字元 / 分鐘」(myByways 實測 ),不是很快但中文品質直接屌打 Kokoro 中文 voice。如果你要做中文 podcast、audiobook、新聞播報,這就是目前 M-Mac 上最強的開源解。
不同情境怎麼選:決策樹

把所有工具放一起看會頭暈,下面是我給自己的決策邏輯:
你要做什麼?
│
├─ Shell 通知、無障礙、簡單腳本播報
│ └─→ macOS 內建 say(5 秒就能上手)
│
├─ Swift / Mac App 整合最快本機 TTS
│ ├─ 英語為主 →→→ kokoro-coreml(ANE)
│ └─ 中文為主 →→→ kokoro-coreml + zf_xiaoyi voice
│
├─ Python 跑 batch(audiobook / podcast)
│ ├─ 純英語、追速度 →→→ Supertonic 3
│ ├─ 中文品質要好 →→→ MLX-Audio + Qwen3-TTS
│ └─ 多語混合 →→→ MLX-Audio + Higgs v3 / OmniVoice
│
├─ Voice agent(要串流、LLM token-by-token)
│ ├─ 英語 →→→ sherpa-onnx + Supertonic
│ ├─ 中文 →→→ sherpa-onnx + Kokoro zh
│ └─ ⚠️ 千萬別用 AVSpeechSynthesizer(不能串流)
│
├─ 家庭自動化、Home Assistant、樹莓派
│ └─→ Piper TTS(zh_CN / en_US-amy-medium)
│
└─ 要 voice cloning(3 秒樣本複製音色)
└─→ Qwen3-TTS via MLX-Audio(速度交換功能)
決策邏輯背後其實是兩條軸——「速度 vs 中文品質」跟「腳本場景 vs App 整合」。速度王是 ANE 跟 ONNX 兩條路線,中文品質王是阿里的 Qwen3-TTS(犧牲速度換來的),其餘工具都是在這兩端之間取捨。
一個你可能踩到的坑:runtime 換錯,速度差 10 倍
研究這個主題最讓我訝異的不是哪隻最快,而是同一個模型用不同 runtime,速度可以差到一個數量級。
以 Kokoro-82M 為例,同樣是 Mac Studio(64GB)、同樣的 voice af_heart、同樣的 30 秒測試文本:
| Runtime | 完成時間 | 相對速度 |
|---|---|---|
| CoreML (ANE) | 379 ms | 1.0× baseline(最快) |
| MLX (Metal GPU) | 763 ms | 2× 慢 |
| PyTorch MPS (GPU) | 700~1300 ms | 1.8~3.4× 慢 |
| PyTorch CPU | 1300~2800 ms | 3.5~7.3× 慢 |
我看過太多人在 Reddit / HN 抱怨「Kokoro 在我的 Mac 上跑超慢」,結果一問,全部都是 PyTorch CPU 或 PyTorch MPS——這就像買了 Ferrari 用一檔開上高速公路。如果你的工作流會頻繁呼叫 TTS,花一個下午把 runtime 換到 CoreML 或 MLX,效能直接翻 2~7 倍。
決策原則記一下:
- 要 絕對最快 → CoreML(限 Apple Silicon)
- 要 跨平台 + 多模型 → MLX-Audio(限 Apple Silicon,但模型多)
- 要 跨平台 + 跨硬體 → ONNX Runtime(CPU / WebGPU / iOS / Android 都通)
- 要 完整生態、不挑硬體 → PyTorch(最慢但相容性最好)
寫 demo 用 PyTorch 沒問題,但要 ship 進產品請務必把模型轉成對應加速 runtime——這件事的 ROI 高到你不做白不做。
結語:本機 TTS 的世代交替
研究這個主題之前,我的預設是「本機 TTS 撐不住 production,雲端 API 還是必要」。研究完之後我整個立場反轉——M2 Air 上把 LLM token-by-token 接 sherpa-onnx 的 sentence-level Supertonic,中間用 VAD 切句、TTS 串流播放,整套 pipeline end-to-end 對話延遲打到 500 ms 以下完全有可能。這已經接近人類對話的自然節奏,雲端 API 加網路 round-trip 反而追不上。
中文場景目前是兩條路:要速度選 kokoro-coreml,要品質選 MLX-Audio + Qwen3-TTS。Supertonic 雖然數字嚇人但沒中文,官方 31 種語言列表 跳過 zh 我猜是訓練資料授權問題,期待下半年補上。
如果你還沒在自己的 Mac 上跑過任何一個本機 TTS,今天就去 clone 一個跑跑看。最低成本:開 terminal 打 say -v Mei-Jia "你好",五秒鐘體驗 macOS 內建語音的進化。進階:pip install supertonic 跑英語、pip install mlx-audio 跑 Qwen3-TTS 中文。最進階:拉 mattmireles/kokoro-coreml 進 Xcode 專案,把 voice agent 的 first-byte 延遲打到 50ms 以下。
雲端 TTS 不會死,但本機 TTS 在 2026 年已經不是「能用就好」的妥協選項——它是「比雲端更快、更便宜、更隱私」的明顯贏家。差別只是你願不願意花一個下午把 runtime 換對。
延伸閱讀
- mattmireles/kokoro-coreml — GitHub — kokoro-coreml 原始 repo、實測腳本、跨 Mac 對照矩陣
- Supertonic 3 — GitHub — Supertonic 官方 repo、模型下載、demo
- MLX-Audio — GitHub — Apple Silicon 上的 TTS / STT / STS 全套生態
- Soniqo Apple Silicon Speech Benchmarks — TTS / ASR / VAD 在 M-Mac 完整 RTF 對照
- Kokoro vs Supertonic 3 同機實測 — heyneo — 6 種文本長度的 wall-clock 比較(AMD EPYC 環境,作為 x86 對照組)
- Piper TTS Setup 2026 — Local AI Master — Piper 安裝、RTF、授權變更說明
- Qwen3-TTS with MLX-Audio on macOS — myByways — ePub → audiobook 完整腳本範例
- AVSpeechSynthesizer iOS Streaming Tutorial — Picovoice — 為什麼內建 API 不適合 voice agent
- csukuangfj2/sherpa-onnx-supertonic — HuggingFace — Supertonic vs Kokoro / NeuTTS / API 完整數據表
對這個主題有想討論的細節、或是你的 Mac 跑出不一樣的數字,歡迎來 bashcat.net 找我。
沒有留言:
張貼留言