Sesten metne tanıma hattını kurmak ve ölçmek
Ses yakalamadan akışlı çözümlemeye kadar tanıma hattının halkalarını, her halkanın bir sonrakine bıraktığı hatayı ve kelime hata oranının kendi kayıtlarınızla nasıl hesaplandığını öğretir.
BU DERSİN SONUNDA
- Tanıma hattının halkalarını ve her halkanın ürettiği hata türünü ayırt etmek
- Örnekleme hızı, kanal ve pencere kararlarını gerekçelendirmek
- Kelime hata oranını kendi kayıtları üzerinde hesaplamak ve türlerine ayırmak
- Toplu ve akışlı çözümleme arasında bütçeye dayalı seçim yapmak
- 1
Teori
Kavramın çalışma mantığı
- 2
Örnek
Gerçek bir senaryo üzerinde gösterim
- 3
Lab
Uygulamalı alıştırma
- 4
Test
Kısa ölçüm
- 5
Proje
Rotadaki projeye katkı
Kısa cevap
Tanıma hattı beş halkadan oluşur: yakalama, konuşma etkinliği tespiti, parçalama, çözümleme ve son düzeltme. Her halka bir sonrakine hata bırakır; hattın toplam kalitesi en zayıf halkaya bağlıdır. Bu yüzden ölçüm yalnızca çözümleyicinin nihai çıktısında değil, hattın her kavşağında yapılır — ara çıktıları saklamayan bir hatta hata teşhis edilemez.
Teori: hattın halkaları#
Mikrofon sesi analog bir elektrik sinyaline çevirir; dönüştürücü bu sinyali sabit aralıklarla örnekler. Örnekleme hızı, temsil edilebilen en yüksek frekansı belirler: örnekleme hızının yarısının üstündeki frekanslar geri katlanır ve sinyale gürültü olarak karışır. İnsan konuşmasının ayırt edici bilgisinin büyük kısmı düşük frekanslarda yoğunlaştığı için telefon kalitesindeki bir kayıt bile anlaşılır kalır; ama /s/ ve /ş/ gibi sürtünmelilerin ayrımı üst bantta taşınır, kanal orayı kestiğinde karışıklık başlar.
Çözümleyici ses dalgasını doğrudan okumaz; kısa pencerelere böler ve her pencereden bir öznitelik vektörü çıkarır. Pencere uzunluğu bir ödünleşimdir: kısa pencere zamanda keskin ama frekansta bulanıktır, uzun pencere tersi. Sonraki katman bu vektör dizisini karakter veya alt-kelime birimlerine çevirir; yani çıktı doğrudan kelime değildir, kelime sonradan birleştirilir. Hatalar bu yüzden kelime düzeyinde değil bu alt birimlerde doğar ve birleştirme sırasında tam kelimeye yayılır.
Konuşma etkinliği tespiti hattın en ucuz ama en belirleyici halkasıdır: konuşma olan aralıkları işaretler, sessizliği atar. İki yönlü bir riski vardır. Eşik yüksekse kelime başları ve sonları kesilir, çözümleyici eksik sinyalle çalışır; eşik düşükse gürültü konuşma sanılır ve çözümleyiciye boşluk gönderilir. İkinci durum yalnızca işlem israfı değil, boşluktan metin üretilmesinin de başlıca kaynağıdır.
Uygulamada: halka halka karşılıklar#
| Halka | Ne yapar | Bozulunca belirti | Karar noktası |
|---|---|---|---|
| Yakalama | Mikrofondan örnek alır, tek kanala indirir | Kırpma, uğultu, çok kısık kayıt | Örnekleme hızı ve kazanç |
| Etkinlik tespiti | Konuşma aralıklarını işaretler | Kelime başı kesilir ya da sessizlik metne dönüşür | Eşik ve kuyruk süresi |
| Parçalama | Uzun kaydı çözümlenebilir dilimlere böler | Cümle ortasından kesim, bağlam kaybı | Dilim uzunluğu ve örtüşme |
| Çözümleme | Öznitelik dizisini metne çevirir | Yerine koyma ve silme hataları | Toplu mu akışlı mı |
| Son düzeltme | Noktalama, sayı ve alan terimlerini normalleştirir | Aynı değerin iki farklı biçimde yazılması | Sözlük ve biçim kuralları |
Kelime hata oranı#
Kelime hata oranı, çözümlenen metni referans metne hizalayıp üç hata türünü sayar: yerine koyma, silme ve ekleme. Toplam hata sayısı referanstaki kelime sayısına bölünür. Tanım gereği üst sınırı yoktur; model çok fazla kelime uydurursa oran birin üstüne çıkar. Tek bir sayı olarak okumak yanıltıcıdır: silmeler yığılıyorsa etkinlik tespiti erken kesiyor, eklemeler yığılıyorsa sessizlik metne dönüşüyor, yerine koymalar yığılıyorsa sorun yakalama veya sözlük tarafında. Aşağıdaki hesap toplam hatayı verir; türlere ayırmak için matris geriye doğru izlenir.
def kelime_hata_orani(referans: str, cikti: str) -> dict:
"""Hizalama matrisi kurar; toplam hata sayısını ve oranı döndürür.
Türlere ayırmak için d matrisi son hücreden geriye izlenir:
köşegen adım yerine koyma, yukarı adım silme, sola adım eklemedir.
"""
r = referans.split()
c = cikti.split()
d = [[0] * (len(c) + 1) for _ in range(len(r) + 1)]
for i in range(len(r) + 1):
d[i][0] = i # tüm referans kelimeleri silinmiş
for j in range(len(c) + 1):
d[0][j] = j # tüm çıktı kelimeleri eklenmiş
for i in range(1, len(r) + 1):
for j in range(1, len(c) + 1):
if r[i - 1] == c[j - 1]:
d[i][j] = d[i - 1][j - 1]
else:
d[i][j] = 1 + min(
d[i - 1][j - 1], # yerine koyma
d[i - 1][j], # silme
d[i][j - 1], # ekleme
)
hata = d[len(r)][len(c)]
return {"hata": hata, "referans_kelime": len(r), "oran": hata / max(len(r), 1)}Karar: toplu mu akışlı mı#
- 1Bütçeyi yaz
Kullanıcı ilk geri bildirimi ne kadar sürede görmeli? Bu sayı yoksa karar verilemez, yalnızca tercih edilir.
- 2Girdi uzunluğunu ölç
Tek cümlelik komutlar toplu çözümlemeyle de akıcı hissedilir; dakikalarca süren konuşma akış gerektirir.
- 3Kısmi sonucun işe yarayıp yaramadığını sor
Ekranda canlı metin gösterilecekse veya devir kararı kısmi metne bakacaksa akış zorunlu; yalnızca nihai metin kullanılacaksa değil.
- 4Düzeltme maliyetini hesapla
Akışta kısmi çıktı sonradan değişir. Arayüz ve aşağı akış mantığı geri alınan kelimeleri kaldırabiliyor mu?
- 5Ara çıktıyı sakla
Hangi yol seçilirse seçilsin ses, kısmi metin ve nihai metin birlikte saklanır; ölçüm ancak böyle yeniden koşturulabilir.
Sık yapılan hata#
En sık görülen yanılgı, tanıma kalitesini tek bir ortalama kelime hata oranıyla özetlemek. Ortalama, en çok konuşan kişinin ve en sık kullanılan ortamın ağırlığını taşır; azınlıkta kalan koşul — hoparlörden konuşma, arka planda ikinci bir ses, güçlü aksan — ortalamada erir. İkinci yanılgı, referans metni çözümleyici çıktısını düzelterek yazmak. Bu, modelin kendi tercihlerini referansa taşır ve ölçümü sistematik olarak iyimser hâle getirir.
LAB · UYGULAMALI ALIŞTIRMA
Kendi kayıtlarınızla başlangıç değeri ölçün
- 1Uygulamanızın gerçek komutlarından 30 cümlelik bir liste yazın; kendi sesinizle veya izin aldığınız kişilerle, aynı mikrofonu kullanarak sessiz ortamda kaydedin.
- 2Aynı 30 cümleyi ikinci kez, arka planda konuşma veya klavye sesi varken kaydedin; iki küme birebir aynı metinleri paylaşsın.
- 3Referans metinleri kayıttan bağımsız olarak okunan cümle listesinden alın ve satır satır bir dosyaya yazın.
- 4Projenizde kullandığınız çözümleyiciyi (yoksa işletim sisteminin yerleşik dikte özelliğini) iki küme üzerinde koşturun; çıktıları aynı satır düzeniyle ikinci dosyaya yazın.
- 5Ders içindeki hesabı uygulayıp iki küme için oranı çıkarın, ardından matrisi geri izleyerek yerine koyma, silme ve ekleme sayılarını ayırın.
- 6İki küme arasındaki farkı ve hangi hata türünün arttığını tek tabloda not edin; artan türe bakarak hangi halkanın zayıf olduğunu yazın.
Beklenen çıktı
Sessiz ve gürültülü iki kayıt kümesi için hesaplanmış kelime hata oranı, üç hata türünün dağılımı ve hattın hangi halkasının zayıf olduğuna dair gerekçeli bir not.
Sık sorulan sorular
Kelime hata oranı düşük ama kullanıcılar şikâyetçi; nasıl olur?
Kelime hata oranı her kelimeye eşit ağırlık verir. Bir komut cümlesinde asıl yükü taşıyan kelime — tarih, miktar, ürün adı — yanlış çözümlendiğinde oran çok az artar ama işlem tamamen yanlış yürür. Bu yüzden oranın yanında anlam taşıyan alanların doğruluğunu ayrı ölçün: aynı kayıtlarda hedef alanı doğru çıkarılan cümlelerin payı.
Türkçede kelime hata oranı neden şişkin görünüyor?
Türkçe eklemeli bir dildir; tek kelime birçok biçimbirim taşır ve tek bir ekin yanlış çözümlenmesi tam kelime hatası sayılır. Aynı kaydı karakter hata oranıyla da ölçmek bu şişmeyi ayırt etmenizi sağlar: karakter oranı düşük, kelime oranı yüksekse hata büyük ölçüde ek düzeyindedir. Kıyaslamalarda iki oranı birlikte raporlayın.
Sessizlikte üretilen metni hangi halkada temizlemeliyim?
İlk çare etkinlik tespiti eşiğidir, ama tek başına yeterli değildir. Çözümleyici çıktısındaki güven değeri ve konuşma süresi birlikte kullanılabilir: çok kısa bir konuşma aralığından uzun metin çıkmışsa çıktı şüphelidir. Bu ayıklamanın kuralları ve eşik ayarı dördüncü bölümün konusu.
LEARN
Konuşma Arayüzü Geliştirici rotasına devam et
Dersler tek başına da okunabilir, ama sıralı ilerlemek önkoşul boşluklarını kapatır.
