概要
- Voxtral Realtime 4B Pure C Implementation は、Mistral AIの音声認識モデルをC言語のみで実装した推論パイプライン
- 外部依存ゼロ で、C標準ライブラリ以外不要。MPS(Apple Silicon)やBLAS(OpenBLAS)で動作
- ストリーミングAPIとライブ音声対応、FFmpeg連携やPythonリファレンス実装も提供
- 効率的なメモリ管理 と高速推論、長時間音声にも対応
- ビルド・利用方法が簡単 で、幅広い環境で活用可能
Voxtral Realtime 4B Pure C Implementation 概要
- Mistral AIのVoxtral Realtime 4Bモデル をC言語のみで実装した推論エンジン
- 追加ライブラリ不要、C標準ライブラリのみで完結
- MPS(Apple Silicon)による高速推論、BLAS(OpenBLAS等)はやや低速
- オーディオ処理は重複ウィンドウ付きチャンクエンコーダ、入力長に関わらずメモリ使用量を制限
- FFmpeg連携で多様な音声フォーマットに対応、stdinやマイク入力もサポート
特徴
- ゼロ依存 :Cのみで動作、他のライブラリ不要
- Metal GPUアクセラレーション :Apple Siliconで自動利用、GPUバッチ処理対応
- ストリーミング出力 :トークン単位でリアルタイムに標準出力へ出力
- C APIによるストリーミング :音声を逐次投入し、トークン列を即時取得
- メモリマップド重み :safetensorsのBF16重みをmmapで即時利用
- ライブマイク入力 :macOSで--from-mic指定、無音検出機能付き
- WAV/RAW入力対応 :16bit PCM WAV自動リサンプリング
- チャンクエンコーダ :重複チャンクで長時間音声も効率処理
- ローリングKVキャッシュ :8192ポジションで自動圧縮、無制限長音声対応
クイックスタート
-
ビルド(バックエンド選択)
make mps:Apple Silicon(最速)make blas:Intel MacやLinux(OpenBLAS必須)
-
モデルダウンロード
./download_model.sh:約8.9GB
-
音声ファイルの文字起こし
./voxtral -d voxtral-model -i audio.wav
-
ライブマイク入力(macOS)
./voxtral -d voxtral-model --from-mic
-
FFmpegによる多様な音声形式対応
ffmpeg -i audio.mp3 -f s16le -ar 16000 -ac 1 - 2>/dev/null | ./voxtral -d voxtral-model --stdin
-
低遅延ストリーミング
./voxtral -d voxtral-model --stdin -I 0.5
Pythonリファレンス実装
- 自己完結型Python実装 も提供
- 必要パッケージ:torch, safetensors, soundfile, soxr
- 実行例:
python python_simple_implementation.py voxtral-model audio.wav
- vLLM不要、シンプルな参照用
使い方
-
基本的な文字起こし
./voxtral -d voxtral-model -i recording.wav- 標準出力にトークンを逐次出力
- 詳細出力制御:
--silent(無出力)、--debug(詳細)
-
類似トークン表示
--alt <cutoff>指定で、類似トークン候補も表示- カットオフ値で候補の許容度調整
-
処理間隔(-I)
-I <秒数>でエンコーダの処理周期を制御- 低値:レスポンス向上、GPU負荷増
- 高値:効率重視、バッチ処理
-
標準入力から音声読込
--stdin指定で、WAV/RAW自動判別- FFmpeg連携で多様な形式を即時変換
-
ライブマイク入力
--from-mic(macOS専用)、無音時は自動スキップ- Ctrl+Cで停止、遅延発生時は警告表示
C API利用例
-
オフライン文字起こし
vox_loadでモデル読込、vox_stream_initでストリーム生成vox_stream_feedで音声投入、vox_stream_getでトークン取得vox_stream_finishで残り音声処理、vox_stream_freeで解放
-
リアルタイムストリーミング
- 音声チャンクを逐次
vox_stream_feed、都度vox_stream_getでトークン取得 vox_stream_flushでバッファ即時処理、vox_set_processing_intervalで処理間隔調整
- 音声チャンクを逐次
-
類似トークン取得
vox_stream_set_alt(s, 3, 0.5)で最大3候補、カットオフ0.5vox_stream_get_altで候補取得
-
ワンショット変換
vox_transcribe(ctx, "audio.wav")で一括文字起こし
ビルド・動作環境
-
バックエンド選択
make:利用可能なバックエンド表示make blas:BLASアクセラレーション(macOSはAccelerate、LinuxはOpenBLAS)make mps:Apple Silicon Metal GPU(最速、macOS専用)
-
OpenBLASインストール例(Linux)
- Ubuntu/Debian:
sudo apt install libopenblas-dev - Fedora:
sudo dnf install openblas-devel
- Ubuntu/Debian:
-
モデルダウンロード
./download_model.shでHuggingFaceから約8.9GB取得- ファイル構成:
- consolidated.safetensors(全重み、BF16)
- tekken.json(トークナイザ辞書)
- params.json(モデル設定)
ベンチマーク(Apple M3 Max)
- MPS(Metal)
- エンコーダ(3.6秒音声):284ms
- デコーダプリフィル:252ms
- デコーダ1ステップ:23.5ms
- BLAS(OpenBLAS)
- エンコーダ:約8秒
- デコーダプリフィル:約1.2秒
- デコーダ1ステップ:335ms
注意点・今後の課題
- 現状はサンプル数が少なく、本番運用には追加テストが必要
- KVキャッシュの長時間ストレステスト推奨
- モデル推論パイプラインの理解・再現は完了済み
- 今後の改善は容易
モチベーションと背景
- Mistralによるオープンウェイト公開に感謝
- vLLMとの提携だけではモデルの普及が限定的
- 誰でも読めるC/Python実装を提供し、より広い利用を促進
まとめ
- Voxtral Realtime 4B Pure C Implementation は、依存ゼロ・高速・多機能な音声認識推論エンジン
- C/Python両実装 で、研究や実用に幅広く活用可能
- 簡単なビルド・導入・利用手順 で、実験・検証・応用に最適