音声エージェントをオンデバイスで動かす
一つのパイプライン、三つのメモリ予算。
ローカルの音声エージェントは一つのモデルではなく、四つのパイプラインです。音声区間検出、音声認識、言語モデル、音声合成が、ターン管理の状態機械でつながっています。パイプラインはスマホでもノートPCでも同じ。変わるのは各枠にどのモデルを入れるかで、それを決めるのは二つの数字——メモリがどれだけあるか、そしてどのアクセラレータに流すかです。
押さえるべき数字はループ全体であって、一つのモデルではありません。音声知覚(STT)+ 応答生成(LLM)+ 音声合成(TTS)のすべてがその中に収まります——iPhone で約 1.2 GB、Galaxy S23 で約 1.5 GB、そして本物の対話ブレインを載せた Mac で約 4 GB 未満です。
パイプラインこそ移植可能な部分。
オーケストレーションは speech-core にある純粋な C++ 状態機械で、モデル非依存です。四つの段はどれもインターフェースで、任意のバックエンドを差し込めます——オンデバイスの ONNX、LiteRT、CoreML/MLX、あるいはクラウド API まで。だから同じパイプラインがスマホで 270M のツール呼び出し器を、Mac で Gemma 4 ブレインを動かします。
一つのループ、四つの段。ウェイクワード、AEC、強調は VAD 前の任意の段。LLM のツール呼び出しこそが、ただ答えるのではなく行動させるものです。
オーケストレーターは VoicePipeline( speech-core)。ターン検出、割り込み、会話履歴、ツール呼び出しループ、発話キューを担いますが、モデルは一切持ちません。各段は インターフェース(VADInterface、STTInterface、LLMInterface、TTSInterface)の背後で差し替え可能で、ONNX Runtime、LiteRT、CoreML/MLX(姉妹の speech-swift経由)、あるいはクラウド API で実装できます。より軽いモードもあります——Echo(VAD → STT → TTS)と TranscribeOnly(VAD → STT → テキスト)。
NPU 優先、ループ全体が約 1.5 GB に収まる。
スマホでの制約はメモリ・電池・発熱であって、生の演算力ではありません。狙うべきはニューラル処理ユニット(NPU)——iOS では Apple の Neural Engine、Android では NNAPI / Hexagon。量子化トランスフォーマーを CPU や GPU の何分の一かの電力で動かし、CPU を音声と UI のために空けておきます。
なぜ CPU や GPU ではなく NPU なのか。NPU は一つの仕事——ニューラルネットの本体である低精度の積和演算——のために作られた固定機能のデータフローエンジンです。重みをオンチップの SRAM に演算ユニットのすぐ隣で保持し、CPU や GPU のエネルギーの大半を食う命令フェッチ/デコードと汎用の広いデータパスを飛ばします。データの移動は計算そのものよりはるかに高くつくので、両方をローカルに保つことが勝ち筋です。同じ行列積がわずかな電力で走り——サーマルスロットリングもバッテリー消耗もなく、CPU は他のすべてに使えます。
だからモバイルのパイプラインは、小さく量子化された NPU 向きのモデルです。Silero VAD、Parakeet-EOU 120M(発話終端検出を内蔵した軽量ストリーミング STT)、FunctionGemma 270M(ツール呼び出しのブレイン)、そして音声に Kokoro-82M か Supertonic-3。実機計測:
| 段 · モデル | iPhone 16 Pro(CoreML / ANE) | Galaxy S23(LiteRT / ONNX、CPU) |
|---|---|---|
| STT · Parakeet-EOU 120M | 0.04 RTF · 297 MB | 0.21 RTF · 232 MB |
| STT · Omnilingual 300M | 0.28 RTF · 495 MB | 0.15 RTF · 831 MB |
| TTS · Kokoro-82M | 0.08 RTF · 676 MB | 0.53 RTF · 640 MB |
| TTS · Supertonic-3 99M | 0.15 RTF · 956 MB | 0.34 RTF · 832 MB |
| LLM · FunctionGemma 270M | 128 tok/s · 236 MB | 118 tok/s · 611 MB |
RTF=実時間 ÷ 音声秒数(低いほど高速。<1.0 で実時間より速い)。ピークメモリは各モデル単独。
どの段も実時間を上回ります。ライブエージェントとして一緒に読み込むと、常駐ワーキングセットは iPhone で約 1.2 GB、Galaxy S23 で約 1.5 GB——差はほぼすべて LLM です。FunctionGemma は ANE で 236 MB、S23 の CPU では 611 MB。iOS はすでに NPU で動いており(STT が 0.04 RTF、LLM が 128 tok/s なのはそのため)、Android は今日 CPU で実時間、NNAPI/Hexagon デリゲートは前提ではなく上振れです。
試す: Examples/iOSEchoDemo は iPhone 上で Parakeet + Silero + Kokoro を完全なエコーループとして動かします。Android 側は speech-androidにあり、同じパイプラインを包んでいます。(Examples/iOSBenchmark は上の iPhone 数値の計測ツールです。)
マシンを操作する本物の LLM——それでも 4 GB 未満。
Mac では制約が緩みます。CPU と Metal GPU が共有するユニファイドメモリ。同じ四段でも、より大きなモデル、そして何より 270M のツール呼び出し器ではなく本物の対話ブレイン——それでもループ全体は約 4 GB に収まります。
LLM はブレインで、モデルサイズが任意でなくなる場所です。試した結果、二つのモデルが職を勝ち取りました。モバイルの FunctionGemma 270M(ツール呼び出しを出すには十分で、スマホ側エージェントに必要なすべて)と、デスクトップの Gemma 4 E2B/E4B(4-bit MLX)(本物のマルチターン対話と推論が持ちこたえ、しかも軽い)。中間の誘惑——1B 未満のコンパクトなチャットヘッド——はフットプリントは無料に見えても実際のマルチターンでぐらつくので、選外です。効くのは 0.27B → 0.8B の跳躍ではなく、FunctionGemma のツール呼び出し → Gemma 4 の対話です。
スタックの他も一段上がります。デスクトップは軽量の Parakeet-EOU を Parakeet-TDT(フル多言語)に替え、TTS はどこでも Supertonic-3——高速・44.1 kHz・安定。より重いゼロショットクローン TTS はあえて外します。クローンは常時稼働のエージェントに入れるにはまだ十分に安定していません。
| 段 | モバイル | デスクトップ(Mac / MLX) |
|---|---|---|
| VAD | Silero v6.2.1 | Silero v6.2.1 |
| STT | Parakeet-EOU (streaming) | Parakeet-TDT (multilingual) |
| LLM | FunctionGemma 270M | Gemma 4 E2B/E4B |
| TTS | Kokoro-82M / Supertonic-3 | Supertonic-3 |
| Resident set | iPhone ~1.2 GB · S23 ~1.5 GB | ~4 GB |
そのデスクトップ経路こそ Runner Agent が提供するものです——Mic → VAD → Parakeet-TDT → Gemma 4 → Supertonic TTS を完全ローカルで動かす、Apple 公証済み macOS アプリ。47 MB の DMG で、ループ全体は Apple Silicon 上で約 4 GB。そしてブレインがツール呼び出しを出すので、Runner はただ返答するだけでなく音声でマシンを操作します——ブラウザを開いて DOM 操作を実行し、Telegram や WhatsApp を開いて受信メッセージを読み返信を打ち、アプリを起動して制御する——すべて音声コマンドから、すべてローカルで。これがデスクトップが 270M のツール呼び出し器ではなく Gemma 4 を欲しがる本当の理由です。マシンに対して行動するには、枠を埋めるだけでなく本物の推論が要ります。
一つのパイプライン、予算に合わせて。
VAD → STT → LLM → TTS はどこでも同じ。面白いのは各段をデバイスのアクセラレータとメモリに合わせること。
電池と発熱がモデルを選ぶ。ANE は iOS を CPU 的にほぼ無料にする。Android は今日 CPU で実時間、NPU の余地はこれから。
ループ全体が約 4 GB に収まり、その予算で音声でマシンを操作する Gemma 4 の推論と、多言語 Parakeet-TDT が手に入る。
音声も会話状態もデバイスを離れない——知覚・推論・合成のすべてが目の前の金属の上で動く。
