MemoDokümantasyon
TR

Çok Modlu Yetenekler

Memo, görüntü ve konuşmayı yerel olarak destekler — tüm işleme cihaz üstünde gerçekleşir, hiçbir veri makinenden çıkmaz.

Görüntü Analizi

Memo, çok modlu GGUF modellerini kullanarak görüntüleri analiz edebilir. Görüntüler tamamen yerel olarak işlenir.

Desteklenen İş Akışı

Kullanıcı görüntü sürükler ──▶ Base64 kodla ──▶ GGUF modele gönder ──▶ Yanıtı akışa al
   (yerel)                      (bellekte)       (llama.cpp sunucu)      (SSE token)

Görüntü Girişi

  • Sohbet giriş alanına görüntü sürükle ve bırak
  • Panodan yapıştır (Ctrl+V / Cmd+V)
  • Ek düğmesi üzerinden dosya seçici

Desteklenen formatlar: PNG, JPEG, GIF, WebP, BMP.

Kodlama

Görüntüler, çok modlu modele gönderilmeden önce bellekte Base64 olarak kodlanır. Kodlama istemci tarafında (Flutter) gerçekleştirilir ve ham baytlar Go arka ucu üzerinden doğrudan yerel llama.cpp sunucusuna iletilir. Sohbet günlüğüne eklemeyi seçmediğin sürece diskte hiçbir görüntü verisi saklanmaz.

// İstemci tarafı Base64 kodlama
final bytes = await imageFile.readAsBytes();
final base64 = base64Encode(bytes);
// HTTP üzerinden yerel arka uca gönderilir

Çok Modlu GGUF Modelleri

Görüntü analizi, çok modlu bir GGUF modeli gerektirir. Güncel öneriler:

Model Boyut Kalite Notlar
llava-v1.6-mistral-7b ~4 GB (Q4_K_M) İyi Geniş görsel anlayış
llava-v1.6-vicuna-7b ~4 GB (Q4_K_M) İyi Detaylı altyazılarla ince ayarlı
bakllava-1.5-7b ~4 GB (Q4_K_M) Yeterli Hafif alternatif

Bu modeller Fabrika model mağazasında "Görüntü" etiketi filtrelenerek bulunabilir.

Kullanım Örneği

Kullanıcı: [hata diyaloğunun fotoğrafını ekler]
           Bu hata ne anlama geliyor ve nasıl düzeltirim?

Memo: "ENOSPC: no space left on device" hatası, diskinizin dolu
      olduğu anlamına gelir. İşte alan boşaltma yöntemleri...

Konuşmadan Metne (STT)

Ses girişi, internet bağımlılığı olmadan yerel bir alt süreç olarak çalışan whisper.cpp kullanır.

Mimari

Mikrofon ──▶ Ses yakalama (WAV) ──▶ whisper.cpp ──▶ Yazıya dökülen metin ──▶ Sohbet girişi
  (Flutter)    (16kHz mono)           (yerel ikili)    (UTF-8 string)           (gönderime hazır)

Cihaz Üstü Kayıt

  • Ses, Flutter ses eklentisi aracılığıyla 16 kHz mono olarak yakalanır
  • Kayıt ham PCM olarak RAM'de tutulur, ardından WAV'a kodlanır
  • WAV dosyası stdin veya geçici bir dosya (otomatik temizlenir) üzerinden whisper.cpp'ye iletilir

Transkripsiyon Hattı

whisper-cli \
  --model models/ggml-base.bin \
  --file /tmp/memo_audio.wav \
  --language auto \
  --output-txt
  • Model: ggml-base.bin (~142 MB, paketle gelir veya ilk kullanımda indirilir)
  • Dil algılama: --language auto Türkçe (TR) ve İngilizce (EN) otomatik algılar
  • Gecikme: Modern CPU'da saniye başına ~200–500ms

Dil Otomatik Algılama

whisper.cpp, ses sinyalinden konuşulan dili otomatik olarak tanımlar. Memo'nun paketli modeli şu diller için optimize edilmiştir:

