AIエージェント

VoxlocalでRustを使ってローカル音声エージェントを構築する

Voxlocalは、macOS上でローカルに動作する、Rustで書かれたミニマルなオープンソースの音声エージェントです。音声認識、ベクトル検索、小規模言語モデルをチェーンすることで、低レイテンシなインテリジェンスを実現する方法を示しています。

Rust gears interacting with digital audio waves representing local voice processing
この記事用に生成されたイラスト

英語の原文から自動翻訳されました。

Sam Khawase氏は、macOS向けに完全にローカルで動作する音声エージェントとして機能する、Rustで書かれたオープンソースのコマンドラインツール「Voxlocal」をリリースしました。2026年10月に公開されたこのプロジェクトは、クラウド依存を取り除き、既製のマイクロモデルを使用して音声駆動型AIシステムの内部構造を実証するものです。

何が起きたか

音声エージェントは通常、オーディオストリーミング、音声からテキストへの変換、大規模言語モデルの推論を処理するために、複雑なクラウドインフラストラクチャに依存しています。Khawase氏は、このスタックの謎を解明するため、完全にローカルマシンで動作する簡素な実装を開発し、Voxlocalを作成しました。本プロジェクトは自動車サービスという狭いユースケースに焦点を当て、ユーザーが英語の音声コマンドを通じてサービス料金などの質問を行えるようにしています。

このツールは、パイプラインを透明かつ検証可能な状態に保つため、非同期ストリーミングや音声活動検出(Voice Activity Detection)といった高度な機能を意図的に避けています。コアコンポーネントを一から作り直す代わりに、Voxlocalは文字起こし用のWhisperや音声合成用のPiperなど、既存のオープンソースモデルを組み込んでいます。このアプローチにより、開発者はプロプライエタリAPIの不透明性や重い抽象化レイヤーなしに、会話ループの各段階を研究できます。

ローカルで実行することにより、エージェントはリモートサーバーに関連するネットワーク遅延を排除しますが、十分なローカル計算リソースが必要になります。ソースコードは一般公開されており、リアルタイム音声処理とローカルAI推論のメカニズムに興味のあるエンジニア向けの教育資源として機能します。

仕組み

エージェントは、オーディオキャプチャから始まる線形パイプラインに従います。マイクは大気圧の変化を記録し、モノラル形式で毎秒16,000サンプルのデジタルオーディオサンプルに変換します。これらのサンプルは、音声認識用に訓練されたニューラルネットワークであるWhisperに渡されます。Voxlocalは温度ゼロでの貪欲デコーディングを使用しており、これはモデルが確率分布からサンプリングするのではなく、最も可能性の高い次のトークンを選択することを意味します。これにより、デモの限られたコンテキストに適した決定論的な出力が保証されます。

文字起こし後、テキストは正規化され、「um」などのフィラーワードが削除され、フォーマットが標準化されます。クリーンアップされたテキストは、埋め込みモデルであるMiniLMを使用して数値ベクトルに変換されます。このプロセスにはマスク付き平均プーリングが含まれており、トークン表現を平均化して単一の文ベクトルを作成し、その後L2正規化して長さを1にします。この数学的表現により、システムはキーワード一致だけでなく、意味的な比較が可能になります。

システムは、クエリベクトルを事前に計算されたサービスドキュメントのベクトルと比較することで、検索拡張生成(RAG)を実行します。関連するコンテキストを見つけるために内積によるコサイン類似度を計算し、0.35未満の閾値を下回る一致を破棄します。上位の一致は、Candle経由で実行される小規模言語モデルSmolLM2に供給されます。モデルは、自由形式のテキストを生成するのではなく、価格確認などの構造化されたJSONツール呼び出しを出力するようにプロンプトされます。最後に、Piperが応答テキストを再生用のオーディオに再合成します。

主要な詳細

  • VoxlocalはRustで構築されたCLIツールであり、特にmacOS環境向けに設計されています。
  • 音声からテキストへのコンポーネントは、決定論的な結果を得るために、貪欲デコーディングと温度ゼロのWhisperを使用します。
  • テキスト正規化は正規表現に依存し、埋め込み前にフィラーワードを除去し、間隔を標準化します。
  • セマンティック検索はMiniLM埋め込みとコサイン類似度を使用し、ドキュメント取得のための最小類似度閾値は0.35です。
  • 言語モデルSmolLM2は構造化されたJSONツール呼び出しの出力に制限されており、実行前にRustコードによって解析および検証されます。
  • 音声合成はPiperが担当し、事前学習済みボイスモデルを使用して最終的なテキスト応答をオーディオ波形に変換します。

なぜ重要なのか

会話型インターフェースを構築するソフトウェアエンジニアにとって、Voxlocalは機能する音声エージェントの裏側を見る貴重な機会を提供します。多くの本番システムでは、これらのステップをマネージドサービスの背後に抽象化しているため、遅延ボトルネックや精度の問題がどこから来ているのかを理解することが困難です。Khawase氏はパイプラインをRustで実装することで、ミリ秒単位が重要なリアルタイムオーディオアプリケーションにおける型安全性とパフォーマンスの重要性を強調しています。

また、このプロジェクトは特定のドメインにおける小さくローカルなモデルの実用性も示しています。SmolLM2とMiniLMの使用は、専門的なタスクが必ずしも巨大なクラウドホスティングモデルを必要としないことを示唆しています。このアプローチはコスト削減とプライバシー向上につながり、データがユーザーのデバイスから離れることがありません。しかし同時に、不正なJSON出力を処理するための慎重な解析および修復ロジックが必要になるなど、小規模モデルの脆さも明らかになっています。

アナログな音波からデジタルベクトルへ、そして再びオーディオへと変換される過程を理解することは、開発者がより良いアーキテクチャ上の意思決定を行う助けとなります。テレフォニープロバイダーにおいてジッターバッファリングやオーディオアップサンプリングがなぜ重要なのか、また埋め込み前に正規化がなぜ不可欠なのかが明確になります。この知識は、サードパーティの音声サービスを統合する際に問題を検査・修正する能力をチームに与えます。

できること

  • GitHubからVoxlocalリポジトリをクローンし、Rustソースコードを検査してパイプライン構造を理解してください。
  • Whisperの貪欲デコーディングパラメータを実験し、温度設定が文字起こしの精度にどのように影響するかを確認してください。
  • 正規化段階の正規表現を変更し、異なるフィラーワードや話し言葉のパターンに対応させてください。
  • 検索ステップのコサイン類似度閾値を調整し、特定のデータセットに対する精度と再現性のバランスを取ってください。
  • ツール呼び出し解析ロジックをテストするために、不正なJSON出力を入力し、修復関数がエラーをどのように処理するかを確認してください。
  • モックエクゼキューターを実際のAPI呼び出しに置き換え、実際の予約や価格サービスワークフローに統合してください。

Bytechapストアのツール

続きを読む

すべての記事