会議の文字起こし、コールセンターのリアルタイム字幕、聴覚障害者向けアクセシビリティ——音声認識の用途は爆発的に増えているが、OpenAIのAPIに頼らずセルフホストで「ほぼ遅延なし」のWhisperを動かすのは依然として難しい。標準のWhisperは数十秒のチャンクを一括処理する設計で、リアルタイム用途では文の途中で切れる・文脈を失うといった問題を抱える。WhisperLiveKitはこの壁を、SimulStreaming(AlignAttポリシー)・LocalAgreement・話者識別(Sortformer/Diart)といった研究成果をひとまとめにしたOSSパッケージとして突破する。Apache-2.0、★10.2k、Python製、最新版v0.2.20(2026年3月)。Docker docker run 1発でリアルタイム文字起こし基盤が立ち上がる。本記事ではアーキテクチャから実運用までを徹底解説する。
この記事ではセルフホスト音声認識OSS WhisperLiveKitを解説します。LLMとローカルAI全体の文脈についてはLLMとは?仕組み・主要モデル比較・ローカル実行・量子化を一気にまとめる2026年版をご覧ください。
この記事のポイント
- WhisperLiveKitはSimulStreaming・話者識別・200言語対応を1パッケージにまとめた音声認識OSS(Apache-2.0、★10.2k)
- FastAPI + WebSocket構成、
pip install whisperlivekitまたは Dockerdocker runで即起動 - Apple Silicon(MLX)・CUDA・CPU・OpenAI API・Voxtralなど6種類のバックエンドから選択可能
- OpenAI/Deepgram互換のAPIを提供し、既存システムから差し替えやすい

WhisperLiveKitとは:「実用Whisper」を再構築するOSS
WhisperLiveKitはフランスのエンジニアQuentin Fuxa氏が開発する音声認識OSSだ。OpenAIのWhisperそのものをラップするのではなく、「Whisperでリアルタイムを実現するために必要な周辺技術」を最新研究から取り込み統合している。
標準のWhisperを「そのまま」リアルタイムに使うと次の問題が起きる。
- 30秒チャンクを境に音声が切られ、単語が途中で分断される
- 文脈窓が短く、後半の音声で前半の修正ができない
- 話者の切り替わりが分からない(ノートテイク用途で致命的)
- 多言語混在の音声で言語切替が苦手
WhisperLiveKitはこれらに対し、AlignAtt(注意機構を使った超低遅延出力)、LocalAgreement(連続出力の整合性確保)、Streaming Sortformer/Diart(リアルタイム話者識別)を組み合わせて解決する。SimulStreamingは特に学術論文で実証されたアルゴリズムで、英語で平均1〜2秒以下の遅延を実現する。
設計思想:「研究レベルの最新リアルタイムASR技術を、pip installで誰もが使える形にまとめる」のがWhisperLiveKitの位置づけ。Whisper本体・Faster-Whisper・MLX-Whisper等の高速バックエンドを抽象化し、上位層でストリーミング制御と話者識別を提供する。
アーキテクチャ:FastAPI+WebSocketで構成される配信系
公式が提供しているアーキテクチャ図がこの構成を端的に示している。

