Blog·
Cihazda
July 7, 2026

Bir sesli ajanı cihazda çalıştırmak
tek bir pipeline, üç bellek bütçesi.

Yerel bir sesli ajan tek bir model değildir — dörtlü bir pipeline’dır: ses etkinliği algılama, konuşmadan metne, bir dil modeli ve metinden konuşmaya; sıra yöneten bir durum makinesiyle birbirine bağlanır. Pipeline telefonda da dizüstünde de aynıdır. Değişen şey hangi modelin hangi kutuya girdiğidir ve bunu iki sayı belirler: ne kadar belleğin var ve hangi hızlandırıcıyı besliyorsun.

Akılda tutulacak sayı tek bir model değil, döngünün tamamıdır: konuşma algısı (STT) + yanıt üretimi (LLM) + konuşma sentezi (TTS) hepsi onun içine sığar — iPhone’da ~1,2 GB, Galaxy S23’te ~1,5 GB ve gerçek bir sohbet beyni olan bir Mac’te ~4 GB’ın altında.

Çekirdek kütüphane

Taşınabilir kısım pipeline’dır.

Orkestrasyon, speech-core içinde modelden bağımsız, saf bir C++ durum makinesi olarak yaşar: dört aşama da içine herhangi bir arka ucu taktığın arayüzlerdir — cihazda ONNX, LiteRT, CoreML/MLX ya da hatta bir bulut API’si — böylece aynı pipeline telefonda 270M’lik bir araç çağırıcı, Mac’te bir Gemma 4 beyni çalıştırır.

On-device voice-agent pipelineMicrophone audio passes an optional wake-word gate, echo cancellation, and enhancement, then voice activity detection, speech-to-text (perception), a language model with tool calls (generation), and text-to-speech (synthesis) back to the speaker. The synthesized audio feeds back as the echo-cancellation reference.wake word · AEC · enhance (opt.)tools?Audiomic inVADturn gateSTTperceptionLLMgenerationTTSsynthesisAudiospeakerAEC reference

Tek bir döngü, dört aşama. Uyandırma sözcüğü, AEC ve iyileştirme, VAD öncesi isteğe bağlı adımlardır; onu yalnızca yanıtlamak değil eyleme geçirmesini sağlayan şey LLM’in araç çağrılarıdır.

Orkestratör VoicePipeline, speech-core içinde. Sıra algılama, kesme, konuşma geçmişi, araç çağrı döngüsü ve konuşma kuyruğunu üstlenir — ama kendi modeli yoktur. Her aşama bir arayüz (VADInterface, STTInterface, LLMInterface, TTSInterface) arkasında değiştirilebilir; bunu ONNX Runtime, LiteRT, CoreML/MLX (kardeş speech-swift aracılığıyla) ya da hatta bir bulut API’siyle sağlarsın. Daha hafif modlar da var — Echo (VAD → STT → TTS) ve TranscribeOnly (VAD → STT → metin).

Mobil

Önce NPU ve tüm döngü ~1,5 GB’a sığıyor.

Telefonda kısıt bellek, pil ve ısıdır — ham işlem gücü değil. Doğru hedef sinirsel işlem birimidir (NPU): iOS’ta Apple’ın Neural Engine’i, Android’de NNAPI / Hexagon. Kuantize edilmiş transformer’ları CPU ya da GPU’nun enerjisinin bir kesriyle çalıştırır ve CPU’yu ses ile arayüze bırakır.

Neden CPU ya da GPU değil de NPU? NPU, tek bir iş için kurulmuş sabit işlevli bir veri akışı motorudur — sinir ağlarını oluşturan düşük hassasiyetli çarp-ve-topla. Ağırlıkları çip üstü SRAM’de, işlem birimlerinin hemen yanında tutar ve CPU ya da GPU enerjisinin çoğunu yiyen komut getir/çöz ile geniş genel amaçlı veri yollarını atlar. Veri taşımak hesaplamaktan çok daha pahalıdır; bu yüzden ikisini de yerelde tutmak asıl kazançtır: aynı matris çarpımları watt’ın bir kesriyle koşar — termal kısıtlama yok, pil tüketimi yok ve CPU geri kalan her şey için serbest.

Bu yüzden mobil pipeline küçük, kuantize, NPU dostu modellerden oluşur: Silero VAD, Parakeet-EOU 120M (yerleşik söz sonu algılamalı hafif akışlı STT), FunctionGemma 270M (araç çağıran beyin) ve ses için Kokoro-82M ya da Supertonic-3. Cihazda ölçüldü:

Aşama · modeliPhone 16 Pro (CoreML / ANE)Galaxy S23 (LiteRT / ONNX, CPU)
STT · Parakeet-EOU 120M0.04 RTF · 297 MB0.21 RTF · 232 MB
STT · Omnilingual 300M0.28 RTF · 495 MB0.15 RTF · 831 MB
TTS · Kokoro-82M0.08 RTF · 676 MB0.53 RTF · 640 MB
TTS · Supertonic-3 99M0.15 RTF · 956 MB0.34 RTF · 832 MB
LLM · FunctionGemma 270M128 tok/s · 236 MB118 tok/s · 611 MB

