ufakzeka ailesinden konuşma tanıma modeli
ufakzeka-kulak
Türkçe konuşmayı metne döker. Metni büyük harfle ve noktalama işaretleriyle yazar, sayıları yazıyla verir. Lisansı ticari kullanıma izin veren 4.977 saatlik konuşma kaydıyla sıfırdan eğitilmiştir ve internet bağlantısı olmadan işlemcide çalışır.
- 31.564.935parametre
- 0,0921kelime hata oranı, FLEURS Türkçe testi
- 0,0916kelime hata oranı, Common Voice 27.0 Türkçe testi
- Apache-2.0lisans
Ses girer, metin çıkar
Model, 16.000 Hz örnekleme hızındaki tek kanallı sesten çıkarılan 80 boyutlu log-mel özniteliklerini okur ve tek seferde tek bir konuşma parçasını yazıya döker. Kodlayıcısı 16 katmanlı, 256 gizli boyutlu bir FastConformer’dır; kodlayıcı, varsayılan çıkış olan token ve süre dönüştürücüsü (TDT) kod çözücüsünü ve bir CTC katmanını beslemektedir. Kelime dağarcığı 1.024 tokenlık bir SentencePiece BPE’dir.
Büyük harf ve noktalama
Model büyük ve küçük harfleri ayırarak yazar. Noktalama işareti olarak yalnızca nokta, virgül, soru işareti, kesme işareti ve kelime içindeki kısa çizgiyi kullanır.
Sayılar yazıyla
Model “2022’de” değil “iki bin yirmi ikide” yazar. Rakam gereken bir uygulamanın sayıları kendisinin dönüştürmesi gerekir. Şapkalı harfler şapkasız yazılır.
Tek konuşma parçası
Model akış hâlinde çalışmaz. Uzun kayıtların, demoda olduğu gibi, önce konuşmanın başladığı ve bittiği yerleri bulan bir ses etkinliği algılayıcısıyla konuşma parçalarına bölünmesi ve her parçanın başında ve sonunda birkaç yüz milisaniyelik pay bırakılması gerekir; konuşmanın tam sınırından kesilen bir parça büyük harfsiz ve noktalamasız çıkabilir.
Çalışma ortamları
| Çalışma ortamı | Sürüm | Repodaki yol | Duyarlık |
|---|---|---|---|
| NeMo | 3.0.0 | ufakzeka-kulak.nemo | float32 |
| transformers | 5.20.1 | transformers-tdt/, transformers-ctc/ | float32 |
| sherpa-onnx | 1.13.8 | sherpa-onnx-tdt/, sherpa-onnx-ctc/ | float32, int8 |
| parakeet.cpp (GGUF) | v0.6.1 | gguf/ | f32, q8_0 |
| parakeet-mlx (MLX) | 0.5.3 | mlx/ | float32 ağırlıklar, bfloat16 ile çalıştırılır |
NeMo dosyası referanstır. Diğer dosyaların her biri Common Voice ve FLEURS geliştirme kümelerinde NeMo ile karşılaştırılmıştır; yalnızca normalize edilmiş WER’i iki kümede de NeMo’nunkinden en fazla 0,0050 uzaklaşan ve hiçbir konuşma parçasında çalışma hatası vermeyen dosyalar yayımlanmıştır. sherpa-onnx dosyalarında sesin örnek değerleri 8 ile çarpılarak kullanılmalıdır; CTC dosyasında ayrıca sesin sonuna sıfır değerli örnekler eklenmelidir. parakeet-mlx öznitelikleri NeMo’dan farklı hesapladığı için MLX klasöründe ayrı bir öznitelik çıkarma fonksiyonu bulunmaktadır. Ayrıntılar ve diğer çalışma ortamlarının örnekleri model kartında yer almaktadır.
from nemo.collections.asr.models import ASRModel
model = ASRModel.from_pretrained("ufakai/ufakzeka-kulak")
print(model.transcribe(["speech.wav"])[0].text)
model.change_decoding_strategy(decoder_type="ctc") # the CTC head
print(model.transcribe(["speech.wav"])[0].text)import soundfile as sf
import torch
from huggingface_hub import snapshot_download
from transformers import ParakeetForTDT, ParakeetProcessor
root = snapshot_download("ufakai/ufakzeka-kulak", allow_patterns=["transformers-tdt/*"])
folder = f"{root}/transformers-tdt"
processor = ParakeetProcessor.from_pretrained(folder)
model = ParakeetForTDT.from_pretrained(folder, dtype=torch.float32).eval()
audio, rate = sf.read("speech.wav", dtype="float32")
inputs = processor(audio=audio, sampling_rate=rate, return_tensors="pt")
with torch.no_grad():
out = model.generate(**inputs)
print(processor.decode(out.sequences[0], skip_special_tokens=True))Test sonuçları
Eğitim yöntemi, kontrol noktası ve yayımlanan dosyalar geliştirme kümelerinde seçilmiş, test kümeleri tek bir model için bir kez puanlanmıştır. Model, FLEURS Türkçe ve Common Voice 27.0 Türkçe test kümelerinin ikisinde de Whisper base’ten daha az hata yaparsa ve farkın eşleştirilmiş güven aralığı tamamen sıfırın altında kalırsa yayımlanacaktı. Model iki kümede de bu testi geçmiştir.
| Küme | Konuşma parçası | Saat | ufakzeka-kulak WER | Whisper base WER | Whisper base ile fark | Whisper small ile fark |
|---|---|---|---|---|---|---|
| FLEURS Türkçe test | 743 | 2,6 | 0,0921 [0,0792; 0,1055] | 0,2461 [0,2303; 0,2628] | -0,1541 [-0,1653; -0,1430] | -0,0421 [-0,0506; -0,0340] |
| Common Voice 27.0 Türkçe test | 11.874 | 14,5 | 0,0916 [0,0873; 0,0958] | 0,3287 [0,3190; 0,3380] | -0,2372 [-0,2440; -0,2302] | -0,0885 [-0,0930; -0,0843] |
| Real-TurnTurk, sohbet konuşması, kabul testine katılmaz | 1.532 | 1,7 | 0,3807 [0,3270; 0,4640] | 0,7242 | -0,3435 [-0,4258; -0,3080] | -0,1367 |
Köşeli parantez içindeki değerler, bloklara göre yapılan bootstrap yöntemiyle hesaplanan yüzde 95 güven aralıklarıdır; iki model arasındaki farkın aralığı eşleştirilmiştir. Fark, ufakzeka-kulak’ın WER’inden Whisper modelinin WER’i çıkarılarak hesaplanmıştır; negatif değer daha az hata anlamına gelir. Kod çözme açgözlü yöntemle ve TDT kod çözücüsüyle yapılmıştır. Whisper base ve Whisper small (MIT; bu modelleri geliştiren şirket eğitim verilerini tam olarak açıklamamaktadır) aynı Türkçe normalizasyonla tarafımızdan puanlanmıştır; her kümede açgözlü kod çözme ile Whisper paketinin kod çözme ayarlarından (ışın boyutu 5 olan ışın araması ve gerektiğinde sıcaklığı yükselterek yeniden deneme) daha düşük hata vereni kullanılmıştır. Whisper large-v3’ün açgözlü kod çözmeyle kelime hata oranı ise FLEURS testinde 0,0604, Common Voice testinde 0,0767’dir ve ufakzeka-kulak’ınkinden düşüktür; bu fark için güven aralığı hesaplanmamıştır. Real-TurnTurk yalnızca 6 konuşmacı içerdiği için aralığı geniştir.
Yayımlanan int8 sherpa-onnx TDT dosyasının WER’i FLEURS testinde 0,0921 (NeMo ile fark 0,0000), Common Voice testinde 0,0932 (+0,0016), int8 CTC dosyasınınki ise 0,1128 (+0,0207) ve 0,1200 (+0,0284) olarak ölçülmüştür.
Eğitim verisi
Eğitim verisindeki her kaynağın lisansı ticari kullanıma izin vermektedir. Kaynaklar Mozilla Common Voice, antalia-voice-corpus ve ISSAI’nin Turkish Speech Corpus’udur; 4.977 saatin 4.696 saati ise ESPnet’in YODAS ve YODAS v3 veri kümeleri için topladığı YouTube sesleridir. Bu veri kümelerinin yazarları yalnızca Creative Commons lisansıyla yayımlanmış videoları aldıklarını belirtmekte ve sesleri CC BY 3.0 lisansıyla yayımlamaktadır. YouTube’da yükleyenin bir video için seçebileceği tek Creative Commons lisansı Creative Commons Atıf (CC BY) lisansıdır. YODAS v3 sesleri, Alania Turkish Speech Style Captions veri kümesindeki (CC BY 4.0) aralıklara göre kesilmiştir. Otomatik altyazılar eğitim metni olarak kullanılmamıştır. Her YODAS konuşma parçasının eğitim metni, Whisper large-v3-turbo’nun transkriptiyle uyuşan, videoyu yükleyenin eklediği altyazıdır; altyazı yoksa ya da uyuşmuyorsa Omnilingual ASR CTC 7B v2’nin denetlediği Whisper large-v3-turbo transkriptidir. Whisper large-v3-turbo MIT, Omnilingual ASR CTC 7B v2 Apache-2.0 lisanslıdır; bu modelleri geliştirenler eğitim verilerini tam olarak açıklamamaktadır. Değerlendirme kümeleriyle metin ya da ses bakımından eşleşen 432 eğitim konuşma parçası çıkarılmış, eğitim sesleriyle eşleşen 2 MediaSpeech kaydı da değerlendirmeden çıkarılmıştır. Kaynakların tam listesi ve atıfları model reposundaki ATTRIBUTION.md dosyasında yer almaktadır.
Zayıf yanları
- Yalnızca Türkçe için eğitilmiştir; başka dillerdeki ve Türkçeyle karışık konuşmalardaki başarısı ölçülmemiştir.
- Kelime hata oranı konuşmacının cinsiyetine, yaşına ya da yöresel ağzına göre ölçülmemiştir.
- Sohbet konuşmasında zayıftır. 6 konuşmacının sohbetlerinden oluşan Real-TurnTurk kümesinde WER 0,3807 olarak ölçülmüştür.
- Konuşmacıları birbirinden ayırmaz ve doğruluğu denetlenmiş kelime zaman damgaları vermez.
- YODAS kayıtlarının 4.696 saatinin 4.327 saatinde transkriptle uyuşan, videoyu yükleyenin eklediği bir altyazı bulunmadığı için eğitim metnini bir konuşma tanıma modeli yazmış, ikinci bir model denetlemiştir; iki modelin üzerinde uyuştuğu hatalar eğitim metninde kalmaktadır.
- sherpa-onnx dosyalarında kullanılan giriş kazancı normal kayıt düzeylerinde geçerli bir geçici çözümdür; 30 dB daha sessiz FLEURS kopyasında hata oranı NeMo dosyasındakinden fazla artmaktadır.
- MLX dosyaları yalnızca Linux’ta mlx’in işlemci arka ucunda denetlenmiş, Apple silicon’da ölçülmemiştir.
Dosyalar ve kod
- Demokulak.ufakzeka.com
- Hugging Faceufakai/ufakzeka-kulak
- GitHubufakai/ufakzeka-kulak
- Araştırma yazısıYöntem, ölçümler ve sınırlar