WhisperLiveKitは大きく3層に分かれている。
(ブラウザ / Chrome拡張 / アプリ)"] -->|"WebSocket"| B["FastAPIサーバー
(WhisperLiveKit)"] B --> C["VAD
(音声区間検出)"] C --> D["Streaming Engine
(SimulStreaming / LocalAgreement)"] D --> E{"ASR Backend"} E --> F["MLX-Whisper
(Apple Silicon)"] E --> G["Faster-Whisper
(CUDA最適化)"] E --> H["Vanilla Whisper"] E --> I["OpenAI API"] E --> J["Voxtral Mini
(Mistral 4B)"] D --> K["話者識別
(Sortformer / Diart)"] D --> L["翻訳
(NLLB-200, 200言語)"] K --> M["WebSocket Response
(speaker_id + text)"] L --> M M --> A
入力音声はブラウザのマイクからWebSocket経由でサーバーに届き、VAD(Voice Activity Detection)で発話区間を切り出した後、ASRバックエンドが文字起こしを行う。並行して話者識別モデルが「誰が話しているか」を推定し、結果をマージしてクライアントへ返す。すべてがストリーミング処理で動くため、入力から出力までの遅延が極小化される。
6つのバックエンド:Apple Silicon・CUDA・CPU・API混在対応
WhisperLiveKitの大きな魅力はバックエンドの自由度だ。1つのフロントエンドコードに対し、状況に応じてバックエンドを切り替えられる。
| バックエンド | 用途 | 強み |
|---|---|---|
| MLX-Whisper | Apple Silicon(M1/M2/M3) | Macで最高速、消費電力低 |
| Faster-Whisper | NVIDIA GPU | CUDA最適化、量子化対応 |
| Vanilla Whisper | CPU/GPU汎用 | OpenAI公式実装、最大互換性 |
| OpenAI API | クラウド経由 | 自前GPUなしでも動作 |
| Voxtral Mini | Mistral AI製、4Bパラメータ | 多言語性能、Hugging Face配布 |
| HuggingFace Transformers | カスタムモデル | LoRA/独自Fine-tuning対応 |
開発時はOpenAI APIで素早く検証し、本番ではFaster-Whisper+A10/A100に切り替えるという運用が容易だ。Apple Silicon MacBookで開発・デモする場合はMLX-Whisperで電池の持ちと速度を両立できる。
クイックスタート:3コマンドで動かす
Docker(GPU版)
git clone https://github.com/QuentinFuxa/WhisperLiveKit.git
cd WhisperLiveKit
docker build -t wlk .
docker run --gpus all -p 8000:8000 --name wlk wlk
ブラウザでhttp://localhost:8000にアクセスすればデモUIが表示される。マイクボタンを押せばその場で文字起こしが始まる。
Docker(CPU版)
GPUがない環境ではCPU版が用意されている。
docker build -f Dockerfile.cpu -t wlk --build-arg EXTRAS="cpu" .
docker run -p 8000:8000 --name wlk wlk
pipでインストール
ローカルPython環境にインストールする場合は次のとおり。
# 基本インストール
pip install whisperlivekit
# Apple Silicon用
pip install -e ".[mlx-whisper]"
# CPU PyTorch
pip install -e ".[cpu]"
# CUDA 12.9
pip install -e ".[cu129]"
# 翻訳機能(NLLB-200)追加
pip install -e ".[translation]"
# 話者識別(Sortformer)追加
pip install -e ".[diarization-sortformer]"
サーバー起動はCLIで一発。
# 英語、baseモデル
wlk --model base --language en
# 日本語、large-v3モデル
wlk --model large-v3 --language ja
# 自動言語検出+話者識別+ホスト公開
wlk --model medium --diarization --host 0.0.0.0 --port 8000
CLI機能:文字起こし・モデル管理・ベンチマークが揃う
WhisperLiveKitは単なるサーバーではなく、Ollamaライクな運用CLIを備える。
ファイルからの文字起こし
# 単純な文字起こし
wlk transcribe meeting.wav
# SRT字幕として出力
wlk transcribe --format srt podcast.mp3 -o podcast.srt
# 話者識別付き
wlk transcribe --diarization interview.m4a -o interview.txt
モデル管理
# インストール済みモデル一覧
wlk models
# モデルのダウンロード
wlk pull large-v3
# モデルの削除
wlk rm large-v3
ベンチマーク機能
# 標準ベンチマーク
wlk bench
# 特定バックエンドでベンチマーク
wlk bench --backend faster-whisper --model large-v3
ベンチマーク結果は遅延(latency)と単語誤認識率(WER)の両軸で評価される。プロジェクトのREADMEには英仏のベンチマーク散布図も掲載されており、「どのバックエンド×どのポリシー×どのモデル」が最適かを論理的に選べる。
話者識別(ダイアライゼーション)の実装
会議文字起こしでは「誰が話したか」が決定的に重要だ。WhisperLiveKitは2つのダイアライゼーション手法から選択できる。
| 手法 | 特徴 | ライセンス |
|---|---|---|
| Streaming Sortformer | NVIDIA研究、リアルタイム高精度 | Apache-2.0系 |
| Diart | pyannote.audioベース、軽量 | MIT |
ストリーミング対応している点が重要で、録音終了後に一括処理するのではなく話している最中から「Speaker A」「Speaker B」のラベルが付与される。
# Python APIでの話者識別有効化
from whisperlivekit import AudioProcessor, TranscriptionEngine
engine = TranscriptionEngine(
model_size="medium",
diarization=True, # 話者識別ON
lan="ja"
)
processor = AudioProcessor(transcription_engine=engine)
results = await processor.create_tasks()
async for result in results:
print(f"[{result.speaker}] {result.text}")
これだけで会議録のドラフトが自動生成できる。Notion・Slackへの自動送信を組み合わせれば、議事録ゼロタッチ運用が現実になる。
OpenAI/Deepgram互換APIで既存システムからの移行が容易
WhisperLiveKitの実用面で大きな魅力がAPI互換性だ。
| エンドポイント | 互換 | 用途 |
|---|---|---|
/v1/audio/transcriptions |
OpenAI Whisper API | REST、ファイル単発 |
/v1/audio/translations |
OpenAI同様 | 翻訳付き |
/asr |
Deepgram WebSocket | リアルタイムストリーミング |
| ネイティブWebSocket | 独自 | より柔軟な制御 |
つまりOpenAI APIで動いている既存アプリのエンドポイントを書き換えるだけで、セルフホストWhisperLiveKitに切り替えられる。コストとプライバシーの両面で大きな移行メリットがある。
ベンチマーク:英仏での実測値
公式リポジトリには英語・フランス語のリアルタイムベンチマーク散布図が公開されている。

