使用 NVIDIA 的 Parakeet 模型,以純 C++ 實現的快速語音辨識。
建構於 Axiom 之上 — 一個輕量級的張量函式庫,具備自動 Metal GPU 加速功能。沒有 ONNX 執行時間,沒有 Python 執行時間,沒有重量級的依賴。只有 C++ 和一個效能超越 PyTorch MPS 的張量函式庫。
在 Apple Silicon GPU 上處理 10 秒音訊(110M 模型)約需 27 毫秒的編碼器推論 — 比 CPU 快 96 倍。支援 FP16 以減少約 2 倍的記憶體使用。
所有 ASR 模型共用相同的音訊處理流程:16kHz 單聲道 WAV → 80 個頻段的梅爾頻譜圖 → FastConformer 編碼器。
請參閱 examples/ 目錄下的程式碼範例,展示各項功能。
預先編譯的二進位檔已附加至每個 GitHub 發行版本,支援 macOS arm64、macOS x86_64 和 Linux x86_64。下載您平台的 tarball 並解壓縮:
該封存檔包含一個獨立的 bin/parakeet(以及 bin/example-server)以及 lib/libaxiom,並設定了 @rpath / $ORIGIN,以便二進位檔能相對於安裝目錄解析其依賴項 — 您可以將整個目錄放置在任何地方。include/parakeet/ 下的 C-API 標頭檔也包含在內,供嵌入式應用程式使用。
需求:C++20(Clang 14+ 或 GCC 12+)、CMake 3.20+,以及 Metal GPU 的 macOS 13+。
macOS:建構需要完整的 Xcode 安裝(不只是 Command Line Tools),因為 Axiom 使用 xcrun metal 和 xcrun metallib 編譯其 Metal 著色器 — 這些僅隨 Xcode 提供。如果您只想執行 parakeet,請使用上述預先編譯的 tarball;.metallib 已嵌入到提供的 libaxiom.dylib 中,使用者端無需安裝 Xcode/CLT 即可執行。
轉換器支援所有模型類型:110m-tdt-ctc(預設)、600m-tdt、eou-120m、nemotron-600m、sortformer。
安裝後(make install 或 cmake --install build):
建構於共享的 FastConformer 編碼器(Conv2d 8x 子取樣 → N 個帶有相對位置注意力機制的 Conformer 區塊):
建構於具備快取感知串流功能的 FastConformer 編碼器,採用因果卷積和有界上下文注意力機制:
在配備 16GB 記憶體的 Apple M3 上測量,使用模擬音訊輸入(Tensor::randn)。時間為每次編碼器前向傳遞(Sortformer:完整前向傳遞)。
110m GPU 在不同音訊長度下的擴展性:
GPU 加速由 Axiom 的 Metal 圖編譯器提供支援,該編譯器將整個編碼器融合為優化的 MPSGraph 操作。
使用 Axiom 和 MPS+Unified Memory 的 C++ 裝置端超快速可攜式 Parakeet 實作