はい、承知いたしました。PC上で完結するローカルでの音声認識、whisper.cpp
に焦点を当て、その魅力と詳細なセットアップ方法について解説する記事を約5000語で記述します。記事内容を直接ここに表示します。
PC完結!ローカル音声認識の決定版 whisper.cpp
の魅力と徹底セットアップガイド
はじめに:音声認識技術の現状とローカル処理の必要性
近年、AI技術の進化は目覚ましく、私たちの生活や仕事に深く浸透しています。その中でも、音声認識(Speech-to-Text, STT)は、会議議事録の作成、動画の字幕生成、音声コマンドによるデバイス操作、コールセンター業務の効率化など、多岐にわたる分野で活用されています。
これまで、高精度な音声認識を実現するためには、多くの場合、Google Cloud Speech-to-Text、AWS Transcribe、Azure Speech ServiceといったクラウドベースのAPIを利用するのが主流でした。これらのサービスは、強力なサーバーリソースと膨大なデータで訓練されたモデルを利用するため、非常に高い認識精度を誇ります。しかし、一方でいくつかの課題も存在します。
第一に、プライバシーとセキュリティです。機密性の高い情報を含む音声を扱う場合、外部のクラウドサービスにデータを送信することに抵抗を感じるユーザーや企業は少なくありません。特に医療、法律、金融などの分野では、データの取り扱いに厳格な規制があるため、クラウドへのデータ送信が制限される場合があります。
第二に、コストです。クラウドAPIは従量課金制が一般的です。短時間であれば問題ありませんが、長時間の音声データを頻繁に処理する場合、コストが累積し無視できない金額になることがあります。
第三に、オフラインでの利用です。インターネット接続が不安定な環境や、そもそもネットワークに接続できない状況では、クラウドベースのサービスは利用できません。
これらの課題を解決する手段として、ローカル環境、つまり自分のPC上で音声認識を実行する技術が注目されています。しかし、従来のローカル向け音声認識エンジンは、精度面でクラウドサービスに劣るか、セットアップが複雑である、あるいは特定の環境でしか動作しないといった制約がありました。
そこに登場したのが、OpenAIが開発した高精度な音声認識モデル「Whisper」を、C/C++言語で移植・最適化したプロジェクト、whisper.cpp
です。
whisper.cpp
は、「ローカルでの実行」「高精度な認識」「多様な環境への対応」という、これまでのローカル音声認識には難しかった要素を高次元で両立させました。本記事では、この whisper.cpp
の持つ「PC完結」の魅力に深く迫り、Windows、macOS、Linuxといった主要なOSでの詳細なセットアップ方法、そして基本的な使い方から応用までを徹底的に解説します。
クラウドに頼らず、自分の手元で高精度な音声認識を実現したいと考えるすべての人にとって、この記事が whisper.cpp
の世界への第一歩となることを願っています。
第1章: whisper.cpp
とは? ローカル音声認識の決定版たる魅力
1.1 OpenAIのWhisperモデルとは
whisper.cpp
を理解するためには、その基盤となっているOpenAIのWhisperモデルについて簡単に触れる必要があります。
Whisperは、OpenAIが2022年9月に公開したオープンソースの音声認識モデルです。インターネットから収集された68万時間もの多言語・マルチタスクのデータセットで訓練されており、英語はもちろんのこと、日本語を含む多くの言語に対応し、高い精度で音声をテキストに変換できます。さらに、単に認識するだけでなく、英語への翻訳タスクもこなすことができます。
TransformerベースのEncoder-Decoderモデルを採用しており、その構造と訓練データ量の多さから、従来の多くのオープンソース音声認識モデルと比較して飛躍的に高い汎化性能と精度を達成しました。
しかし、OpenAIが公開したオリジナルのWhisperモデルは、PyTorchという深層学習フレームワーク上で動作し、GPUでの実行を前提としていました。Python環境や特定のライブラリのインストールが必要であり、リソース消費も比較的大きいため、手軽にさまざまな環境で実行できるわけではありませんでした。
1.2 whisper.cpp
の誕生とその目的
OpenAIのWhisperモデルの公開後、その高い性能をより多くの環境で、より効率的に利用したいというニーズが生まれました。そこで、Georgi Gerganov氏によって立ち上げられたのが whisper.cpp
プロジェクトです。
whisper.cpp
は、WhisperモデルをC/C++言語でゼロから再実装(移植)したライブラリおよびツールセットです。その最大の目的は、WhisperモデルをPyTorchや特定のフレームワークに依存せず、軽量かつ高速に、様々なハードウェアで動作させることにあります。
1.3 whisper.cpp
の「PC完結」たる魅力
whisper.cpp
が多くのユーザーから支持されているのは、まさに「PC完結」で動作することに由来する数々の魅力があるからです。具体的に見ていきましょう。
魅力1: 完全オフラインでの動作(プライバシーとセキュリティ)
これが最大の魅力と言えるでしょう。一度必要なモデルファイルをダウンロードしてしまえば、whisper.cpp
はインターネット接続なしで動作します。音声データが外部サーバーに送信されることは一切ありません。これにより、機密情報を含む音声ファイルでも安心してローカルで処理できます。プライバシーに配慮が必要な個人利用から、セキュリティポリシーが厳しい企業での利用まで、幅広いニーズに応えます。
魅力2: 驚異的な効率性(CPUでの高速動作)
オリジナルのWhisperはGPUでの実行が推奨されていましたが、whisper.cpp
はCPUでの実行に最適化されています。特に、IntelやAMDの最新のマルチコアCPUでは、驚くほど高速に動作します。AVX、AVX2、AVX512といったCPUの拡張命令セットを活用することで、推論処理を効率化しています。もちろん、対応するGPU(CUDA、Metal、OpenCLなど)がある場合は、さらに高速化することも可能ですが、GPUが必須ではないという点が重要です。一般的なノートPCやデスクトップPCのCPUだけでも十分に実用的な速度で動作します。
魅力3: 高い移植性と多様なプラットフォームへの対応
C/C++で記述されているため、非常に多くのプラットフォームへの移植が容易です。Windows、macOS、Linuxといった主要なデスクトップOSはもちろんのこと、Raspberry PiのようなARMベースのシングルボードコンピューター、さらにはWebAssemblyを利用してブラウザ上での動作も実現されています。これにより、特定の環境に縛られることなく、様々なデバイスでWhisperの能力を利用できます。
魅力4: シンプルな利用方法と柔軟な出力形式
whisper.cpp
のコア機能は、コマンドラインインターフェース(CLI)として提供されています。複雑なプログラミングなしに、ターミナルやコマンドプロンプトからコマンド一つで音声ファイルを処理できます。出力形式も、プレーンテキスト(.txt)、SRT(.srt、字幕ファイル)、VTT(.vtt)、JSON(.json、詳細なタイムスタンプ情報を含む)など、多様な形式をサポートしており、目的に応じて選択できます。
魅力5: オープンソースと活発なコミュニティ
whisper.cpp
はMITライセンスの下で公開されているオープンソースソフトウェアです。誰でも自由に利用、改変、配布が可能です。GitHub上での開発は非常に活発で、バグ修正や機能追加が頻繁に行われています。また、多くのユーザーや開発者が貢献しており、問題が発生した際の情報や解決策が見つけやすいのも大きなメリットです。
魅力6: モデルサイズの選択肢
Whisperモデルには、tiny
, base
, small
, medium
, large
, large-v2
, large-v3
といった複数のサイズが提供されています。whisper.cpp
はこれらのモデルサイズに対応しており、ユーザーは自身のPCのリソースや求める精度、処理速度に応じて最適なモデルを選択できます。小さいモデルは高速でメモリ消費が少ないですが精度は控えめ、大きいモデルは高精度ですがリソースを消費し処理に時間がかかります。GGML/GGUF形式に量子化されたモデルも利用でき、さらにリソース消費を抑えることが可能です。
これらの魅力が組み合わさることで、whisper.cpp
は「PC完結」で「高精度」かつ「効率的」な音声認識ソリューションとして、非常に強力な選択肢となっています。
第2章: セットアップの準備:必要なものとモデルの選択
whisper.cpp
のセットアップに取り掛かる前に、必要なシステム要件とツール、そして利用するモデルについて確認しておきましょう。
2.1 システム要件
whisper.cpp
は比較的多くの環境で動作しますが、快適に利用するためには以下の点を考慮してください。
- オペレーティングシステム (OS): Windows (10/11), macOS, Linux (Ubuntu, Fedora, Archなど主要なディストリビューション)
- CPU: マルチコアCPUを強く推奨します。コア数が多いほど、並列処理により高速化が期待できます。AVX/AVX2/AVX512命令セットに対応しているとさらに高速です(最近の多くのCPUは対応しています)。
- RAM (メモリ): 選択するモデルサイズに依存します。
tiny
,base
: 数GB程度で十分です。small
: 8GB以上を推奨します。medium
: 16GB以上を推奨します。large
,large-v2
,large-v3
: 32GB以上を推奨します。特にlarge-v3
はVRAMも含めて10GB以上のメモリを要求することがあります。量子化モデル(後述)を利用することで、より少ないメモリで動作させることが可能です。
- ストレージ: モデルファイルを保存する容量が必要です。モデルサイズによって数百MBから数GB程度を必要とします。処理する音声ファイルや出力ファイルのためにも、十分な空き容量を確保してください。
- GPU (オプション): NVIDIA (CUDA), AMD (OpenCL), Apple Silicon (Metal) など、対応するGPUがある場合、ビルド時にオプションを指定することで、CPU処理の一部または全部をオフロードし、劇的に高速化できます。必須ではありませんが、利用できる場合は検討する価値があります。
2.2 必要なツール(前提条件)
whisper.cpp
はソースコードからビルドして使用するのが一般的です。そのため、以下の開発ツールが必要になります。OSによって用意する方法が異なります。
- Git:
whisper.cpp
のソースコードをGitHubからダウンロードするために必要です。 - CMake: ビルドシステムを生成するために使用します。異なるOSやコンパイラに対応するためのクロスプラットフォームなツールです。
- コンパイラとビルドツール: ソースコードをコンパイルして実行可能ファイルを生成するために必要です。
- Windows: Visual Studio (Build Toolsで十分) または MinGW/MSYS2 環境
- macOS: Xcode Command Line Tools (GCC, Clang, Makeなどが含まれます)
- Linux:
build-essential
パッケージに含まれるツールチェーン (GCC, G++, Makeなど)
2.3 利用するモデルの選択
whisper.cpp
は、OpenAIが公開しているオリジナルのモデルをGGML/GGUFという形式に変換して使用します。GGML/GGUFは、機械学習モデルを効率的にローカル環境で実行するために開発された形式です。
モデルはサイズによって以下の種類があります。
モデルサイズ | パラメータ数 | ディスク容量 (FP16) | ディスク容量 (Q4_0) | 必要なメモリ (目安) | 推奨される用途 | 特徴 |
---|---|---|---|---|---|---|
tiny |
39M | 約75MB | 約23MB | 数百MB | 軽量デバイス、埋め込みシステム、高速テスト | 最も高速、最も小さい、精度は控えめ |
base |
74M | 約148MB | 約46MB | 〜1GB | 一般的なPCでのバランス重視、多言語対応の最低限 | tinyより高精度 |
small |
244M | 約492MB | 約153MB | 〜2GB | デスクトップPCでの標準的な用途、良好な精度 | 多くのシーンで十分な精度と速度のバランス |
medium |
769M | 約1.5GB | 約477MB | 〜5GB | 高精度が求められる用途、リソースに余裕があるPC | 高精度、smallより大幅に精度向上 |
large |
1550M | 約3.1GB | 約963MB | 〜10GB | 最高精度が求められる用途、高性能なPC/GPU必須 | 最高精度だがリソース消費が大きい |
large-v2 |
1550M | 約3.1GB | 約963MB | 〜10GB | largeの改良版、精度向上 | largeより推奨、特に多言語で安定 |
large-v3 |
1550M | 約3.1GB | 約963MB | 〜10GB | large-v2の改良版、精度向上 | 最新版、一部環境で高速化も報告、メモリ消費注意 |
(注: ディスク容量と必要メモリは、モデルのバージョンや量子化レベルによって変動します。上記の表は一般的な目安です。)
さらに、これらのモデルは異なる精度で量子化されています。量子化とは、モデルのパラメータをより少ないビット数で表現することで、モデルファイルのサイズを削減し、メモリ消費量と計算量を減らす手法です。一般的に精度は若干低下しますが、リソースが限られた環境では非常に有効です。
f16
(FP16): 浮動小数点16ビット精度。標準的な精度で、ファイルサイズは大きい。q8_0
: 8ビット整数で量子化。比較的精度が高く、ファイルサイズは大きく削減される。q5_1
,q5_0
: 5ビット整数で量子化。q5_1
の方がq5_0
より若干精度が高い。ファイルサイズはさらに削減される。q4_1
,q4_0
: 4ビット整数で量子化。最もファイルサイズが小さく、メモリ消費も少ないが、精度低下も大きめ。q4_1
の方がq4_0
より若干精度が高い。
多くのユーザーにとっては、small
モデルの q5_1
または q8_0
量子化版あたりが、精度とリソースのバランスが良くおすすめです。初めて試す場合は、小さめの base
モデルから始めてみるのも良いでしょう。目的に応じて最適なモデルサイズと量子化レベルを選択してください。
第3章: whisper.cpp
の詳細セットアップ方法
ここからはいよいよ具体的なセットアップ手順に入ります。OSごとに必要なツールを準備し、ソースコードをダウンロードしてビルドし、モデルをダウンロードする手順を解説します。
3.1 Windowsでのセットアップ
Windowsでのセットアップ方法はいくつかありますが、ここでは最も一般的なGit、CMake、そしてVisual Studio Build Toolsを使用する方法を説明します。MinGW/MSYS2環境でもビルド可能ですが、Visual Studioの方が広く使われています。
ステップ1: 必要なツールのインストール
-
Gitのインストール:
- Gitの公式サイト (https://git-scm.com/download/win) からWindows版インストーラーをダウンロードして実行します。
- インストールオプションはデフォルトのままで構いませんが、Path環境変数への追加に関する項目では、「Use Git from the Windows Command Prompt」または「Git from the command line and also from 3rd-party software」を選択しておくと、後ほどコマンドプロンプトやPowerShellからGitコマンドを使えて便利です。
- インストール完了後、コマンドプロンプトまたはPowerShellを開き、
git --version
と入力してバージョン情報が表示されることを確認します。
-
CMakeのインストール:
- CMakeの公式サイト (https://cmake.org/download/) からWindows版インストーラーをダウンロードして実行します。
- インストールオプションでは、「Add CMake to the system PATH for all users」または「Add CMake to the system PATH for current user」を選択し、CMakeコマンドがどのディレクトリからでも実行できるように設定します。
- インストール完了後、コマンドプロンプトまたはPowerShellを開き、
cmake --version
と入力してバージョン情報が表示されることを確認します。
-
Visual Studio Build Toolsのインストール:
- Visual Studioのダウンロードページ (https://visualstudio.microsoft.com/downloads/) にアクセスし、「Visual Studio Build Tools」を探してダウンロードします。
- ダウンロードしたインストーラー
vs_buildtools.exe
を実行します。 - Visual Studio Installerが起動したら、「ワークロード」タブで「C++ によるデスクトップ開発」を選択します。右側の「インストールの詳細」で必要なコンポーネメント(例: MSVC v14x – VS 20xx C++ build tools, Windows 10/11 SDKなど)が選択されていることを確認し、インストールを開始します。
- インストールには時間がかかります。完了したらPCを再起動することが推奨されます。
ステップ2: whisper.cpp
ソースコードのダウンロード
- コマンドプロンプトまたはPowerShellを開きます。
- ソースコードを配置したいディレクトリに移動します。例:
cd Documents
- 以下のコマンドを実行して、
whisper.cpp
のソースコードをGitHubからクローン(ダウンロード)します。
bash
git clone https://github.com/ggerganov/whisper.cpp.git - クローンが完了したら、
whisper.cpp
ディレクトリに移動します。
bash
cd whisper.cpp
ステップ3: whisper.cpp
のビルド
Visual Studio Build Toolsを使用してビルドします。通常、ビルド用のコマンドプロンプト(x64 Native Tools Command Prompt for VS 20xxなど)を使用するのが最も簡単です。
- Windowsのスタートメニューを開き、「Visual Studio 20xx」フォルダ内にある「x64 Native Tools Command Prompt for VS 20xx」(または類似の名前のもの)を起動します。
- 起動したコマンドプロンプトで、先ほどクローンした
whisper.cpp
ディレクトリに移動します。例:cd Documents\whisper.cpp
- ビルド用のディレクトリを作成し、そこに移動します。ソースディレクトリ内で直接ビルドするのではなく、別のディレクトリを作成するのが一般的です。
bash
mkdir build
cd build - CMakeを使ってビルドシステム(Visual StudioのソリューションファイルやMakefileなど)を生成します。ソースディレクトリは現在のディレクトリの親 (
..
) です。
bash
cmake ..
(注: GPUサポートなどを有効にする場合は、ここで-D
オプションを指定します。例:-DWHISPER_CUBLAS=ON
でCUDAサポートを有効にします。詳細は後述の「GPUアクセラレーション」を参照してください。) - 生成されたビルドシステムを使ってコンパイル・リンクを行います。
bash
cmake --build . --config Release--build .
: 現在のディレクトリのビルドシステムを使用します。--config Release
: リリースビルドを行います(最適化され高速になります)。デバッグビルドを行いたい場合はDebug
を指定します。- ビルドには数分かかることがあります。進捗状況が表示されます。
- ビルドが成功すると、
build\bin\Release
ディレクトリ内に実行可能ファイル (main.exe
など) が生成されます。
ステップ4: モデルファイルのダウンロード
whisper.cpp
の実行には、GGML/GGUF形式のモデルファイルが必要です。プロジェクトが提供しているスクリプトを使ってダウンロードするのが便利です。
whisper.cpp
のルートディレクトリに戻ります。
bash
cd ..
(Visual StudioのNative Tools Command Promptを使っている場合は、そのまま同じプロンプトで作業を続けます。)models
ディレクトリに移動します。
bash
cd models- ダウンロードスクリプト(Pythonスクリプト)を実行します。Pythonがインストールされていない場合は、Python公式サイト (https://www.python.org/downloads/) からインストーラーをダウンロードしてインストールしてください。
--model
オプションでダウンロードしたいモデルサイズを指定します (tiny
,base
,small
,medium
,large-v3
など)。--quantize
オプションでダウンロードしたい量子化レベルを指定します (q4_0
,q5_1
,q8_0
など)。指定しない場合はFP16版がダウンロードされます(ファイルサイズが大きいです)。
例:small
モデルのq5_1
量子化版をダウンロードする場合
bash
python download-ggml-model.py --model small --quantize q5_1
または、古いダウンロードスクリプト (download-ggml-model.sh
) を使用する場合(WSLやGit Bashなどのシェル環境が必要)
bash
./download-ggml-model.sh small q5_1
(注: 最近のバージョンではPythonスクリプトが推奨されています。)
- ダウンロードが完了すると、
models
ディレクトリ内にggml-small-q5_1.bin
のような名前のモデルファイルが保存されます。
ステップ5: 動作確認
ビルドした実行可能ファイルとダウンロードしたモデルを使って、簡単な音声ファイルを処理してみましょう。
- ビルドした実行可能ファイルがあるディレクトリに移動します。(例:
cd build\bin\Release
) - ダウンロードしたモデルファイルへのパスを指定して実行します。例えば、先ほど
models/ggml-small-q5_1.bin
をダウンロードした場合、モデルパスは..\..\models\ggml-small-q5_1.bin
となります。 - テスト用の音声ファイルを用意します。
whisper.cpp
のリポジトリにはsamples
ディレクトリにテスト用のWAVファイル(例:samples/jfk.wav
)が含まれています。
bash
.\main.exe -m ..\..\models\ggml-small-q5_1.bin -f ..\..\samples\jfk.wav
(注:-m
でモデルファイル、-f
で音声ファイルを指定します。パスは実行ファイルからの相対パスまたは絶対パスで指定してください。) - 音声認識が実行され、結果がコマンドプロンプトに表示されれば成功です。
これでWindows環境での whisper.cpp
のセットアップは完了です。
3.2 macOSでのセットアップ
macOSでのセットアップは、Homebrewを使うと非常に簡単です。HomebrewはmacOS用のパッケージマネージャーです。
ステップ1: 必要なツールのインストール(Homebrewを使用)
- Homebrewのインストール:
- まだHomebrewをインストールしていない場合は、公式ウェブサイト (https://brew.sh/index_ja) にアクセスし、表示されているコマンドをターミナルで実行します。
- インストール中にXcode Command Line Toolsのインストールを求められる場合があります。指示に従ってインストールしてください。
- GitとCMakeのインストール:
- ターミナルを開き、以下のコマンドを実行します。
bash
brew install git cmake - GitとCMakeがインストールされていることを確認します。
bash
git --version
cmake --version
- ターミナルを開き、以下のコマンドを実行します。
- Xcode Command Line Toolsの確認:
- Homebrewのインストール時に含まれているはずですが、念のため確認またはインストールします。
bash
xcode-select --install - 既にインストールされている場合は、「command line tools are already installed」と表示されます。
- Homebrewのインストール時に含まれているはずですが、念のため確認またはインストールします。
ステップ2: whisper.cpp
ソースコードのダウンロード
- ターミナルを開きます。
- ソースコードを配置したいディレクトリに移動します。例:
cd Documents
- 以下のコマンドを実行してクローンします。
bash
git clone https://github.com/ggerganov/whisper.cpp.git - クローンが完了したら、
whisper.cpp
ディレクトリに移動します。
bash
cd whisper.cpp
ステップ3: whisper.cpp
のビルド
macOSでは、標準のMakeコマンドまたはCMakeコマンドでビルドできます。シンプルなのでMakeを使用する手順を説明します。
whisper.cpp
ディレクトリにいることを確認します。
bash
cd whisper.cpp- Makeコマンドを実行してビルドします。
bash
make
(注: GPU (Metal) サポートを有効にする場合は、ここでオプションを指定します。例:make -j4 WHISPER_METAL=1
(j4は並列ビルド数、お使いのCPUコア数に合わせて調整してください)。詳細は後述の「GPUアクセラレーション」を参照してください。)- ビルドには数分かかることがあります。
- ビルドが成功すると、
whisper.cpp
ディレクトリの直下に実行可能ファイル (main
) が生成されます。
ステップ4: モデルファイルのダウンロード
Windowsと同様、models
ディレクトリのスクリプトを使います。
whisper.cpp
ディレクトリにいることを確認します。
bash
cd whisper.cppmodels
ディレクトリに移動します。
bash
cd models- ダウンロードスクリプトを実行します。MacにはデフォルトでPythonがインストールされていることが多いです。
bash
python download-ggml-model.py --model small --quantize q5_1
または、シェルスクリプト版 (download-ggml-model.sh
) を使用します。
bash
./download-ggml-model.sh small q5_1
(注: Pythonスクリプトの方が安定しています。) - ダウンロードが完了すると、
models
ディレクトリ内にモデルファイル (ggml-small-q5_1.bin
など) が保存されます。
ステップ5: 動作確認
whisper.cpp
ディレクトリに戻ります。(実行可能ファイルmain
はここにあります)
bash
cd ..- ダウンロードしたモデルファイルへのパスを指定して実行します。モデルは
models
ディレクトリにあります。テスト用の音声ファイルsamples/jfk.wav
を使用します。
bash
./main -m ./models/ggml-small-q5_1.bin -f ./samples/jfk.wav
(注: macOS/Linuxでは実行ファイルを./
で指定します。) - 音声認識が実行され、結果がターミナルに表示されれば成功です。
これでmacOS環境での whisper.cpp
のセットアップは完了です。
3.3 Linuxでのセットアップ
LinuxでのセットアップもmacOSと同様に比較的シンプルです。パッケージマネージャーを使って必要なツールをインストールします。ここではDebian/Ubuntu系の apt
コマンドを例に説明します。Fedora/CentOS系の場合は dnf
または yum
を、Arch Linux系の場合は pacman
を適宜置き換えてください。
ステップ1: 必要なツールのインストール
- ターミナルを開きます。
- Git, CMake, そしてC++コンパイラとMakeを含む
build-essential
パッケージをインストールします。
bash
sudo apt update
sudo apt install git cmake build-essential- パスワード入力を求められた場合は入力してください。
- インストールされていることを確認します。
bash
git --version
cmake --version
make --version
gcc --version
g++ --version
ステップ2: whisper.cpp
ソースコードのダウンロード
macOS/Windowsと同様の手順です。
- ターミナルを開きます。
- ソースコードを配置したいディレクトリに移動します。例:
cd ~
(ホームディレクトリ) - 以下のコマンドを実行してクローンします。
bash
git clone https://github.com/ggerganov/whisper.cpp.git - クローンが完了したら、
whisper.cpp
ディレクトリに移動します。
bash
cd whisper.cpp
ステップ3: whisper.cpp
のビルド
macOSと同様に、標準のMakeコマンドまたはCMakeコマンドでビルドできます。シンプルなのでMakeを使用します。
whisper.cpp
ディレクトリにいることを確認します。
bash
cd whisper.cpp- Makeコマンドを実行してビルドします。
bash
make
(注: GPU (CUDA/OpenCL) サポートを有効にする場合は、ここでオプションを指定します。例:make -j4 WHISPER_CUDA=1
。詳細は後述の「GPUアクセラレーション」を参照してください。)- ビルドには数分かかることがあります。
- ビルドが成功すると、
whisper.cpp
ディレクトリの直下に実行可能ファイル (main
) が生成されます。
ステップ4: モデルファイルのダウンロード
Windows/macOSと同様の手順です。
whisper.cpp
ディレクトリにいることを確認します。
bash
cd whisper.cppmodels
ディレクトリに移動します。
bash
cd models- ダウンロードスクリプトを実行します。LinuxにもデフォルトでPythonがインストールされていることが多いです。
bash
python download-ggml-model.py --model small --quantize q5_1
または、シェルスクリプト版 (download-ggml-model.sh
) を使用します。
bash
./download-ggml-model.sh small q5_1 - ダウンロードが完了すると、
models
ディレクトリ内にモデルファイル (ggml-small-q5_1.bin
など) が保存されます。
ステップ5: 動作確認
whisper.cpp
ディレクトリに戻ります。(実行可能ファイルmain
はここにあります)
bash
cd ..- ダウンロードしたモデルファイルへのパスを指定して実行します。モデルは
models
ディレクトリにあります。テスト用の音声ファイルsamples/jfk.wav
を使用します。
bash
./main -m ./models/ggml-small-q5_1.bin -f ./samples/jfk.wav - 音声認識が実行され、結果がターミナルに表示されれば成功です。
これでLinux環境での whisper.cpp
のセットアップは完了です。
3.4 トラブルシューティングのヒント
セットアップ中に問題が発生した場合、以下の点を確認してください。
- コマンドが見つからない: Git, CMake, Make, GCCなどの必要なツールが正しくインストールされ、環境変数Pathが設定されているか確認してください。インストール手順を再度見直すか、ターミナルを再起動してみてください。
- クローンに失敗する: インターネット接続を確認してください。また、GitHubへのアクセスが制限されていないか確認してください。
- ビルドエラー:
- 必要なコンパイラやライブラリが不足している可能性があります。OSごとの前提条件を確認し、不足しているものをインストールしてください (
build-essential
, Xcode Command Line Tools, Visual Studio Build Toolsなど)。 - ソースコードが最新でない場合、依存関係の問題が発生することがあります。
git pull
で最新版に更新してから再度ビルドを試みてください。 - 特にGPUオプションを指定している場合、CUDA Toolkit, Metal SDK, OpenCLライブラリなどが正しくインストールされ、パスが通っているか確認が必要です。
- エラーメッセージをよく読み、インターネットで検索してみると解決策が見つかることが多いです。
- 必要なコンパイラやライブラリが不足している可能性があります。OSごとの前提条件を確認し、不足しているものをインストールしてください (
- モデルのダウンロードに失敗する: インターネット接続を確認してください。ダウンロード元サーバーが一時的に利用できない場合もあります。しばらく待ってから再度試すか、手動でモデルファイルをダウンロードして
models
ディレクトリに配置することも可能です(ただし、GGUF形式であることを確認してください)。 main
実行時にエラーが出る:- モデルファイルへのパスが正しいか確認してください。
- 入力音声ファイルへのパスが正しいか確認してください。
- モデルファイルが壊れている可能性があります。再度ダウンロードを試みてください。
- メモリが不足している可能性があります。より小さいモデルを使用するか、システムに搭載されたメモリを増やしてください。
- 特定のオーディオファイルで問題が発生する場合は、そのファイルが
whisper.cpp
がサポートする形式(一般的に16kHzサンプリングレート、16bitモノラルのWAV形式が最適ですが、FFmpegと連携して他の形式も処理できます)であるか確認してください。必要に応じてFFmpegで変換してから試してください。
第4章: whisper.cpp
の基本的な使い方
セットアップが完了し、main
実行ファイルとモデルファイルが用意できたら、実際に音声認識を行ってみましょう。基本的なコマンドラインでの使い方と、よく使うオプションを解説します。
whisper.cpp
のコマンドラインツールは、main
という名前の実行ファイルです(Windowsでは main.exe
)。基本的な使い方は以下のようになります。
“`bash
macOS / Linux
./main [options] -m
Windows (コマンドプロンプト / PowerShell)
.\main.exe [options] -m
“`
-m <model_file_path>
: 使用するモデルファイルを指定します。-f <audio_file_path>
: 音声認識を行う対象の音声ファイルを指定します。
その他のよく使うオプションを見ていきましょう。すべてのオプションを確認したい場合は -h
オプションを使用してください。
bash
./main -h
4.1 よく使うオプション
-l <language>
: 音声の言語を指定します。指定しない場合、モデルが自動的に言語を検出します。日本語を指定する場合は-l ja
です。言語コードはISO 639-1形式(例: en, ja, fr, esなど)で指定します。言語を指定することで、自動検出よりも精度が向上したり、処理が速くなる場合があります。-ojai
: JSON形式で詳細な情報を出力します。セグメントごと、単語ごとのタイムスタンプが含まれます。プログラマブルな処理に便利です。-osrt
: SRT(SubRip Subtitle)形式で出力します。動画の字幕ファイルとして広く使われる形式です。-ovtt
: VTT(WebVTT)形式で出力します。これも字幕ファイル形式で、Webでの利用に適しています。-otxt
: プレーンテキスト形式で出力します。最もシンプルな出力形式です。-of <format>
: 出力ファイルフォーマットを指定します。SRTなら-of srt
とします。-osrt
などのショートカットオプションと同じです。-o <file>
: 出力ファイル名を指定します。例えば-o output.srt
とすると、結果がoutput.srt
というファイルに保存されます。このオプションを指定しない場合、結果は標準出力(コンソール)に表示されます。-t <threads>
: 使用するスレッド数を指定します。CPUコア数に合わせて調整すると、最適なパフォーマンスが得られます。デフォルトはシステムが持つ論理コア数が多いです。-p <processors>
: GPUオフロードに使用するGPUプロセッサ数を指定します(GPUサポートを有効にしてビルドした場合)。-tr
: 音声認識結果を英語に翻訳します。多言語音声を英語に翻訳したい場合に便利です。-w
: 単語レベルのタイムスタンプを出力に含めます(対応する出力形式の場合、例:-ojai
)。-ml <length>
: 1つのセグメントの最大長をミリ秒で指定します。長い音声を分割して処理する際に使用します。-sow
: 単語の開始タイムスタンプを出力します。-fp <precision>
: 使用する浮動小数点精度を指定します (e.g., 16, 32)。量子化モデルを使用している場合は通常不要です。-skipt
: 音声認識(Transcription)ステップをスキップし、言語検出のみを行います。-b <best_of>
: 複数のデコードパスを試行し、最も確率の高い結果を選択する数を指定します。精度は向上しますが、処理時間は長くなります。デフォルトは5です。-e <entropy_thold>
: セグメントを再認識するかどうかのエントロピー閾値を設定します。値を小さくするとより多くのセグメントが再認識され、精度が向上する可能性があります。-l <logprob_thold>
: セグメントの対数確率の閾値を設定します。これを下回るセグメントは無音として扱われる場合があります。-su <speed_up>
: 実験的な高速化モード。精度が犠牲になる可能性があります。
4.2 使用例
例1: 最も基本的な音声認識
small
モデル (ggml-small-q5_1.bin
) を使用して、音声ファイル (audio.wav
) を認識し、結果をコンソールに表示します。言語は自動検出。
bash
./main -m ./models/ggml-small-q5_1.bin -f ./audio.wav
例2: 日本語を指定して音声認識
音声ファイルが日本語であるとわかっている場合、明示的に指定します (-l ja
)。
bash
./main -m ./models/ggml-small-q5_1.bin -f ./japanese_audio.wav -l ja
例3: SRT形式で出力し、ファイルに保存
動画に字幕を付けたい場合など。結果を output.srt
というファイルに保存します。
bash
./main -m ./models/ggml-small-q5_1.bin -f ./video_audio.wav -osrt -o output.srt
例4: 音声認識結果を英語に翻訳
日本語の音声ファイルを認識し、そのテキストを英語に翻訳して出力します。
bash
./main -m ./models/ggml-small-q5_1.bin -f ./japanese_audio.wav -tr
例5: JSON形式で出力し、単語レベルのタイムスタンプを含める
より詳細な時間情報が必要な場合。
bash
./main -m ./models/ggml-small-q5_1.bin -f ./audio.wav -ojai -w
例6: スレッド数を指定して実行
PCのCPUコア数が8つある場合、8スレッドで実行するように指定します。
bash
./main -m ./models/ggml-small-q5_1.bin -f ./audio.wav -t 8
例7: 異なるモデルサイズを使用
medium
モデル (ggml-medium-q5_1.bin
) を使用する場合。
bash
./main -m ./models/ggml-medium-q5_1.bin -f ./audio.wav -l ja
これらの例を参考に、目的に応じてオプションを組み合わせて使用してください。
4.3 入力音声ファイルについて
whisper.cpp
は内部でオーディオライブラリ(現在はdr_wav、dr_flac、dr_mp3などをサポート)を使用して音声ファイルを読み込みます。最も安定して動作するのは、16kHzサンプリングレート、16bit、モノラルのWAV形式です。
MP3やFLACなども読み込めますが、一部のファイルで問題が発生する可能性があります。より多くのフォーマットを確実にサポートしたい場合は、FFmpegと連携して使用するのが一般的です。whisper.cpp
のリポジトリには、FFmpegを使って様々な音声・動画ファイルから16kHzモノラルのWAVを抽出するスクリプトなども用意されています。
非常に長い音声ファイルを処理する場合、whisper.cpp
は内部で自動的にセグメントに分割して処理しますが、メモリ使用量や処理時間に影響します。必要であれば -ml
オプションでセグメント長を調整することも検討できます。
第5章: whisper.cpp
の応用と高度な利用
whisper.cpp
は基本的な音声認識だけでなく、様々な応用が可能です。ここでは、GPUアクセラレーションや量子化モデルの詳細、そしてCLIツール以外の利用方法について触れます。
5.1 GPUアクセラレーション
前述の通り、whisper.cpp
はCPUでの動作に最適化されていますが、対応するGPUがある環境ではさらに処理を高速化できます。ビルド時に特定のオプションを指定することで、GPUを利用するバックエンドライブラリとリンクされます。
- NVIDIA GPU (CUDA/cuBLAS): Linux/Windowsで利用可能です。NVIDIAドライバーとCUDA Toolkitのインストールが必要です。
- ビルドコマンド(CMakeの場合):
cmake .. -DWHISPER_CUBLAS=ON
その後cmake --build . --config Release
- ビルドコマンド(Makeの場合、Linux):
make WHISPER_CUBLAS=1
- ビルドコマンド(CMakeの場合):
- Apple Silicon GPU (Metal): macOS (Apple Silicon搭載Mac) で利用可能です。Xcodeのインストールが必要です。
- ビルドコマンド(Makeの場合、macOS):
make WHISPER_METAL=1
- ビルドコマンド(Makeの場合、macOS):
- AMD/Intel 他 (OpenCL): 一部の環境で利用可能です。OpenCL SDKや対応ライブラリのインストールが必要です。対応状況はハードウェアやドライバーに依存します。
- ビルドコマンド(CMakeの場合):
cmake .. -DWHISPER_OPENCL=ON
その後cmake --build . --config Release
- ビルドコマンド(Makeの場合、Linux):
make WHISPER_OPENCL=1
- ビルドコマンド(CMakeの場合):
GPUサポートを有効にしてビルドすると、モデルのロードや一部の計算処理がGPUにオフロードされ、特に大きなモデルを使用する場合に劇的な速度向上を期待できます。GPUを使用する場合は、-p
オプションで利用するGPUプロセッサ数(通常は1)を指定します。
例: CUDAを有効にしてビルドし、実行時にGPUを使用する場合
bash
./main -m ./models/ggml-medium-q5_1.bin -f ./audio.wav -l ja -p 1
(注: ビルドオプションの詳細は whisper.cpp
のGitHubリポジトリのREADMEを参照するのが最も確実です。)
5.2 量子化モデルの詳細
量子化モデルは、ファイルサイズ、メモリ使用量、実行速度において大きなメリットをもたらします。特にリソースが限られたPCやモバイルデバイスでWhisperを実行する場合に非常に有効です。
whisper.cpp
は、OpenAIのオリジナルのFP32/FP16モデルをGGML/GGUF形式に変換するツールも提供しています。そして、そのGGML/GGUFモデルをさらに様々な量子化レベルに変換するツール (quantize
実行ファイル) も用意されています。
モデルダウンロードスクリプト (download-ggml-model.py
) は、通常、すでに量子化されたモデルをダウンロードします。しかし、自分で特定の量子化レベルのモデルを作成したい場合や、手元にあるFP16モデルを量子化したい場合は、以下の手順で quantize
ツールを使用できます。
whisper.cpp
をビルドします (main
実行ファイルができるのと同じ手順)。quantize
実行ファイルがビルドディレクトリ内に生成されます(例: Windowsならbuild\bin\Release\quantize.exe
、macOS/Linuxならquantize
)。- FP16またはFP32のGGML/GGUFモデルを用意します(通常、ダウンロードスクリプトで
--quantize none
や--quantize f16
を指定してダウンロードします)。 -
以下のコマンドで量子化を実行します。
“`bash
# Windows
.\quantize.exe[model_base] macOS / Linux
./quantize
[model_base]
``
*: 量子化元のモデルファイルパス (
ggml-model-f16.binなど)
*: 出力する量子化モデルファイルパス (例:
ggml-model-q5_1.bin)
*: 量子化レベルを指定します (
q4_0,
q4_1,
q5_0,
q5_1,
q8_0など)
[model_base]`: (省略可能) 量子化するモデルのベース名 (tiny, base, small, etc.) を指定することで、内部的なパラメータ設定に利用されます。指定しない場合でも動作することが多いです。
*
例: ggml-small-f16.bin
を q5_1
に量子化し、ggml-small-q5_1.bin
として保存する場合
bash
./quantize ./models/ggml-small-f16.bin ./models/ggml-small-q5_1.bin q5_1 small
量子化レベルの選択は、精度とパフォーマンスのトレードオフになります。一般的に q5_1
や q8_0
は精度低下を最小限に抑えつつ、ファイルサイズとメモリ使用量を大幅に削減できるため人気があります。
5.3 whisper.cpp
をライブラリとして利用する
whisper.cpp
の魅力はCLIツールだけにとどまりません。C++ライブラリとして設計されているため、他のC++アプリケーションに組み込んで利用することが可能です。これにより、GUIアプリケーションやサーバーサイドアプリケーション、組み込みシステムなど、様々な場所にWhisperの音声認識機能を統合できます。
さらに、whisper.cpp
プロジェクトは、他のプログラミング言語からのバインディングも提供またはサポートしています。
- Python:
ctypes
を使用したバインディングがプロジェクト内に含まれています (bindings/python/whisper.py
)。これにより、Pythonスクリプトからwhisper.cpp
の機能を手軽に呼び出すことができます。より高レベルなラッパーライブラリもコミュニティによって開発されています(例:ctranslate2
やその他のWhisperラッパーの一部がwhisper.cpp
をバックエンドとして利用可能になっています)。 - Node.js: Node.jsからのバインディングも存在します。
- Rust, Go, Javaなど: コミュニティ主導で様々な言語のバインディングが開発されています。
これらのバインディングを利用することで、使い慣れた言語から whisper.cpp
の機能を活用し、独自の音声認識アプリケーションを開発することが容易になります。
5.4 Webブラウザでの利用 (WebAssembly)
whisper.cpp
の移植性の高さは、WebAssembly (Wasm) への対応にも現れています。これは、C/C++などのコードをWebブラウザ上で高速に実行できる形式にコンパイルする技術です。
whisper.cpp
をWebAssemblyにコンパイルすることで、ユーザーのブラウザ上で直接音声認識を実行するWebアプリケーションを開発できます。これは、音声データがサーバーに送信されないためプライバシー保護に優れ、サーバー負荷も軽減できるという大きなメリットがあります。
プロジェクトの examples/wasm
ディレクトリには、WebAssembly版 whisper.cpp
を使用した簡単なデモが含まれています。これは、ローカルPCのWebブラウザだけで動作する完全なオフライン音声認識の可能性を示しています。
5.5 リアルタイム音声認識
whisper.cpp
は、マイク入力からのリアルタイム音声認識にも対応しています。examples/stream
ディレクトリにある例は、ポートオーディオライブラリを使用してマイク入力をキャプチャし、それをほぼリアルタイムで音声認識するデモンストレーションです。
この機能を利用することで、PC上で動作する音声アシスタントや、発話と同時にテキストが表示される議事録ツール、ライブキャプションシステムなどを開発することが可能になります。リアルタイム性能はPCのスペックと選択するモデルサイズに大きく依存しますが、比較的小さなモデル (tiny
や base
) や、高性能なPCとGPUを利用すれば、実用的な遅延でリアルタイム処理を実現できます。
第6章: whisper.cpp
の現状と今後の展望、そして他の選択肢
whisper.cpp
は非常に活発に開発が進められているプロジェクトです。その現状と今後の展望、そして他の音声認識ソリューションとの比較について見ていきましょう。
6.1 プロジェクトの現状と展望
whisper.cpp
はGitHub上で日々更新されており、多くの開発者からの貢献があります。
- GGUF形式への移行: モデル形式が従来のGGMLからGGUF (GGML Unified Format) へと移行が進んでいます。GGUFはGGMLの後継として、より拡張性が高く、メタデータを豊富に持てるように設計されています。これにより、異なるツール間でのモデルの互換性が向上し、より柔軟なモデル利用が可能になります。
- 新しいモデルへの対応: OpenAIがWhisperモデルの新しいバージョン(例:
large-v3
)を公開するたびに、whisper.cpp
も迅速に対応を進めています。 - パフォーマンス最適化: 各種ハードウェア(CPU命令セット、様々なGPUバックエンド)でのパフォーマンス最適化が継続的に行われています。
- 機能追加: リアルタイム処理の改善、異なるオーディオ形式への対応強化、より高度な音声認識パラメータへの対応など、様々な機能が追加・改善されています。
- 周辺ツールの拡充: モデル変換ツール、量子化ツール、様々なプラットフォーム向けのビルドスクリプトや例などが整備されています。
今後も whisper.cpp
は、ローカルでの高精度音声認識のデファクトスタンダードとして進化し続けると予想されます。特に、ローカルで大規模言語モデル(LLM)を実行するための llama.cpp
と同じ開発者が中心となっており、両プロジェクト間で知見が共有されることで、ローカルAI全体の発展に貢献しています。
6.2 他の音声認識ソリューションとの比較
whisper.cpp
が強力な選択肢であることは間違いありませんが、すべてのユースケースに最適というわけではありません。他のソリューションと比較して、その立ち位置を明確にしておきましょう。
- クラウドAPI (Google, AWS, Azureなど):
- Pros: 圧倒的な精度、セットアップ不要、大量の並列処理に強い、様々な言語や専門分野(医療、法律など)に特化したモデルが利用可能、スケーラビリティが高い。
- Cons: インターネット接続必須、プライバシー/セキュリティリスク(データを外部に送信)、従量課金によるコスト増。
whisper.cpp
との比較: セットアップの手間はクラウドAPIの方が少ないですが、コスト、プライバシー、オフライン利用が必要な場合はwhisper.cpp
が優位です。精度はクラウドAPIの方が一般的に高い傾向がありますが、Whisperモデルも非常に高精度であり、多くの一般的な用途では十分以上の性能を発揮します。
- 他のオープンソースローカルエンジン (Vosk, Kaldiなど):
- Pros: ローカルで動作、無料、カスタマイズ性が高い、特定の分野に特化したモデルを作成できる場合がある。
- Cons: モデルの精度がWhisperに劣る場合が多い、セットアップやモデルの訓練が複雑、コミュニティの規模や活発さがWhisperほどでない場合がある。
whisper.cpp
との比較:whisper.cpp
はWhisperモデルの高い精度をローカルで利用できる点が最大のアドバンテージです。セットアップも比較的容易です。VoskやKaldiは特定のニッチな用途や深いカスタマイズが必要な場合に検討されることがありますが、汎用的な高精度認識を求めるならwhisper.cpp
が有力です。
このように見ると、whisper.cpp
は「プライバシーを守りながら、PCのローカル環境で、手軽に、高精度な音声認識を実現したい」というニッチでありながら非常に重要なニーズに対して、現時点で最も優れたソリューションの一つと言えます。特に個人ユーザーや中小規模の利用において、コストやプライバシーの懸念なく高精度な音声認識を活用できる点は、他の選択肢にはない大きな強みです。
結論:ローカル音声認識の未来を拓く whisper.cpp
本記事では、OpenAIの高精度音声認識モデルWhisperをC/C++で再実装したwhisper.cpp
に焦点を当て、その「PC完結」で動作する魅力から、Windows、macOS、Linuxそれぞれでの詳細なセットアップ方法、基本的な使い方、そして応用的な側面までを解説しました。
whisper.cpp
の最大の魅力は、やはり一度セットアップしてしまえば、インターネット接続なしで自分のPC上で高精度な音声認識を完結させられる点にあります。これにより、大切な音声データを外部に送信する必要がなくなり、プライバシーやセキュリティが確保されます。また、従量課金が発生しないため、どれだけ長時間利用しても追加コストがかかる心配がありません。
CPUでの効率的な動作、多様なプラットフォームへの対応、シンプルなコマンドラインインターフェース、そして活発なオープンソースコミュニティによる継続的な改善は、whisper.cpp
をローカル音声認識における決定版たらしめています。小さなモデルから巨大なモデルまで選択できる柔軟性も、ユーザーの環境や目的に合わせて最適なバランスを選ぶ上で重要です。
セットアップは、GitやCMake、ビルドツールの準備が必要なため、コマンドライン操作に慣れていない方には多少ハードルがあるかもしれませんが、本記事で解説した手順に沿って行えば、多くの環境で比較的スムーズに導入できるはずです。一度ビルドとモデルのダウンロードが完了すれば、その後の利用は非常に簡単です。
個人で議事録を作成したり、学習のために音声を文字起こししたり、開発者として独自の音声対応アプリケーションを構築したりと、whisper.cpp
の用途は無限大です。クラウドサービスの制約から解放され、自由でプライベートな音声認識環境を手に入れられることは、非常に価値のある体験となるでしょう。
もしあなたが、高精度な音声認識をローカルで、コストやプライバシーを気にせず利用したいと考えているのであれば、ぜひこの機会に whisper.cpp
の導入に挑戦してみてください。そのパフォーマンスと使いやすさに、きっと驚かされるはずです。
whisper.cpp
はまだ発展途上のプロジェクトですが、その進化のスピードとコミュニティの熱意を見れば、今後のさらなる発展に期待が膨らみます。ローカルAI、特に音声認識分野の未来を切り拓く存在として、whisper.cpp
はこれからも多くのユーザーに恩恵をもたらしてくれるでしょう。