erayy.com

When Ak Kula spreads her wings…Ak Kula kanatlarını açtığında…

Open SOTA Turkish speech recognition on CPU.

CPU’da çalışan açık SOTA Türkçe konuşma tanıma.

Open models · Mu-Bench TurkishAçık modeller · Mu-Bench Türkçe

Setting the open frontierAçık modellerde yeni sınır

The fewest meaning-changing errors of any open model on Mu-Bench, at over 100× real time on a CPU. Bottom right is best.

Mu-Bench’te açık modeller içinde anlamı değiştiren en az hata, işlemcide gerçek zamanın 100 katından hızlı. Sağ alt köşe en iyisi.

How this was measuredNasıl ölçüldü

sigWER: the share of reference words caught in errors that the official Mu-Bench judge (GPT-4.1) marks as changing the meaning; lower is better. 846 Turkish customer-service recordings, official harness (leaderboard; Li and Ray, 2026). Qwen3-ASR and Chirp 3 are from the leaderboard; the rest are our runs through the same harness. Speed: audio length ÷ processing time on one machine (AMD Ryzen AI Max+ 395), 8 threads, batch 1, the same 100 clips.

sigWER: resmi Mu-Bench hakeminin (GPT-4.1) anlamı değiştirdiğine karar verdiği hatalara düşen referans kelimelerin oranı; düşük daha iyi. 846 Türkçe müşteri hizmetleri kaydı, resmi değerlendirme kodu (sonuç tablosu; Li ve Ray, 2026). Qwen3-ASR ve Chirp 3 sonuç tablosundan; diğerleri aynı kodla bizim koşularımız. Hız: ses süresi ÷ işlem süresi, tek makinede (AMD Ryzen AI Max+ 395), 8 izlek, batch 1, aynı 100 kayıt.

APIs and open modelsAPI'ler ve açık modeller

Second on Mu-BenchMu-Bench’te ikinci

Turkish customer-service calls. Only Google Chirp 3 makes fewer errors.

Türkçe müşteri hizmetleri görüşmeleri. Daha az hata yapan tek sistem Google Chirp 3.

Where the numbers come fromSayılar nereden geliyor

Lower is better. Official Mu-Bench evaluation with the GPT-4.1 judge. Freya, PatientDesk, Mihu AI, Seda, UfakZeka, Duyu-small, omniASR, Whisper and balbal are our runs through the official harness; the rest are from the leaderboard.

Düşük daha iyi. GPT-4.1 hakemli resmi Mu-Bench değerlendirmesi. Freya, PatientDesk, Mihu AI, Seda, UfakZeka, Duyu-small, omniASR, Whisper ve balbal resmi kodla bizim koşularımız; diğerleri sonuç tablosundan.

One hour of speechBir saatlik konuşma

Time to transcribe an hour of audio on 8 CPU threads.

Bir saatlik sesi 8 işlemci izleğinde yazıya dökme süresi.

0:00
How this was measuredNasıl ölçüldü

Time = 3600 s ÷ speed (audio length ÷ processing time), measured as in the first chart: one machine, 8 threads, batch 1, same 100 clips. balbal models use their fast CPU runtime (lean ONNX graph with custom kernels and a native beam-search decoder with the KenLM language model).

Süre = 3600 sn ÷ hız (ses süresi ÷ işlem süresi), ilk grafikteki gibi ölçüldü: tek makine, 8 izlek, batch 1, aynı 100 kayıt. balbal modelleri hızlı işlemci çalışma ortamıyla (özel çekirdekli yalın ONNX grafiği, KenLM dil modelli yerel ışın araması) çalıştı.

Желип кетсе жүрүшү,
Жебенин огун аткандай.

When Ak Kula breaks into a run, it is like an arrow loosed from the bow.Ak Kula koşuya kalktığında, yaydan çıkan ok gibi.

Manas, Sagymbai Orozbakov’s versionManas, Sagımbay Orozbakov varyantı

Read speechOkunmuş konuşma

FLEURS

743 read Wikipedia sentences. balbal-v2-manas ties Whisper large-v3-turbo.
Only Whisper large-v3 is ahead, and it runs 135× slower on a CPU.

Okunmuş 743 Wikipedia cümlesi. balbal-v2-manas, Whisper large-v3-turbo ile başa baş.
Önde yalnızca Whisper large-v3 var, o da işlemcide 135 kat yavaş.

Model Word errorKelime hatası Character errorKarakter hatası ParametersParametre CPU speedİşlemci hızı

