13 ポイント 投稿者 GN⁺ 2026-02-12 | 1件のコメント | WhatsAppで共有
  • Mistral Voxtral Realtime 4B モデル向けの、C言語のみで実装された推論パイプラインで、外部依存が一切ないスタンドアロン構成
  • Metal GPUアクセラレーション(MPS)BLAS(OpenBLAS/Accelerate) バックエンドをサポートし、ストリーミングAPI を通じてリアルタイム音声入力とトークン出力を処理
  • メモリマップされたBF16重みスライディングウィンドウベースのエンコーダローリングKVキャッシュ により、長い音声入力でもメモリ使用量を一定に維持
  • マイク入力stdinパイプffmpeg変換による多様な音声入力方式をサポートし、代替トークン表示遅延調整オプション(-I) を提供
  • MITライセンスで公開されており、Apple M3 Max基準でリアルタイムの約2.5倍の速度を達成し、軽量なローカル音声認識を実現可能

Voxtral.c 概要

  • Mistral AIのVoxtral Realtime 4Bモデル向けの純Cベース推論エンジンで、C標準ライブラリ以外への依存はない
    • MPSバックエンドは高速な推論速度を提供し、BLAS(OpenBLAS/Accelerate) はCPUベース環境で動作
    • Pythonランタイム、CUDA、vLLM なしでも完全なローカル推論が可能
  • python_simple_implementation.py ファイルを通じて、シンプルなPython参照実装も提供
    • 必要なのは PyTorch、safetensors、soundfile、soxr のみ

主な機能

  • Zero dependencies: 外部ライブラリなしでCだけで実行可能
  • Metal GPUアクセラレーション: Apple Silicon環境で自動有効化され、GPU演算の融合とバッチ化されたアテンション処理を実施
  • ストリーミング出力: 生成されたトークンを即座にstdoutへ出力
  • Streaming C API: 音声を順次入力し、トークン文字列をリアルタイムで受信
  • メモリマップ重み: safetensorsファイルをmmapで直接ロードし、即時利用可能
  • マイク入力対応(macOS): 自動無音検出機能を含む
  • Chunked Encoder: 音声を重なりのあるチャンク単位で処理し、メモリ使用量を一定に維持
  • Rolling KV Cache: 8192ポジションのスライディングウィンドウでキャッシュを自動圧縮し、無制限長の音声を処理可能

使用方法

  • 基本コマンド
    • ./voxtral -d voxtral-model -i audio.wav : ファイルベースの音声認識
    • ./voxtral -d voxtral-model --from-mic : マイク入力のリアルタイム認識(macOS)
    • ffmpeg パイプを通じてさまざまな音声フォーマットを入力可能
  • 代替トークン表示
    • --alt <cutoff> オプションで類似発音候補もあわせて表示
    • cutoff 値が高いほど、より多くの候補を表示
  • 遅延調整 (-Iオプション)
    • エンコーダ呼び出し周期を秒単位で設定
    • 低い値(例: 0.5秒)は低遅延・高GPU負荷 / 高い値(例: 5秒)は効率的な処理
    • デフォルトは2.0秒、リアルタイムストリーミングには1.0〜2.0秒を推奨

C API構造

  • vox_stream_t ベースのストリーミングAPIを提供
    • feed() : 音声入力
    • get() : トークン受信
    • finish() : 残りの音声を処理
    • flush() : バッファを強制処理
  • vox_stream_set_alt() で代替トークン数を設定可能
  • vox_transcribe() 関数で単一ファイルの一括処理が可能

モデルのダウンロードと構成

  • HuggingFace から約8.9GBのモデル重みをダウンロード
    • consolidated.safetensors (BF16重み)
    • tekken.json (トークナイザ語彙)
    • params.json (モデル設定)
  • Apache-2.0ライセンスのモデル、MITライセンスのコード

性能ベンチマーク

  • Apple M3 Max (40コアGPU、128GB RAM) 基準
    • MPSバックエンド: エンコーダ 284ms、デコーダ 23.5ms/ステップ
    • BLASバックエンド: エンコーダ 約8秒、デコーダ 335ms/ステップ
  • 60秒音声基準で平均31.6ms/ステップ、リアルタイムの約2.5倍の速度
  • デコーダはMetalコマンドバッファの単一呼び出しでトークンごとの全演算を実行

モデルアーキテクチャ

  • 総計40億パラメータ(4B) 規模のストリーミング音声-テキストモデル
    • 音声エンコーダ: 32層 causal transformer、1280次元、32ヘッド、ウィンドウ 750
    • アダプタ: Linear(5120→3072) → GELU → Linear(3072→3072)
    • LLMデコーダ: 26層 transformer (Ministral-3ベース)、3072次元、GQA(32ヘッド/8KV)
  • Tekkenトークナイザ、語彙サイズ 131,072
  • 対応言語: 英語、スペイン語、フランス語、ポルトガル語、ヒンディー語、ドイツ語、オランダ語、イタリア語、アラビア語、ロシア語、中国語、日本語、韓国語

