Home
Login
ggml-org/whisper.cpp

OpenAI Whisper音声認識モデルの高性能C/C++移植版、純粋なCPU推論とマルチプラットフォーム展開をサポート

MITC++ 40.8kggml-org Last Updated: 2025-06-13
https://github.com/ggml-org/whisper.cpp

Whisper.cpp プロジェクト詳細

プロジェクト概要

Whisper.cpp は、OpenAI Whisper 自動音声認識 (ASR) モデルの高性能 C/C++ 移植版です。このプロジェクトは、元々 Python ベースの Whisper モデルを純粋な C/C++ コードで再実装し、依存関係がなく、高効率な音声認識機能を実現します。特に、リソースが限られた環境や組み込みデバイスでの実行に適しています。

核心機能と特性

🚀 パフォーマンス最適化特性

高効率推論エンジン
  • 純粋な C/C++ 実装: Python 依存関係なし、起動速度が速く、メモリ占有量が少ない
  • 実行時メモリ割り当てゼロ: メモリ管理を最適化し、実行時のメモリ断片化を回避
  • 混合精度サポート: F16/F32 混合精度計算により、精度とパフォーマンスのバランスを取る
  • 整数量子化: 多様な量子化方式 (Q5_0, Q8_0 など) をサポートし、モデルサイズとメモリ使用量を大幅に削減
ハードウェアアクセラレーションサポート
  • Apple Silicon 最適化:
    • ARM NEON 命令セット最適化
    • Accelerate フレームワーク統合
    • Metal GPU アクセラレーション
    • Core ML ANE (ニューラルエンジン) サポート
  • x86 アーキテクチャ最適化: AVX/AVX2 命令セットアクセラレーション
  • GPU アクセラレーションサポート:
    • NVIDIA CUDA サポート
    • Vulkan クロスプラットフォーム GPU アクセラレーション
    • OpenCL サポート
  • 専用ハードウェアサポート:
    • Intel OpenVINO 推論アクセラレーション
    • 华为昇腾 NPU サポート
    • 摩尔线程 GPU サポート

🌍 クロスプラットフォームサポート

サポートされるオペレーティングシステム
  • デスクトッププラットフォーム: macOS (Intel/Apple Silicon)、Linux、Windows、FreeBSD
  • モバイルプラットフォーム: iOS、Android
  • 組み込み: Raspberry Pi などの ARM デバイス
  • Web プラットフォーム: WebAssembly サポート、ブラウザで実行可能
多言語バインディング
  • ネイティブサポート: C/C++、Objective-C
  • 公式バインディング: JavaScript、Go、Java、Ruby
  • コミュニティバインディング: Python、Rust、C#/.NET、R、Swift、Unity

🎯 核心機能モジュール

音声認識エンジン
  • リアルタイム転写: マイクからのリアルタイム音声認識をサポート
  • バッチ処理: 音声ファイルのバッチ転写をサポート
  • 多言語サポート: 99 言語の音声認識をサポート
  • 話者分離: 簡単な話者識別機能をサポート
音声処理能力
  • 多形式サポート: FFmpeg 統合により、多様な音声形式をサポート
  • サンプリングレート適応: 異なるサンプリングレートの音声入力を自動処理
  • 音声プリプロセス: 音声正規化とプリプロセス機能を内蔵
出力形式オプション
  • タイムスタンプ: ミリ秒レベルの正確なタイムスタンプ情報
  • 信頼度スコア: 単語レベルの信頼度評価を提供
  • 多様な出力形式: テキスト、JSON、SRT 字幕などの形式をサポート
  • カラオケモード: 同期ハイライト表示のビデオ出力を生成可能

🔧 技術アーキテクチャの特徴

モデル構造
  • エンコーダ-デコーダアーキテクチャ: オリジナルの Whisper モデルの transformer 構造を維持
  • カスタム GGML 形式: 最適化されたバイナリモデル形式、必要なすべてのコンポーネントを含む
  • モデルサイズ選択: tiny (39MB) から large (1.55GB) まで多様な規格
メモリ管理
  • 静的メモリ割り当て: 起動時に必要なすべてのメモリを割り当て
  • メモリマッピング: 効率的なモデルファイルロード方式
  • キャッシュ最適化: スマートな計算結果キャッシュメカニズム

主要な応用シーン

🎤 リアルタイム音声アプリケーション
  • 音声アシスタント: オフライン音声アシスタントアプリケーションを構築
  • リアルタイム字幕: ビデオ会議、ライブストリーミングにリアルタイム字幕を提供
  • 音声メモ: リアルタイム音声テキスト変換メモアプリケーション
📱 モバイルアプリケーション
  • オフライン転写: モバイルデバイス上で完全にオフラインの音声認識を実現
  • 音声入力: モバイルアプリケーションに音声入力機能を提供
  • 多言語翻訳: 翻訳モデルと組み合わせて音声翻訳を実現