Error rates in %, lower is better; every model scored on the same clips with the same balbal-normalizer rules.

Hata oranları %, düşük daha iyi; tüm modeller aynı kayıtlarda, aynı balbal-normalizer kurallarıyla puanlandı.

ArchitectureMimari

A big memory, read sparselyBüyük bellek, seyrek okuma

Most of the parameters sit in a memory table. Each frame reads only a handful of its slots.

Parametrelerin çoğu bir bellek tablosunda durur. Her kare onun yalnızca birkaç yuvasını okur.

    StreamingAkış

    Words while you speakSen konuşurken yazıya

    Both models stream on a CPU. The text updates every 0.32 s, and only the last ~0.6 s can still change.

    İki model de işlemcide akış yapar. Metin her 0,32 saniyede güncellenir; yalnızca son ~0,6 saniye hâlâ değişebilir.

    balbal-v2

    First word on screenİlk kelime ekranda
    0.30 s
    Compute per second of speechKonuşmanın saniyesi başına işlem
    66 ms

    balbal-v2-manas

    First word on screenİlk kelime ekranda
    0.62 s
    Compute per second of speechKonuşmanın saniyesi başına işlem
    203 ms
    Details and how we measuredAyrıntılar ve ölçüm

    A WebSocket server with a browser microphone demo: send 16 kHz PCM, get partial and final messages with timestamps. On the same frames, the streaming decoder finds exactly the offline decoder's best path. A segment closes after 0.5 s of silence, or at 5 s.

    Tarayıcı mikrofon demolu bir WebSocket sunucusu: 16 kHz PCM gönder, zaman damgalı ara ve son sonuçları al. Akış kod çözücüsü aynı karelerde çevrimdışı kod çözücünün en iyi yolunu birebir bulur. Bir bölüm 0,5 saniyelik sessizlikten sonra ya da 5. saniyede kapanır.

    One stream at a time, 721 Turkish clips played in real time into the default streaming settings, 8 threads on an AMD Ryzen AI Max+ 395. First word: median time from the end of a word in the audio to when it first appears on screen in its final form. Compute: processing time ÷ audio length.

    Tek seferde tek akış; 721 Türkçe kayıt varsayılan akış ayarlarıyla gerçek zamanlı oynatıldı, AMD Ryzen AI Max+ 395'te 8 izlek. İlk kelime: sesteki bir kelimenin bitişinden ekranda son hâliyle ilk görünmesine kadar geçen sürenin ortancası. İşlem: işlem süresi ÷ ses süresi.

    Run itÇalıştır

    Two linesİki satır

    The library is on PyPI (Linux x86-64, Python 3.11 or 3.12); the first run downloads the model from Hugging Face. Code, streaming server and training on GitHub under Apache 2.0. Weights on Hugging Face: balbal-v2 and balbal-v2-manas. Or try both models in the browser. On Android, download the app (APK, 36 MB, Android 8+): it runs both models offline on the phone and downloads them when you tap İndir. Record and transcribe once, or tap Canlı to see the text while you speak.

    Kütüphane PyPI'da (Linux x86-64, Python 3.11 ya da 3.12); ilk çalıştırmada model Hugging Face'ten iner. Kod, streaming sunucusu ve eğitim GitHub'da, Apache 2.0 ile. Ağırlıklar Hugging Face'te: balbal-v2 ve balbal-v2-manas. Ya da iki modeli tarayıcıda dene. Android'de uygulamayı indir (APK, 36 MB, Android 8+): iki model de telefonda çevrimdışı çalışır, İndir'e basınca iner. Kaydedip bir kerede yazıya dök ya da Canlı'ya bas, metni konuşurken gör.

    pip install balbal
    balbal run speech.wav
    
    # the larger model, Turkish + English; JSON with word timestamps# büyük model, Türkçe + İngilizce; kelime zamanlarıyla JSON
    balbal run --model manas --json speech.mp3
    
    # Python
    import balbal
    print(balbal.transcribe("speech.wav")["text"])

    LimitsSınırlar

    Clean read speech

    Whisper large-v3 is still more accurate on FLEURS, if you have a GPU or time to spare.

    Temiz okunmuş konuşma

    FLEURS'te Whisper large-v3 hâlâ daha doğru; GPU'n ya da bolca vaktin varsa.

    English

    balbal-v2-manas also transcribes English; balbal-v2 is built for Turkish and its English is basic.

    İngilizce

    balbal-v2-manas İngilizceyi de yazıya döker; balbal-v2 Türkçe için yapıldı, İngilizcesi temel düzeyde.

    Long recordings

    Offline transcription cuts long audio into 30-second chunks. There is no speaker diarization.

    Uzun kayıtlar

    Çevrimdışı yazıya dökme uzun sesi 30 saniyelik parçalara böler. Konuşmacı ayrımı yok.

    Short clips

    Very short clips (a word or two) carry little context: errors are more frequent, and Turkish and English words can get mixed up.

    Kısa klipler

    Çok kısa kliplerde (bir iki kelime) bağlam az: hatalar daha sık, Türkçe ve İngilizce kelimeler karışabiliyor.

    BenchmarksBenchmarklar

    Turkish needs better, harder benchmarksTürkçe için daha iyi, daha zor benchmarklar lazım

    Most Turkish test sets are clean read speech. FLEURS and Common Voice are sentences read aloud into a decent microphone: the best models already make few errors there, and Common Voice sentences turn up in many training sets. Mu-Bench is the closest to real use, phone calls scored on the errors that change the meaning, but it is one domain. A score on these sets says little about how a model holds up in your product.

    Türkçe test setlerinin çoğu temiz, okunmuş konuşma. FLEURS ve Common Voice, düzgün bir mikrofona sesli okunmuş cümleler: en iyi modeller orada zaten az hata yapıyor, Common Voice cümleleri de birçok eğitim setinde karşımıza çıkıyor. Gerçek kullanıma en yakını Mu-Bench; anlamı değiştiren hatalarla puanlanan telefon görüşmeleri. Ama o da tek bir alan. Bu setlerdeki bir skor, bir modelin senin ürününde nasıl çalışacağını pek söylemiyor.

    Spontaneous speech

    Meetings, interviews, voice notes, people talking over each other.

    Doğal konuşma

    Toplantılar, röportajlar, sesli mesajlar, üst üste konuşan insanlar.

    Hard audio

    Far-field microphones, cars, crowded rooms, low-bitrate calls.

    Zor ses

    Uzak mikrofon, araba içi, kalabalık ortamlar, düşük kaliteli aramalar.

    Words that matter

    Names, addresses, numbers, codes and rare words, where one wrong letter breaks the result.

    Önemli kelimeler

    İsimler, adresler, sayılar, kodlar ve nadir kelimeler; tek harf hatanın sonucu bozduğu yerler.

    Every kind of Turkish

    Regional accents, and Turkish mixed with English.

    Türkçenin her hâli

    Yöresel ağızlar ve İngilizceyle karışık Türkçe.

    Have recordings, a use case today's models get wrong, or want to build a benchmark?

    Elinde kayıtlar, bugünkü modellerin yanıldığı bir kullanım alanı var ya da bir benchmark kurmak mı istiyorsun?

    About Ak KulaAk Kula hakkında

    • Аккула, Kyrgyz Wikipedia, after the Manas encyclopedia (Bishkek, 1995): the Orozbakov, Sazanov and Karalaev versions, and the verse above (Orozbakov, vol. 1, p. 20; translation ours).Kırgızca Vikipedi, Manas ansiklopedisine (Bişkek, 1995) dayanarak: Orozbakov, Sazanov ve Karalayev anlatımları ve yukarıdaki dize (Orozbakov, 1. cilt, s. 20; çeviri bizim).
    • Реальный и ирреальный анималистический мир эпоса «Манас», on Ak Kula's speed, the sparks and the single bound.Ak Kula'nın hızı, kıvılcımlar ve tek sıçrayış üzerine.
    • Канаттуу ат, Kyrgyz Wikipedia: the winged horse, and the saying “Ат — адамдын канаты”.Kırgızca Vikipedi: kanatlı at ve “Ат — адамдын канаты” sözü.
    • The illustrations and films on this page were made with image and video models.Bu sayfadaki çizimler ve filmler görüntü ve video modelleriyle yapıldı.

    How to citeAtıf

    @misc{yapagci2026balbalv2,
      author       = {Eray Yapa{\u{g}}c{\i}},
      title        = {balbal-v2: Turkish Speech Recognition Models},
      year         = {2026},
      month        = oct,
      howpublished = {\url{https://erayy.com/balbal-v2}},
      note         = {Code: \url{https://github.com/erayyap/balbal}}
    }
    Ат — адамдын канаты.

    “A horse is a person's wings.” Kyrgyz saying.“At, insanın kanadıdır.” Kırgız sözü.