メモリ要件

  • モデル重み: 8.9GB (オンデマンドmmap)
  • GPUキャッシュ: 約8.4GB (BF16→F16変換後)
  • KVキャッシュ: 最大1.8GB (スライディングウィンドウ制限)
  • 作業バッファ: 約200MB

ビルドとプラットフォーム

  • macOS Apple Silicon: make mps (最速)
  • macOS Intel / Linux(OpenBLAS) : make blas
  • Ubuntu/Debian: sudo apt install libopenblas-dev
  • Fedora: sudo dnf install openblas-devel

ライセンス

  • コード: MIT
  • モデル: Apache-2.0
  • オープンソースとして誰でも修正および再配布可能

1件のコメント

 
GN⁺ 2026-02-12
Hacker Newsのコメント
  • 私はオープンソースアプリの Handy と Parakeet V3 を組み合わせて STT(音声認識)を使っています。
    速度と精度の面で、この組み合わせを超えるものはまだ見たことがありません。ほぼ即座に文字起こしされ、多少の精度低下があっても AI の 文脈を読む能力 のおかげで問題になりません。
    Voxtral C 実装を Handy に統合してみましたが、M1 Max MacBook(64GB)では文字起こしが遅すぎました。ほかの実装も試す予定です

    • Handy は素晴らしいですが、STT が リアルタイム ではなくバッチ処理方式なのが残念です
  • 私は Salvatore の voxtral.cflux2.c プロジェクトのファンです。
    外部依存なしで軽量に動く選択肢として、今後も最適化が進むことを願っています。ですが現状では実運用には遅すぎます(AMD 7800X3D/Blas 環境基準)。
    llms-py の Voice Input 機能 を追加する際、UX の面では Omarchy の voxtype.io サポートが最も良く、その次が Whisper.cpp でした。
    OpenAI Whisper は遅いものの、依然として安定したローカル文字起こしの選択肢です。
    また、Mistral の Voxtral Transcription API は速度と価格の両面で印象的でした。— 1分あたり $0.003 と非常に高速かつ低価格です。CPU やディスクに制約がある環境では最良の選択だと思います

    • モデル自体は優れていますが、ローカル推論には大きすぎます。Whisper medium は品質では劣るものの、環境適合性 の面ではより優れています。
      次は新しく出た Qwen 0.6 の文字起こしモデルを試してみるつもりです。ベンチマークどおりなら、CPU 専用最適化と 8bit 量子化 まで考慮した軽量チェーンへ発展する可能性が高いです。
      Hetzner のようなサーバーレンタル環境でも導入できる必要があるので、Intel・AMD・ARM の各セット向け最適化を試す予定です
    • 私は話しながら同時に文字起こしされる 視覚的フィードバック が必要です。voxtype がそれをサポートしているのか気になります。
      Handy にはオーバーレイ機能があるそうですが、私のシステムでは動作しません
    • voxtype と Whisper-base モデルの組み合わせに一票。かなり速くて正確です
  • Linux ではインストールは簡単でしたが、Whisper.cpp や Moonshine のような リアルタイム文字起こし はまだできません。
    --from-mic オプションが Mac のみ対応なので、ffmpeg で音声をキャプチャしてみましたが、マイク入力の接続には失敗しました。
    私のシステムはデフォルトモデルを動かすにはスペック不足のようです。
    voxtral-q4.gguf モデル を試してみたいです

    • Linux で試したところ、このモデルは リアルタイム文字起こしには遅すぎます。12分の入力ファイルを処理するのに半日かかりました
    • マイクだけでなく モニターポートの音声 もキャプチャして、Web オーディオをリアルタイム文字起こしへパイプライン処理したいです。
      Audacity や OBS Studio では録音できるので、リアルタイムでも可能な気がします。
    • ffmpeg でファイルから音声を読み込み、voxtral に渡せば動くかもしれません。
      個人的には、file→ffmpeg→voxtral、次に mic→ffmpeg→file、最後に mic→ffmpeg→voxtral の順で試すと思います
  • タイトルには CPU 専用とありますが、実際には GPU アクセラレーション もサポートしています。リポジトリの説明に明記されています

  • このプロジェクトと Rust ランタイム実装が同時に HN のメインに上がっています。興味深い競争構図 です

  • MLX バージョンの実装もあります → voxmlx

  • 私は 音声-テキスト(STT) 分野に強い関心があります。
    さまざまなアクセントや専門用語が混ざったデータを扱いたいのですが、手元にある大規模な音声サンプルデータでモデルを学習させるにはどこから始めればよいのかわかりません。助言を求めます

  • 16GB の M3 MacBook Pro で動かしてみましたが、読み込みはされるものの フリーズするか非常に遅い です

  • 20年前なら 200MB 程度でできていたことに、今では 9GB モデル が必要だというのは奇妙に感じます