Dil Algılama Doğruluğu Transkripsiyon Kalitesi
Türkçe (TR) Yüksek Çok iyi
İngilizce (EN) Yüksek Mükemmel
Karma TR/EN İyi İyi (kod değiştirme desteklenir)

Fabrika'dan ggml-large.bin modeli indirilerek ek diller kullanılabilir.

Kullanıcı Deneyimi Akışı

  1. Sohbet girişindeki mikrofon düğmesine basılı tut
  2. Konuş — dalga formu görselleştirmesi ses yakalamayı onaylar
  3. Bırak — ses whisper.cpp'ye gönderilir
  4. Transkripsiyon sohbet girişinde belirir (göndermeden önce düzenlenebilir)
  5. Gönder — yazıya dökülen metin normal mesaj olarak gönderilir


En iyi STT doğruluğu için ggml-small.bin veya ggml-medium.bin modelini kullan. Temel model hız için optimize edilmiştir ancak daha büyük modeller özellikle Türkçe için daha iyi doğruluk sunar.

Live Mode v2 — Native Sesten-Sese Konuşma

Paket: internal/livemode/ (motor, oturum, yeniden bağlanma, transkript, google/ ve openai_realtime/ motor implementasyonları)
API endpoint'leri: GET/PUT /api/livemode/engines, GET /api/livemode/engines/models, POST /api/livemode/session, GET/PUT /api/livemode/active
Tanıtıldı: v4.3.0 — oturum-ortası hafıza yenileme ve daha net hata mesajları v4.5.0'da eklendi

Sohbet giriş kutusunun yanındaki küçük bir ses ikonu — ayrı bir ekran değil — bir Live Mode konuşması başlatır. v4.3.0'dan beri bu gerçekten native sesten-sese: motor (Google Live ya da OpenAI Realtime) sesi doğrudan duyar ve konuşur, önceki whisper→LLM→Piper aktarmasının tamamen yerini alır.

  • Delegate ya da bağımsız modlar — Live Mode'u kendi başına bir konuşma olarak çalıştırın, ya da mevcut bir sohbete devredin ki ikisi hafıza ve bağlamı paylaşsın.
  • Tek yönlü barge-in — Memo konuşurken tekrar konuşun, üstünüze konuşmak yerine durup dinler.
  • Oturum-ortası hafıza yenileme (v4.5.0) — hafıza bağlamı uzun bir konuşma sırasında yeniden çekilir, sadece başta değil.
  • Daha net hatalar (v4.5.0) — gerçek bir ses motoru başlatamayan bir oturum artık neden başlatamadığını söylüyor (motor seçilmemiş, yapılandırma eksik, arkaplan sohbet oturumu açılamadı) — sessizce yankılanmış bir sese düşmek yerine.
  • Yerel yedek yol — hiçbir native motor yapılandırılmadığında, Live Mode yukarıda anlatılan cihaz-üstü whisper.cpp transkripsiyonu artı yerel Piper TTS ile uçtan uca çalışmaya devam eder, ElevenLabs ve özel TTS motorları da seçilebilir.
  • Masaüstü Maskotu eşlik eder — ağzı Live Mode sesiyle zamanlı hareket eder, bir "Konuşuyor…" balonuyla.
  • Bilinen sınırlama: henüz yankı iptali yok — hoparlör kullanımı (kulaklık yerine) Memo'nun zaman zaman kendi sesini bir kesinti sanmasına yol açabilir.

Yol Haritası

Özellik Durum
Görüntü: GGUF ile görüntü analizi Kararlı
Görüntü: çoklu görüntü karşılaştırma Planlandı
STT: cihaz üstü whisper.cpp Kararlı
STT: gerçek zamanlı akış transkripsiyonu Planlandı
Live Mode v2: native sesten-sese (Google Live / OpenAI Realtime) Kararlı (v4.3.0)
TTS: cihaz üstü Piper, artı OpenAI/ElevenLabs/özel Kararlı
Görüntü: ekran görüntüsü analizi Planlandı