ggml-org/whisper.cppView GitHub Homepage for Latest Official Releases
OpenAI Whisper音声認識モデルの高性能C/C++移植版、純粋なCPU推論とマルチプラットフォーム展開をサポート
MITC++whisper.cppggml-org 42.1k Last Updated: August 07, 2025
Whisper.cpp プロジェクト詳細
プロジェクト概要
Whisper.cpp は、OpenAI Whisper 自動音声認識 (ASR) モデルの高性能 C/C++ 移植版です。このプロジェクトは、元々 Python ベースの Whisper モデルを純粋な C/C++ コードで再実装し、依存関係がなく、高効率な音声認識機能を実現します。特に、リソースが限られた環境や組み込みデバイスでの実行に適しています。
- プロジェクトアドレス: https://github.com/ggml-org/whisper.cpp
核心機能と特性
🚀 パフォーマンス最適化特性
高効率推論エンジン
- 純粋な 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"
プロジェクトの優位性
✅ 技術的優位性
- 高性能: C/C++ ネイティブ実装、優れた性能
- 低リソース消費: メモリと CPU の使用効率が高い
- 依存関係なし: Python やその他のランタイム環境は不要
- クロスプラットフォーム: ほぼすべての主要プラットフォームをサポート
- ハードウェアアクセラレーション: 最新のハードウェアアクセラレーション能力を最大限に活用
✅ 実用的な優位性
- 統合が容易: C-style API を提供し、既存のプロジェクトに統合しやすい
- デプロイが簡単: 単一の実行可能ファイル、デプロイが簡単
- オフライン実行: 完全にオフラインで動作し、プライバシーを保護
- オープンソース無料: MIT ライセンス、商用利用に優しい
- 活発なメンテナンス: コミュニティが活発で、更新が頻繁
制限事項と注意事項
⚠️ 技術的制限
- 音声形式: 主に 16 ビット WAV 形式をサポート、他の形式は変換が必要
- 言語モデル: トレーニングデータに基づいており、一部の方言やアクセントの認識は不正確な場合がある
- リアルタイム性: 最適化されているものの、ローエンドデバイスではリアルタイム処理に達しない場合がある
- メモリ要件: 大規模モデルは依然として大きなメモリ空間が必要
💡 使用に関する提案
- モデル選択: 精度とパフォーマンスのニーズに応じて適切なモデル規格を選択
- ハードウェア最適化: ターゲットプラットフォームのハードウェアアクセラレーション能力を最大限に活用
- 音声プリプロセス: 最高の認識効果を得るために、入力音声の品質を確保
- 量子化の使用: リソースが限られた環境では、量子化モデルの使用を検討
プロジェクトエコシステムと拡張
関連プロジェクト
- 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++ プロジェクトに統合したい開発者