在我的機器上做基準測試
本頁面用於 直接測量 HayaKoe 在您的硬體上有多快。
如果已經 clone 了儲存庫,一條指令即可完成。
為什麼要自己測?
TTS 推論速度很大程度上取決於 CPU 世代、記憶體頻寬、ONNX Runtime 版本和背景負載。
文件中的資料僅供參考,直接在自己的 PC 上執行測量要準確得多。
測量一次數值後,在決定如何使用時也會很有幫助。
術語 — 倍速
HayaKoe 使用 倍速 (speed factor) 作為效能指標。
倍速 = 生成的音訊時長(秒) / 推論耗時(秒)達到 1.0x 以上時可以感受到準即時。
當然越快越好。
例如,想像一下生成 10 秒的音訊。
1.0x— 需要等待整整 10 秒5.0x— 2 秒即可10.0x— 1 秒即可
執行基準測試
使用儲存庫中 dev-tools 的基準測試 CLI。
uv run poe cli benchmark執行後在互動式選單中可以選擇 CPU (ONNX)、GPU (torch.compile) 或 CPU + GPU。
預熱 2 次 + 測量 5 次,自動對短・中・長三種長度的文本進行測試,並將結果整理成表格。
測量完成後同樣的內容會以 HTML 報告的形式儲存在 benchmarks/ 目錄下,並在瀏覽器中直接開啟。
解讀結果
同時執行 CPU + GPU 時,終端輸出大致如下。
數字因機器而異(以下為銳龍 3950X / RTX 3080 組合下,在執行其他任務時順便測量的值)。
倍速 = 音訊時長 / 推論耗時 (越高越快)
例: 10.0x → 1 秒的語音僅需 0.1 秒生成
基準測試結果
┏━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━┳━━━━━━━━━━━┳━━━━━━━━━━━━━┳━━━━━━━┓
┃ 後端 ┃ 文本 ┃ 推論耗時 ┃ 音訊時長 ┃ 倍速 ┃
┡━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━━╇━━━━━━━━━━━╇━━━━━━━━━━━━━╇━━━━━━━┩
│ ONNX (CPU) │ 短 │ 0.393s │ 0.8s │ 2.1x │
│ ONNX (CPU) │ 中 │ 1.297s │ 4.1s │ 3.2x │
│ ONNX (CPU) │ 長 │ 3.318s │ 11.0s │ 3.3x │
│ torch.compile (CUDA) │ 短 │ 0.182s │ 0.9s │ 4.7x │
│ torch.compile (CUDA) │ 中 │ 0.547s │ 4.9s │ 8.9x │
│ torch.compile (CUDA) │ 長 │ 0.747s │ 12.4s │ 16.6x │
└──────────────────────┴────────┴───────────┴─────────────┴───────┘
基準測試完成!
benchmarks/benchmark_20260414_211131.html
? 是否在瀏覽器中開啟? Yes單句越長倍速越高
每次模型呼叫都有固定開銷,句子越長這些開銷就分攤得越好。
但是 HayaKoe 內部會按句子拆分處理,因此句子多並不一定更快。
必須排除預熱
首次呼叫中混入了 ONNX 會話初始化或(GPU 的話)torch.compile 圖編譯時間。
CLI 設定 WARMUP = 2 丟棄前兩次就是這個原因。
在沒有其他行程時測量
關閉瀏覽器・建置・背景下載後測量,數值會更穩定。
多次執行確認方差
嘗試執行同一基準測試 2~3 次。
如果倍速在幾個百分點以內重現,該值就更可信。
偏差較大時可能有其他程式在佔用資源。
Raspberry Pi 4B 實測
HayaKoe 在 arm64 環境下同樣可以執行。參考 Raspberry Pi 4B 上執行相同基準測試的結果如下。
- Linux 6.8・aarch64・Python 3.10・ONNX Runtime 1.23.2
| 文本 | 推論耗時 | 音訊時長 | 倍速 |
|---|---|---|---|
| 短 | 3.169s | 0.8s | 0.3x |
| 中 | 13.042s | 4.1s | 0.3x |
| 長 | 35.119s | 10.8s | 0.3x |
用於對話式 UI 的即時場景略顯吃力(0.3x,約慢 3 倍),但離線批次合成或個人專案可以直接使用。
首次執行模型下載可能較慢(約 10 分鐘)
在像樹莓派這樣 SD 卡 I/O 和網路較慢的環境中,從 HuggingFace 下載 BERT・Synthesizer・風格向量權重可能需要 約 10 分鐘。
下載一次後會快取到 hayakoe_cache/,之後執行可以立即啟動。
日誌中出現的 ORT / HF 警告可以忽略
執行中可能會混雜以下兩個警告。兩者都不影響 CPU 推論的行為和結果,直接繼續即可。
Warning: You are sending unauthenticated requests to the HF Hub. ...
[W:onnxruntime:Default, device_discovery.cc:...] GPU device discovery failed: ...- HF 匿名請求警告 — 提示正在無 token 向 HuggingFace 發送請求。僅影響下載速度和速率限制。設定
HF_TOKEN環境變數後消失。 - ORT GPU 探測失敗警告 — ONNX Runtime 在掃描系統是否有 GPU 時失敗。在像樹莓派這樣沒有 GPU 的環境中屬於正常行為,對 CPU 推論沒有任何影響。
倍速在 1.0x 附近時
如果 CPU 測量的倍速接近 1.0x,在實際服務中即時使用會比較吃力。
有幾個選擇。
- 切換到 GPU — 最確定的解決方案。
- 句子級串流傳輸 — 對話式 UI 可以不等待全部合成完畢,從第一句就開始發送(句子級串流傳輸)。
