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.
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.
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).
Ö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 · model | 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 = 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.)
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şama | Mobil | Masaüstü (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 |
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.
Tek bir pipeline, bütçeye göre.
VAD → STT → LLM → TTS her yerde aynı. İlginç olan her aşamayı cihazın hızlandırıcısına ve belleğine uydurmak.
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.
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.
Ses ve konuşma durumu cihazdan hiç çıkmaz — algı, akıl yürütme ve sentez önündeki metalde çalışır.
