Ses & OCR
SmartRAG ses ve OCR yapılandırması - Whisper.net ve Tesseract OCR ayarları
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.Windowspaketini ekleyin, ardındanSmartRAG:WhisperConfigiçindeUseGpu = trueyapın. - Linux (NVIDIA):
Whisper.net.Runtime.Cuda.Linuxekleyin, ardındanUseGpu = trueyapın. - macOS (Apple Silicon):
Whisper.net.Runtime.CoreMLekleyin, ardındanUseGpu = trueyapın. Metal init hataları alırsanızUseGpu = falsebı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
WhisperGgmlDownloaderaracılığıyla otomatik indirilir - Hugging Face deposundan indirilir
ModelPathiç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
ModelPathkonumunda 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çeen- İngilizcede- Almancafr- Fransızcaes- İspanyolcait- İtalyancaru- Rusçaja- Japoncako- Korecezh- Ç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çeeng- İngilizcedeu- Almancafra- Fransızcaspa- İspanyolcaita- İtalyancarus- Rusçaara- Arapçachi- Çincejpn- Japoncakor- Korecehin- 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örsellerimage/png- PNG görsellerimage/tiff- TIFF görsellerimage/bmp- BMP görsellerimage/gif- GIF görseller
PDF Formatları:
application/pdf- PDF dokümanları (sayfa sayfa OCR)
Ses Kalite İpuçları
- Temiz Ses: Arka plan gürültüsü ve eko’dan kaçının
- İyi Mikrofon: Kaliteli kayıt ekipmanı kullanın
- Doğru Dil: Konuşmanın dilini doğru belirtin
- Dosya Formatı: MP3, WAV, M4A formatları en iyi sonucu verir
OCR Kalite İpuçları
- Yüksek Çözünürlük: En az 300 DPI tarama kalitesi
- Temiz Görüntü: Bulanık veya gölgeli görüntülerden kaçının
- Doğru Dil: Görüntüdeki metnin dilini doğru belirtin
- 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
);