Ses & OCR Yapılandırması

SmartRAG ses dosyalarını metne çevirme ve görsellerden metin çıkarma yetenekleri sunar:

Whisper.net (Yerel Ses Transkripsiyonu)

Whisper.net, 99+ dil desteğiyle yerel, on-premise ses transkripsiyonu sağlar:

WhisperConfig Parametreleri

Parametre Tip Varsayılan Açıklama
ModelPath string "models/ggml-large-v3.bin" Whisper model dosyası yolu
DefaultLanguage string "auto" Transkripsiyon için dil kodu
MinConfidenceThreshold double 0.3 Minimum güven skoru (0.0-1.0)
PromptHint string "" Daha iyi doğruluk için bağlam ipucu
MaxThreads int 0 CPU thread sayısı (0 = otomatik algılama)
ForceTranscribeOnly bool true true ise yalnızca kaynak dilde transkripsiyon; İngilizceye çeviri yapılmaz.
UseGpu bool false true ise ve uygulamanız bir GPU runtime referans ediyorsa (Windows/Linux CUDA, macOS CoreML) GPU kullanılır.

GPU hızlandırma

Varsayılan olarak Whisper CPU üzerinde çalışır (Whisper.net.Runtime paketi). GPU kullanmak için SmartRAG’ı referans eden uygulamanın ilgili Whisper.net runtime paketini eklemesi ve yapılandırmada WhisperConfig.UseGpu = true yapması gerekir.

  • Windows (NVIDIA): Projenize Whisper.net.Runtime.Cuda.Windows paketini ekleyin, ardından SmartRAG:WhisperConfig içinde UseGpu = true yapın.
  • Linux (NVIDIA): Whisper.net.Runtime.Cuda.Linux ekleyin, ardından UseGpu = true yapın.
  • macOS (Apple Silicon): Whisper.net.Runtime.CoreML ekleyin, ardından UseGpu = true yapın. Metal init hataları alırsanız UseGpu = false bırakın.

SmartRAG varsayılan olarak GPU runtime referans etmez; böylece yalnızca CPU kullanan kurulumlar ek paket olmadan çalışır. GPU runtime’ı yalnızca hızlandırma istiyorsanız ve ortamınız destekliyorsa ekleyin.

Whisper Model Boyutları

Model Boyut Hız Doğruluk Kullanım Durumu
tiny 75MB ⭐⭐⭐⭐⭐ ⭐⭐ Hızlı prototipleme
base 142MB ⭐⭐⭐⭐ ⭐⭐⭐ Dengeli performans
small 244MB ⭐⭐⭐ ⭐⭐⭐⭐ İyi doğruluk
medium 769MB ⭐⭐ ⭐⭐⭐⭐⭐ Yüksek doğruluk
large-v3 1.5GB ⭐⭐⭐⭐⭐ En iyi doğruluk

Model İndirme

Whisper.net, ilk kullanımda Hugging Face’den GGML modellerini otomatik olarak indirir. Modeller ModelPath yapılandırmasında belirtilen yola kaydedilir:

Otomatik İndirme:

  • Modeller ilk kullanıldığında WhisperGgmlDownloader aracılığıyla otomatik indirilir
  • Hugging Face deposundan indirilir
  • ModelPath içinde belirtilen yola kaydedilir (varsayılan: models/ggml-large-v3.bin)
  • Manuel indirme gerekmez

Model Dosyaları:

  • Format: ggml-{model-adı}.bin (örn., ggml-base.bin, ggml-large-v3.bin)
  • Mevcut modeller: tiny, base, small, medium, large-v3
  • İlk kullanımda model otomatik indirilir (~5-10 dakika, bağlantı ve model boyutuna bağlı)

Yapılandırma:

{
  "SmartRAG": {
    "WhisperConfig": {
      "ModelPath": "models/ggml-large-v3.bin"
    }
  }
}