RTF = duvar saati ÷ ses saniyesi (düşük = hızlı; <1,0 gerçek zamandan hızlı). Tepe bellek her model için ayrı ayrıdır.

Her aşama gerçek zamanı aşar. Canlı bir ajan için birlikte yüklendiğinde yerleşik çalışma kümesi iPhone’da ~1,2 GB ve Galaxy S23’te ~1,5 GB’dır — fark neredeyse tamamen LLM: FunctionGemma ANE’de 236 MB’a karşılık S23 CPU’sunda 611 MB. iOS zaten NPU’da koşuyor (bu yüzden STT 0,04 RTF ve LLM 128 tok/s); Android bugün CPU’da gerçek zamanlı, NNAPI/Hexagon temsilcileri ise ön koşul değil, artı.

Dene: Examples/iOSEchoDemo iPhone’da Parakeet + Silero + Kokoro’yu tam bir yankı döngüsü olarak çalıştırır; Android tarafı speech-android içinde, aynı pipeline’ı sarar. (Examples/iOSBenchmark yukarıdaki iPhone sayılarının arkasındaki araçtır.)

Masaüstü

Makineyi süren gerçek bir LLM — yine de 4 GB’ın altında.

Mac’te kısıt gevşer: CPU ile bir Metal GPU arasında paylaşılan birleşik bellek. Aynı dört aşama, daha büyük modeller ve en önemlisi 270M’lik bir araç çağırıcı yerine gerçek bir sohbet beyni — ve tüm döngü yine de ~4 GB’a sığar.

LLM beyindir ve model boyutunun artık isteğe bağlı olmaktan çıktığı yer burasıdır. Testlerden sonra iki model işi hak etti: mobilde FunctionGemma 270M (bir araç çağrısı üretmeye yeter, bir telefon tarafı ajanının ihtiyacı olan her şey) ve masaüstünde Gemma 4 E2B/E4B (4-bit MLX) (hafif kalırken tutan gerçek çok turlu sohbet ve akıl yürütme). Cazip ortası — 1B altı kompakt bir sohbet başı — ayak izinde bedava görünür ama gerçek çok turlu sohbette sendeler, bu yüzden elenir. Önemli sıçrama 0,27B → 0,8B değildir; FunctionGemma’nın araç çağrılarından Gemma 4’ün sohbetine geçiştir.

Yığının geri kalanı da bir kademe yükselir: masaüstü hafif Parakeet-EOU’yu Parakeet-TDT (tam çok dilli) ile değiştirir ve TTS her yerde Supertonic-3 kalır — hızlı, 44,1 kHz, kararlı. Daha ağır sıfır-atış klonlama TTS modellerini bilerek atlıyoruz; klonlama, her zaman açık bir ajanın içinde oturacak kadar güvenilir değil.

AşamaMobilMasaüstü (Mac / MLX)
VADSilero v6.2.1Silero v6.2.1
STTParakeet-EOU (streaming)Parakeet-TDT (multilingual)
LLMFunctionGemma 270MGemma 4 E2B/E4B
TTSKokoro-82M / Supertonic-3Supertonic-3
Resident setiPhone ~1.2 GB · S23 ~1.5 GB~4 GB
Runner: Mac’i süren bir sesli ajan

O masaüstü yolu, Runner Agent’ın sunduğu şeydir — Mic → VAD → Parakeet-TDT → Gemma 4 → Supertonic TTS’i tamamen yerel çalıştıran, noter onaylı bir macOS uygulaması; 47 MB’lık bir DMG, tüm döngü Apple Silicon’da yaklaşık ~4 GB. Ve beyin araç çağrıları ürettiği için Runner yalnızca yanıt vermez — makineyi sesle sürer: bir tarayıcı açıp DOM işlemleri çalıştırır, Telegram ya da WhatsApp’ı açıp gelen mesajları okur ve yanıt yazar, uygulamaları başlatıp kontrol eder — hepsi sözlü komutlarla, hepsi yerel. Masaüstünün 270M’lik bir araç çağırıcı değil de Gemma 4 istemesinin asıl nedeni budur: makine üzerinde eylemek gerçek akıl yürütme ister, yalnızca alan doldurmak değil.

Takeaways

Tek bir pipeline, bütçeye göre.

Pipeline taşınır; modeller taşınmaz

VAD → STT → LLM → TTS her yerde aynı. İlginç olan her aşamayı cihazın hızlandırıcısına ve belleğine uydurmak.

Mobil: önce NPU, ~1,2–1,5 GB

Modelleri pil ve ısı seçer. ANE, iOS’u CPU açısından neredeyse bedava kılar; Android bugün CPU’da gerçek zamanlı, önünde NPU payı var.

Masaüstü: gerçek bir beyin, yine ~4 GB

Tüm döngü ~4 GB’a sığar ve bu bütçe, makineyi sesle süren Gemma 4 akıl yürütmesini ve çok dilli Parakeet-TDT’yi alır.

Hepsi yerel

Ses ve konuşma durumu cihazdan hiç çıkmaz — algı, akıl yürütme ve sentez önündeki metalde çalışır.

Where next

Okumaya devam.