🖥️ デスクトップおよびサーバーアプリケーション
  • 音声ファイルバッチ処理: 大量の音声ファイルの自動転写
  • コンテンツ制作: ポッドキャスト、ビデオコンテンツの字幕を自動生成
  • カスタマーサービスシステム: 電話カスタマーサービスの音声の自動転写と分析

パフォーマンスベンチマークテスト

異なるモデル規格の比較
モデル ディスクサイズ メモリ占有量 推論速度 精度
tiny 75 MiB ~273 MB 最速 基礎
base 142 MiB ~388 MB 速い 良好
small 466 MiB ~852 MB 中程度 非常に良い
medium 1.5 GiB ~2.1 GB 遅い 優秀
large 2.9 GiB ~3.9 GB 遅い 最高
ハードウェアアクセラレーション効果
  • Apple M1/M2: Metal GPU アクセラレーションにより 3-5 倍の性能向上
  • NVIDIA GPU: CUDA アクセラレーションにより 5-10 倍の性能向上
  • Intel CPU: AVX2 命令セットにより 2-3 倍の性能向上

クイックスタートサンプル

基本的なコンパイルと使用
# プロジェクトをクローン
git clone https://github.com/ggml-org/whisper.cpp.git
cd whisper.cpp

# プロジェクトをコンパイル
cmake -B build
cmake --build build --config Release

# モデルをダウンロード
./models/download-ggml-model.sh base.en

# 音声を転写
./build/bin/whisper-cli -f samples/jfk.wav -m models/ggml-base.en.bin
Docker の使用
# モデルをダウンロード
docker run -it --rm -v $(pwd)/models:/models \
  ghcr.io/ggml-org/whisper.cpp:main \
  "./models/download-ggml-model.sh base /models"

# 音声を転写
docker run -it --rm \
  -v $(pwd)/models:/models \
  -v $(pwd)/audio:/audio \
  ghcr.io/ggml-org/whisper.cpp:main \
  "whisper-cli -m /models/ggml-base.bin -f /audio/sample.wav"

プロジェクトの優位性

✅ 技術的優位性
  1. 高性能: C/C++ ネイティブ実装、優れた性能
  2. 低リソース消費: メモリと CPU の使用効率が高い
  3. 依存関係なし: Python やその他のランタイム環境は不要
  4. クロスプラットフォーム: ほぼすべての主要プラットフォームをサポート
  5. ハードウェアアクセラレーション: 最新のハードウェアアクセラレーション能力を最大限に活用
✅ 実用的な優位性
  1. 統合が容易: C-style API を提供し、既存のプロジェクトに統合しやすい
  2. デプロイが簡単: 単一の実行可能ファイル、デプロイが簡単
  3. オフライン実行: 完全にオフラインで動作し、プライバシーを保護
  4. オープンソース無料: MIT ライセンス、商用利用に優しい
  5. 活発なメンテナンス: コミュニティが活発で、更新が頻繁

制限事項と注意事項

⚠️ 技術的制限
  1. 音声形式: 主に 16 ビット WAV 形式をサポート、他の形式は変換が必要
  2. 言語モデル: トレーニングデータに基づいており、一部の方言やアクセントの認識は不正確な場合がある
  3. リアルタイム性: 最適化されているものの、ローエンドデバイスではリアルタイム処理に達しない場合がある
  4. メモリ要件: 大規模モデルは依然として大きなメモリ空間が必要
💡 使用に関する提案
  1. モデル選択: 精度とパフォーマンスのニーズに応じて適切なモデル規格を選択
  2. ハードウェア最適化: ターゲットプラットフォームのハードウェアアクセラレーション能力を最大限に活用
  3. 音声プリプロセス: 最高の認識効果を得るために、入力音声の品質を確保
  4. 量子化の使用: リソースが限られた環境では、量子化モデルの使用を検討

プロジェクトエコシステムと拡張

関連プロジェクト
  • whisper.spm: Swift Package Manager バージョン
  • whisper.rn: React Native バインディング
  • whisper.unity: Unity ゲームエンジン統合
  • 各種言語バインディング: Python、Rust、Go など多言語サポート

まとめ

Whisper.cpp は、非常に優れた音声認識ソリューションです。OpenAI の Whisper モデルを C/C++ プラットフォームに移植し、高性能、低リソース消費、幅広いプラットフォーム互換性を実現しました。モバイルアプリケーション開発、組み込みシステム、大規模サーバーデプロイメントのいずれにおいても、whisper.cpp は信頼性が高く効率的な音声認識能力を提供できます。

このプロジェクトは、特に以下のシーンに適しています。

  • オフライン音声認識が必要なアプリケーション
  • パフォーマンスとリソース消費に厳しい要件があるプロジェクト
  • クロスプラットフォームデプロイメントの音声認識ソリューション
  • 既存の C/C++ プロジェクトに統合したい開発者