Önemli Notlar:

  • Whisper.net kendi GGML model formatını ve indirme sistemini kullanır
  • Bu, Ollama, LM Studio veya cloud servislerinden bağımsızdır
  • Modeller ModelPath konumunda yerel olarak saklanır
  • On-premise dağıtımlar için, uygulamanın model dizinine yazma erişimi olduğundan emin olun
  • Cloud dağıtımlar için, modelleri önceden indirmeyi veya kalıcı depolama birimleri kullanmayı düşünün

Transkripsiyon vs Çeviri

Whisper iki modu destekler:

  • Transkripsiyon: Çıktı metni konuşulan dilde üretilir.
  • Çeviri: Çıktı her zaman İngilizce (SmartRAG bu modu hiç kullanmaz).

SmartRAG her zaman kaynak dilde transkripsiyon yapar, İngilizceye çeviri yapmaz. Dil belirtilmediğinde (API ve config “auto”) Whisper dili otomatik algılar ve çıktıyı o dilde verir; sistem locale’e düşmüyoruz, sunucu locale (örn. “en”) asla zorlanmaz. Çok dilli içerik için DefaultLanguage: "auto" kullanın; tüm yüklemelerde dili sabitlemek istediğinizde (örn. "tr") somut kod verin. ForceTranscribeOnly (varsayılan true) çevirinin kapalı olduğunu belgeler.

Yapılandırma Örneği

{
  "SmartRAG": {
    "WhisperConfig": {
      "ModelPath": "models/ggml-large-v3.bin",
      "DefaultLanguage": "auto",
      "ForceTranscribeOnly": true,
      "MinConfidenceThreshold": 0.3,
      "PromptHint": "",
      "MaxThreads": 0
    }
  }
}
builder.Services.AddSmartRag(configuration, options =>
{
    options.WhisperConfig = new WhisperConfig
    {
        ModelPath = "models/ggml-large-v3.bin",
        DefaultLanguage = "auto",
        ForceTranscribeOnly = true,
        MinConfidenceThreshold = 0.3,
        PromptHint = "",
        MaxThreads = 0
    };
});
  • auto - Dili otomatik algıla ve o dilde transkripsiyon yap (çok dilli içerik için önerilen).
  • tr - Türkçe
  • en - İngilizce
  • de - Almanca
  • fr - Fransızca
  • es - İspanyolca
  • it - İtalyanca
  • ru - Rusça
  • ja - Japonca
  • ko - Korece
  • zh - Çince
  • 99+ dil desteklenir

Kullanım Örneği

// Ses dosyası yükleme
var document = await _documentService.UploadDocumentAsync(
    audioStream,
    "toplanti-kaydi.mp3",
    "audio/mpeg",
    "kullanici-id"
);

// AI ile ses dosyası hakkında soru sorma
var response = await _aiService.AskAsync(
    "Bu toplantıda hangi konular konuşuldu?",
    "kullanici-id"
);

Gizlilik Öncelikli

Ses dosyaları Whisper.net kullanılarak yerel olarak işlenir. Hiçbir veri makinenizi terk etmez - GDPR/KVKK/HIPAA uyumluluğu için mükemmel.

OCR Yapılandırması

Tesseract OCR, 100+ dil desteğiyle görsellerden ve PDF’lerden metin çıkarma sağlar:

Tesseract Dil Desteği

// Görselleri yüklerken OCR için dil belirtin
var document = await _documentService.UploadDocumentAsync(
    imageStream,
    "fatura.jpg",
    "image/jpeg",
    "kullanici-id",
    language: "tur"  // Türkçe OCR
);

// İngilizce OCR
language: "eng"

// Çoklu dil
language: "tur+eng"

Desteklenen OCR Dilleri

  • tur - Türkçe
  • eng - İngilizce
  • deu - Almanca
  • fra - Fransızca
  • spa - İspanyolca
  • ita - İtalyanca
  • rus - Rusça
  • ara - Arapça
  • chi - Çince
  • jpn - Japonca
  • kor - Korece
  • hin - Hintçe
  • 100+ dil desteklenir

OCR Kullanım Örnekleri

