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.

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ı
TTS: cihaz üstü metinden konuşmaya (piper) Planlandı
Görüntü: ekran görüntüsü analizi Planlandı