Ölçümle ilerleyen kararlar
- Kalite tavanı:
whisper large-v3Türkçede WER %7,0 / CER %0,9 verdi. Ama telefon CPU’sunda gerçek zamanın 0,3 – 0,4 katı hızda çalıştı; mobilde kullanılamaz. - Küçük model:
whisper-smallWER %15,6 ve gerçek zamanın 1,5 katı hız. Kullanılabilir ama büyük modelin gerisinde. - Neden fine-tune: Kapsamı yalnızca Türkçeye indirince, küçük modelin kapasitesini 99 dil yerine tek dile ayırmak anlamlı hale geldi.
- İlk deneme: Yalnızca FLEURS (2.864 örnek) ile WER %13,7. Eğitim kaybı sıfıra yaklaşırken validasyon kaybı düzleşti; daha fazla veri değil, daha çeşitli veri gerekiyordu.
- Son eğitim: FLEURS + WorldSpeech + ISSAI TSC, 13.864 örnek, 2.500 adım: WER %14,03.
- Dağıtım: Konuşmacı tanıma da gerektiği için ASR, konuşmacı tanıma ve diarization’ı tek pakette sunan sherpa-onnx’e geçtim. Hugging Face modelini OpenAI-whisper formatına kendi yazdığım ve
strict=Trueile doğruladığım bir dönüşümle çevirip ONNX’e aktardım. - Cihaz üstü sonuç: INT8 ONNX modeli fp32’ye karşı doğrulandı: WER %16,1 / CER %3,0 (N=100, FLEURS).
Telefonda bulunan zayıflık
Gerçek telefon testinde kısa ve günlük ifadelerde hata yaptığını gördüm: “naber” → “maber”, “ses deneme” → “ses taneme”. Eğitim verisinin tamamı resmi dile yakındı (okunmuş metin, meclis kaydı, TV haberi). sherpa-onnx’in Whisper uygulaması beam search desteklemediği için (kaynak kodda kontrol ettim) bunu çözme ayarıyla düzeltemezdim. Çözüm olarak, kısa ve doğal komut cümleleri içeren Speech-MASSIVE’i eğitim karışımına katıp eğitimi son checkpoint’ten sürdüren bir adım ekledim.
Konuşmacı tanıma
ResNet34 tabanlı konuşmacı modeli, temiz Colab kayıtlarında 0,84 eşikle çalışıyordu. Gerçek telefon mikrofonunda doğru konuşmacının skorları bile 0,52 – 0,83’e düştü. Cihazda ölçtüğüm skorlara göre (doğru konuşmacı 0,52 / 0,64 / 0,79 / 0,83, başkası 0,49) eşiği 0,55’e çektim. Ayrıca VAD bölümlerinin paralel değil sıralı işlenmesi gerektiğini buldum; aksi halde art arda konuşmalarda sıra karışıyordu.
Aynı klasörde: telaffuz değerlendirme
İngilizce telaffuz için kelime düzeyinde “doğru / yanlış” kararı hedefledim; precision %12 – 32’de kaldı, bu kadar yanlış alarm kullanılamaz. Tasarımı fonem düzeyinde güven skoruna çevirdim ve bu ayrı bir uygulamaya dönüştü: Telaffuz Testi.