// Fatura analizi
var invoice = await _documentService.UploadDocumentAsync(
    invoiceStream,
    "fatura-2024-01.pdf",
    "application/pdf",
    "kullanici-id",
    language: "tur"
);

var analysis = await _aiService.AskAsync(
    "Bu faturada hangi ürünler var ve toplam tutar nedir?",
    "kullanici-id"
);

// Kimlik belgesi analizi
var idCard = await _documentService.UploadDocumentAsync(
    idCardStream,
    "kimlik.jpg",
    "image/jpeg",
    "kullanici-id",
    language: "tur"
);

var info = await _aiService.AskAsync(
    "Bu kimlik belgesindeki kişinin adı ve doğum tarihi nedir?",
    "kullanici-id"
);

OCR Yetenekleri

OCR Yetenekleri

  • ✅ Mükemmel çalışır: Basılı dokümanlar, taranmış metinler, dijital ekran görüntüleri
  • ⚠️ Sınırlı destek: El yazısı metin (çok düşük doğruluk)
  • 💡 En iyi sonuçlar: Basılı dokümanların yüksek kaliteli taramaları
  • 🔒 %100 On-Premise: Buluta veri gönderilmez - Tesseract on-premise olarak çalışır

Desteklenen Dosya Formatları

Ses Formatları:

  • audio/mpeg - MP3 dosyaları
  • audio/wav - WAV dosyaları
  • audio/m4a - M4A dosyaları
  • audio/flac - FLAC dosyaları
  • audio/ogg - OGG dosyaları

Görsel Formatları:

  • image/jpeg - JPEG görseller
  • image/png - PNG görseller
  • image/tiff - TIFF görseller
  • image/bmp - BMP görseller
  • image/gif - GIF görseller

PDF Formatları:

  • application/pdf - PDF dokümanları (sayfa sayfa OCR)

Ses Kalite İpuçları

  1. Temiz Ses: Arka plan gürültüsü ve eko’dan kaçının
  2. İyi Mikrofon: Kaliteli kayıt ekipmanı kullanın
  3. Doğru Dil: Konuşmanın dilini doğru belirtin
  4. Dosya Formatı: MP3, WAV, M4A formatları en iyi sonucu verir

OCR Kalite İpuçları

  1. Yüksek Çözünürlük: En az 300 DPI tarama kalitesi
  2. Temiz Görüntü: Bulanık veya gölgeli görüntülerden kaçının
  3. Doğru Dil: Görüntüdeki metnin dilini doğru belirtin
  4. Kontrast: Yüksek kontrastlı, siyah-beyaz görüntüler tercih edin

Ses ve OCR Karşılaştırması

Whisper.net ve Tesseract OCR yeteneklerini karşılaştırın:

Özellik Whisper.net Tesseract OCR
Veri Gizliliği %100 On-premise %100 On-premise
Doğruluk ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐
Dil Desteği ⭐⭐⭐⭐⭐ (99+ dil) ⭐⭐⭐⭐ (100+ dil)
Kurulum ⭐⭐⭐⭐ ⭐⭐⭐⭐⭐
Maliyet Ücretsiz Ücretsiz
Performans ⭐⭐⭐⭐ ⭐⭐⭐

Güvenlik ve Gizlilik

Ses Güvenliği

// Whisper.net tamamen on-premise çalışır
var document = await _documentService.UploadDocumentAsync(
    sensitiveAudioStream,
    "gizli-toplanti.mp3",
    "audio/mpeg",
    "kullanici-id"
    // Veri hiçbir zaman buluta gönderilmez
);

OCR Güvenliği

// OCR tamamen on-premise çalışır
var document = await _documentService.UploadDocumentAsync(
    sensitiveImageStream,
    "gizli-dokuman.jpg",
    "image/jpeg",
    "kullanici-id",
    language: "tur"
    // Veri hiçbir zaman buluta gönderilmez
);

Sonraki Adımlar

Gelişmiş Yapılandırma

Yedek sağlayıcılar ve en iyi pratikler

Gelişmiş Yapılandırma

Örnekler

Ses ve OCR kullanım örnekleri

Örnekleri Gör