transcribe.cpp v0.1.0: 高性能、跨平台 ASR 推理引擎

transcribe.cpp v0.1.0: 高性能、跨平台 ASR 推理引擎

transcribe.cpp v0.1.0 提供了一個統一、硬體加速的本地自動語音辨識 (ASR) 引擎

transcribe.cpp v0.1.0 是一個基於 ggml 的 C/C++ 轉錄函式庫,能夠在廣泛的模型上實現高效能的本地 ASR 推理。它的設計旨在透過提供一個支援多種硬體後端以及大量經過數值驗證模型的單一引擎,來解決跨平台語音轉文字應用程式的發佈挑戰。

核心技術能力

廣泛的模型支援與數值驗證

transcribe.cpp 支援超過 60 個模型,涵蓋 16 種不同的 ASR 家族。為了確保可靠性,在 handy-computer Hugging Face 組織下發佈的所有模型都已針對其參考實作進行了數值驗證,並在數千條語音片段中進行了字錯誤率 (WER) 掃描。此過程確保了本地推理輸出與參考實作的準確度一致。

硬體加速

該函式庫提供了廣泛的加速支援,以確保在各種硬體配置上都能進行快速推理:

  • Vulkan: 目標作為本地推理發佈的基準。
  • Metal: 為 Apple Silicon (M-series chips) 優化。
  • CUDA: 為 NVIDIA GPUs 優化。
  • TinyBLAS: 用於基於 CPU 的加速。

已在 M4 Max 和 Ryzen 4750U (在 Fedora 上使用 CPU + Vulkan) 上進行了基準測試,以驗證這些架構下的效能。

整合與發佈

作為 whisper.cpp 的更靈活替代方案,transcribe.cpp 維持了與 whisper.cpp 使用的熱門 .bin 檔案的相容性,使其在許多使用場景中幾乎可以無縫替換。為了促進整合到桌面和行動應用程式中,維護者提供了四種語言的第一方綁定 (bindings):

  • Python
  • JavaScript/TypeScript
  • Rust
  • Objective-C/Swift

設計動機:解決 ASR 發佈問題

開發 transcribe.cpp 的動機在於如何在不依賴碎片化的推理堆疊的情況下,發佈 Handy 應用程式。作者指出,目前的環境往往迫使開發者在 whisper.cpp 和 ONNX 之間做出選擇,或者必須為不同平台管理不同的引擎 (例如,Apple 裝置上的 MLX)。

透過利用 ggml,transcribe.cpp 旨在提供一個一致的發佈方案,讓單一函式庫就能在 Mac、Windows 和 Linux 上執行推理,同時維持 GPU 加速並避免 PyTorch 等大型框架的開銷。

社群洞察與技術考量

社群討論突出了該函式庫幾個關鍵的關注領域和潛在的未來發展方向:

  • 效能差距: 使用者注意到不同後端之間存在顯著的效能差異,部分使用者觀察到在特定環境下 Metal 比 Vulkan 快得多。
  • 角色分離與說話者辨識 (Diarization and Speaker ID): 多位使用者詢問了如何最簡單地將說話者分離 (diarization) 和說話者辨識加入到函式庫中,這顯示了對這些功能在本地 STT 工作流中的需求。
  • 部署: 雖然已存在 Python 綁定,但社群成員指出,目前尚未在 PyPI 上提供包含依賴項的二進位輪子檔 (binary wheels),不過這已列入未來版本的計畫中。
  • ONNX 比較: 雖然作者強調了 ONNX 發佈的困難,但部分使用者指出 ONNX Runtime 可以調度至 TensorRT 以用於 NVIDIA GPUs,這顯示選擇 ggml 而非 ONNX 是出於對統一、輕量級跨平台體驗的特定需求。

"我認為隨著我們展望未來,由於各種原因,更多的推理將開始在本地發生。這使得發佈問題成為核心重點。為了讓更多應用程式能在本地執行推理,我們需要讓執行推理變得更容易。"

專案支持

transcribe.cpp v0.1.0 是在 Mozilla AI (透過 BiR 計畫)、Modal (用於 CUDA WER 測試)、Blacksmith (用於 CI/CD) 以及 Hugging Face (用於模型儲存) 的支持下開發的。

Sources