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 は、16 の異なる ASR ファミリーにわたる 60 以上のモデルをサポートしています。信頼性を確保するため、handy-computer Hugging Face 組織の下で公開されているすべてのモデルは、リファレンス実装と比較して数値的に検証され、数千の音声データを用いた Word Error Rate (WER) スイープが行われています。このプロセスにより、ローカル推論の出力がリファレンス実装の精度と一致することが保証されます。

ハードウェア加速

このライブラリは、さまざまなハードウェア構成で高速な推論を実現するために、幅広い加速サポートを提供します:

  • Vulkan: ローカル推論配布のベースラインとしてターゲットにしています。
  • Metal: Apple Silicon (M-series chips) に最適化されています。
  • CUDA: NVIDIA GPU に最適化されています。
  • TinyBLAS: CPU ベースの加速用です。

これらのアーキテクチャ間でのパフォーマンスを検証するため、M4 Max と Ryzen 4750U (Fedora 上で CPU + Vulkan を使用) の両方でベンチマークが実施されました。

統合と配布

whisper.cpp よりも柔軟な代替手段として設計された transcribe.cpp は、whisper.cpp で使用される一般的な .bin ファイルとの互換性を維持しており、多くのユースケースにおいてほぼそのまま置き換えが可能です。デスクトップおよびモバイルアプリケーションへの統合を容易にするため、メンテナーは以下の 4 つの言語のファーストパーティ・バインディングを提供しています:

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

設計の動機:ASR 配布の問題を解決する

transcribe.cpp の開発は、断片化された推論スタックに依存することなく Handy アプリケーションを配布する必要性から始まりました。著者は、現在の状況では、開発者が whisper.cpp と ONNX のどちらかを選択するか、あるいは異なるプラットフォームごとに個別のエンジンを管理する(例:Apple デバイス用の MLX)ことを余儀なくされていると指摘しています。

ggml を活用することで、transcribe.cpp は、GPU 加速を維持しつつ PyTorch のような大規模なフレームワークのオーバーヘッドを回避しながら、Mac、Windows、および Linux で推論を実行できる一貫した配布ストーリーを提供することを目指しています。

コミュニティの洞察と技術的検討事項

コミュニティの議論では、ライブラリのいくつかの主要な関心領域と将来的な開発の可能性が強調されています:

  • パフォーマンスの差: ユーザーはバックエンド間の顕著なパフォーマンスの差を指摘しており、特定の環境では Metal が Vulkan よりも大幅に高速であると観察しています。
  • Diarization と Speaker ID: 複数のユーザーが、ライブラリに話者分離 (diarization) と話者識別 (speaker identification) を追加する最も簡単な方法について問い合わせており、ローカル STT ワークフローにおけるこれらの機能への需要があることが示唆されています。
  • 展開 (Deployment): Python バインディングは存在しますが、コミュニティメンバーは、依存関係を含んだ PyPI 上のバイナリホイールとしてまだ提供されていないと指摘しています。ただし、これは将来のリリースで計画されています。
  • ONNX との比較: 著者は ONNX 配布の困難さを強調していますが、一部のユーザーは、ONNX Runtime が NVIDIA GPU 用に TensorRT を呼び出せることを指摘しており、ggml を ONNX よりも選択した理由は、統合された軽量なクロスプラットフォーム体験という特定のニーズに基づいていることが示唆されます。

"I think as we look forward to the future, more inference will start happening locally for one reason or other. This brings the distribution story front and center. In order to have more applications running inference locally, we need to make running inference easier."

プロジェクト・サポート

transcribe.cpp v0.1.0 は、Mozilla AI (via the BiR program)、Modal (for CUDA WER testing)、Blacksmith (for CI/CD)、および Hugging Face (for model storage) のサポートを受けて開発されました。

Sources