横軸が遅延、縦軸が単語誤認識率(WER)。SimulStreaming(AlignAtt)+ Faster-Whisper(large-v3)の組み合わせが、低遅延と高精度を両立しているのが視覚的に分かる。フランス語版でも同様の傾向が確認できる。

これらは公式が再現可能なスクリプトで生成しており、自分の環境(GPU、モデル、言語)で再実行することで信頼性の高い選定が可能だ。
Chrome拡張:任意のWebページ音声を文字起こし
WhisperLiveKitにはオプションでChrome拡張が付属する。Google Meet・Zoom・YouTube・TikTokなどブラウザで再生されるあらゆる音声を、WhisperLiveKitサーバーに送って文字起こしできる。

利用シナリオ:
- Google Meetの文字起こしを社内サーバーで完結(議事録の外部漏えい防止)
- YouTube動画のライブ字幕を200言語に翻訳
- 海外Webinarをリアルタイムで日本語化
Chrome拡張から見えるサーバーは自分のWhisperLiveKitなので、音声データが第三者に渡らない点が企業利用での大きなアドバンテージだ。
類似ツールとの比較:Whisper.cpp・Vosk・Deepgramと何が違うか
セルフホスト音声認識の領域では複数の選択肢がある。
| ツール | 形態 | 強み | 弱み |
|---|---|---|---|
| WhisperLiveKit | OSS(Apache-2.0) | リアルタイム最適化+話者識別+多バックエンド | Whisper精度に依存 |
| Whisper.cpp | OSS(MIT) | C++実装、低リソース、組み込み向け | リアルタイム制御は別途実装が必要 |
| Vosk | OSS(Apache-2.0) | 軽量、20言語対応、モバイル対応 | 精度はWhisper系に劣る |
| Deepgram | SaaS | 高精度・高速、運用不要 | 月額コスト、データ越境 |
| AssemblyAI | SaaS | 話者識別・要約APIまで統合 | 同上 |
| OpenAI API | SaaS | 公式、簡単 | リアルタイム未対応、レート制限 |
「精度・話者識別・リアルタイム・セルフホスト・多言語」を1つで満たすのはWhisperLiveKitくらいだ。SaaSの便利さを諦められない場合でも、開発・テスト環境用にWhisperLiveKitを置いておくと費用最適化に効く。日本語の音声認識精度比較はInsanely Fast Whisper完全ガイド:OpenAI Whisperを最大23倍高速化するCLIツールの使い方も併せて参照したい。
想定ユースケースと注意点
向いているシーン
- 社内会議の自動議事録:データを外部に出せない法務・金融・医療系
- コールセンターのリアルタイム字幕:オペレーター支援、品質モニタリング
- 聴覚障害者向け会議室:ライブ字幕で参加バリアを下げる
- 海外Webinarの同時通訳:NLLB-200で200言語へリアルタイム翻訳
- ポッドキャスト・YouTube動画の字幕生成:CLI batch運用
注意すべきポイント
- GPU推奨:CPU only動作はlarge-v3で実用的でない。会議用途なら最低RTX 3060/4060クラスを推奨
- 日本語精度はlarge-v3以上が現実的:base/smallでは固有名詞・専門用語の誤認識が多い
- 話者識別は「ベター推定」:完全に正確とは限らず、訂正フェーズが必要
- WebSocket帯域:1接続で数十kbps、大規模配信ではロードバランサ必須
Local LLMツールガイド的な観点では、自社GPUで完結する音声処理基盤が組めることが大きな差別化要素になる。
モデルサイズ別の選定ガイド
WhisperLiveKitで選べるWhisperモデルは6サイズ。用途・GPU・要求精度から逆算すると次の選定軸になる。
| モデル | パラメータ | VRAM目安 | 速度 | 想定用途 |
|---|---|---|---|---|
| tiny | 39M | 1GB | 最速 | 検証・低スペックPC |
| base | 74M | 1GB | 高速 | 開発デモ、英語短文 |
| small | 244M | 2GB | 中速 | 多言語・カジュアル用途 |
| medium | 769M | 5GB | 中速 | 会議・実務での標準 |
| large | 1550M | 10GB | 低速 | 高精度要求・公開字幕 |
| large-v3 | 1550M | 10GB | 低速 | 2026年現在のベスト精度 |
「日本語×会議×話者識別×実用」なら large-v3 + Faster-Whisper + Sortformer が現時点のスイートスポット。GPU側はRTX 4070 Ti(12GB)以上を確保すると余裕がある。
運用Tips:本番投入で陥りがちな罠
1. WebSocketのプロキシ設定漏れ
Nginx/Cloudflare等の前段リバースプロキシでWebSocket通信を許可していないと「最初の数秒だけ動いて切れる」現象が起きる。
# Nginx設定例
location /asr {
proxy_pass http://localhost:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_read_timeout 3600s;
proxy_buffering off;
}
proxy_buffering offが抜けるとストリーミングがバッファされ低遅延が損なわれる。
2. GPUのVRAM枯渇
複数の同時セッションを受け付けると、Whisperモデルの推論メモリで簡単にVRAMが枯渇する。FastAPIのWorkerを増やすのではなく1Workerで複数接続を捌く設計が王道だ。Faster-Whisperのint8_float16量子化を使えばVRAM消費を半分以下に抑えられる。
3. 話者識別の初期化遅延
Sortformer/Diartは初回ロードに5〜15秒かかる。uvicornの起動時に事前ロードする--lifespan startupオプションでウォームアップしておくと、初回ユーザー体験が大きく改善する。
まとめ:「OpenAI APIに払い続ける必要があるか」を見直す節目
OpenAI Whisper APIは便利だが、月単位のコストとデータの越境という構造課題は変わらない。WhisperLiveKitはこの構造に対し、「セルフホスト×リアルタイム×話者識別×OpenAI互換」という4つの武器で代替候補を提示する。Apache-2.0で改変も商用利用も自由、★10.2kの実績、Docker一発起動という導入の手軽さを考えれば、まずは検証環境で試してみない理由がない。
最初のステップはdocker run --gpus all -p 8000:8000 wlkだけだ。マイクで30秒喋ってみて、その文字起こし精度と遅延を体感してから、本格採用の判断をすれば遅くない。
FAQ
Q. 日本語の精度はどの程度ですか?
A. large-v3モデル+Faster-Whisperバックエンドで、英語に近い精度が出ます。固有名詞・業界用語の認識を上げたい場合はLoRA Adapter機能で社内辞書をFine-tuningできます。
Q. リアルタイムでの遅延はどのくらい?
A. SimulStreaming(AlignAtt)+large-v3で平均1〜2秒(英仏ベンチマーク)。日本語はもう少し長く、設定(frame-threshold、beams)で遅延と精度のバランスを調整できます。
Q. 話者識別は何人まで認識できますか?
A. Sortformerは事前学習で2〜8人を想定しています。10人を超える会議では精度が落ちる傾向があります。Diartは話者数を動的に推定するため、人数不定の会議に向きます。
Q. NLLB-200翻訳の精度はDeepLと比べてどうですか?
A. 主要言語ペア(英↔日、英↔仏など)では実用品質ですが、専門分野や口語表現はDeepL/GPT-4の翻訳に及ばないことがあります。NLLB-200の強みは200言語対応とローカル動作です。
Q. iPhoneやAndroidからの利用は可能ですか?
A. WebSocketクライアントとして動作するので、ブラウザ経由・ネイティブアプリのどちらでも実装可能です。公式のスマホアプリは現時点で提供されていません。
Q. Chrome拡張の利用は会社のセキュリティポリシーに引っかかりますか?
A. 拡張の通信先は自社サーバー(WhisperLiveKit)なので、社内サーバーで運用すれば外部送信なしで完結します。社内認可されたWebSocket通信のみ許可するようファイアウォール設定をしてください。
Q. ファインチューニングはできますか?
A. HuggingFace TransformersバックエンドではLoRA Adapterの読み込みに対応しています。社内用語データセットで軽量Fine-tuningし、推論時にAdapterだけ差し替える運用が可能です。
参照ソース
- QuentinFuxa/WhisperLiveKit (GitHub) - 本体リポジトリ
- WhisperLiveKit Releases - 最新リリース内容(v0.2.20)
- Whisper Streaming (academic paper) - SimulStreamingアルゴリズムの一次論文
- NVIDIA Sortformer - 採用されている話者識別モデル
- pyannote/diart - Diartの上流リポジトリ
- NLLB-200 (Meta AI) - 採用されている翻訳モデル