Türkçe Whisper Özel İsim Düzeltici
Whisper ve WhisperX transkriptlerindeki yanlış yazılan Türkçe kişi ve şirket adlarını düzelten açık kaynak Python aracı ve sözlüğü. Altyazı, podcast, YouTube ve Reels üretenler için.
Turkish proper name correction for Whisper and WhisperX: fixes misheard people and company names in speech-to-text transcripts and subtitles. English below.
Sorun
Whisper Türkçeyi iyi tanır, ama özel isimleri tutarlı biçimde yanlış yazar. Gerçek bir podcast transkriptinden:
| Whisper'ın yazdığı | Doğrusu |
|---|---|
Mustafa Ulan Moğlu |
Mustafa Namoğlu |
Siz Mustafa Anamoğlu'sunuz. |
Siz Mustafa Namoğlu'sunuz. |
Ben İkaz diye bir şirket kurdum |
Ben ikas diye bir şirket kurdum |
Oğuz Alper Öktan ve Marta şirketi |
Oğuz Alper Öktem ve Martı şirketi |
Martır'ın kurucusu |
Martı'nın kurucusu |
Ben Ferhat Duraşakır. |
Ben Ferhat Tuğra Çakır. |
Bir dil modeline "düzelt" demek yetmez: model adı tanımıyorsa aynı yanlışı okur ya da yeni bir ad uydurur. Bu eksik bir bilgi sorunu, o yüzden çözüm bir sözlük.
Nasıl çalışır
- Aday bulma: Sözlük ve benzerlik araması düzeltilebilecek yerleri bulur. LLM kullanılmaz.
- Seçim: Bir seçici, yalnız aday numarası döndürür. Model metin yazmadığı için ad uyduramaz.
- Uygulama: Metni kod değiştirir. Noktalama ve ekler korunur (
Martır'a→Martı'ya), kelime zaman damgaları bozulmaz. İki kelimenin bire inmesi (Ulan Moğlu→Namoğlu) de desteklenir.
ikaz gibi gerçek bir kelime olan yanlış yazımlar, yalnız o şirket aynı transkriptte anılıyorsa aday olur.
Kurulum
pip install "turkce-asr-ozel-isim[claude] @ git+https://github.com/mustafayusufaksoy/turkce-asr-ozel-isim"
Python 3.9 ve üzeri. Çekirdeğin bağımlılığı yok; [claude] yalnız Claude ile seçim için gerekir.
Kullanım
Komut satırı, segments[].words[] içeren Whisper / WhisperX JSON dosyasıyla çalışır:
# Yalnız adayları listele, API gerekmez
turkce-asr-ozel-isim transkript.json
# Claude seçsin (ANTHROPIC_API_KEY gerekir)
turkce-asr-ozel-isim transkript.json --selector claude -o duzeltilmis.json
Python:
from turkce_asr_ozel_isim import Lexicon, correct
from turkce_asr_ozel_isim.claude import claude_selector
kelimeler = {"klip1": [{"word": "Mustafa", "start": 0.0, "end": 0.4},
{"word": "Anamoğlu", "start": 0.4, "end": 1.0}]}
duzeltilmis, rapor = correct(kelimeler, Lexicon.default(), claude_selector())
Başka bir model kullanmak için ask(sistem, metin) imzasında bir fonksiyon verin. Kendi adlarınızı --lexicon benim.json ile ekleyebilirsiniz.
Ölçüm
Claude Haiku 5.5 ile, gerçek podcast kliplerinde. Küçük bir örneklem, kesin bir kıyas olarak okumayın; daha geniş ölçüm yol haritasında.
| Deneme | Aday | Kabul | Sonuç |
|---|---|---|---|
| Bir video (11 hatalı yer), tam sözlük | 11 | 10 | 10/11 düzeltildi |
| Aynı video, bu videodan öğrenilen yazımlar sözlükten çıkarılmış | 7 | 7 | 7/11 düzeltildi |
| Dört başka video (43 klip) | 3 | 2 | yanlış kabul 0 |
Gerçekçi beklenti ikinci satırdır: ilk satırda sözlük o videoyu görmüştü. Tek bir video için maliyet yaklaşık 0,001 dolar.
Sözlük
src/turkce_asr_ozel_isim/data/lexicon.json: 179 kayıt (128 kişi, 51 şirket), 51 yanlış yazım. Yalnız adı Wikidata'da ya da kendi röportajının başlığında veya kanalında geçen kişi ve şirketler var. Transkript, video ya da iletişim bilgisi içermez.
Katkı: isim ekle, isim kaldır
Whisper'ın bozduğu bir ad mı gördünüz? İsim ekle formunu doldurun ya da pull request açın, ayrıntılar CONTRIBUTING dosyasında. Her ekleme otomatik testlerden ve insan incelemesinden geçer.
Adınızın listeden çıkarılmasını istiyorsanız kaldırma formunu kullanın; gerekçe istemiyoruz.
Sınırlar
- Sözlükte olmayan yeni yanlış yazım yalnız kişilerde, ad + soyad birlikte geçiyorsa bulunur. Şirketlerde yazımın sözlükte kayıtlı olması gerekir.
- Sözlük Türkiye girişim ve iş dünyası ağırlıklı.
- Model seçimleri her çalıştırmada birebir aynı olmayabilir.
Sık sorulanlar
Whisper Türkçe isimleri neden yanlış yazıyor? Modelin eğitim verisinde az geçen adları sesçe en yakın bildiği kelimelere benzetir. initial_prompt ya da hotwords yardımcı olur, ama uzun bir ad listesi vermek pratik değildir.
WhisperX ve faster-whisper ile çalışır mı? Evet. Kelime zaman damgalı JSON çıktısı olan her araçla çalışır.
Altyazı (SRT, ASS) dosyası ile çalışır mı? Doğrudan değil. Düzeltilmiş JSON'dan altyazınızı üretin; zaman damgaları korunur.
Claude zorunlu mu? Hayır. Adayları kendiniz inceleyebilir ya da başka bir model bağlayabilirsiniz.
Yol haritası
- Daha fazla videoda önce/sonra ölçümü
- Şirketlerde bilinmeyen yazım araması
- Kendi transkript arşivinizden sözlük çıkaran araç
Lisans
English
Open source Python tool and lexicon that fixes misheard Turkish people and company names in Whisper and WhisperX transcripts. Useful for subtitles, podcasts, YouTube and short-form video.
Speech-to-text models consistently misspell Turkish proper nouns, and asking an LLM to fix them fails when the model does not know the name. This project uses a three-step pipeline: a lexicon and fuzzy matching propose candidates, a selector returns only candidate numbers so it cannot invent a name, and code applies the change while preserving punctuation, Turkish suffixes and word timestamps.
pip install "turkce-asr-ozel-isim[claude] @ git+https://github.com/mustafayusufaksoy/turkce-asr-ozel-isim"
turkce-asr-ozel-isim transcript.json --selector claude -o fixed.json
Measured on real podcast clips with Claude Haiku 5.5: 10 of 11 errors fixed with the full lexicon, 7 of 11 when spellings learned from that video were removed, and no false accepts across 43 clips from four other videos. This is a small sample.
The lexicon has 179 records of public figures and companies and contains no transcripts or contact details. Code is MIT, the name list is CC0. Contributions and removal requests are welcome through GitHub issues.
Metadata
Release files for turkce-asr-ozel-isim 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| turkce_asr_ozel_isim-0.1.0.tar.gz | 19.8 kB | With provenance | Details for turkce_asr_ozel_isim-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| turkce_asr_ozel_isim-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for turkce_asr_ozel_isim-0.1.0-py3-none-any.whl |
Total release size: 35.6 kB
Release files / turkce_asr_ozel_isim-0.1.0.tar.gz
| Download URL | turkce_asr_ozel_isim-0.1.0.tar.gz |
|---|---|
| Size | 19.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
faa315cb1461ed39050a9bc45d0f5e77566c97b32d9bde1dc84914daa914f4fe
|
|
BLAKE2b-256 checksum How to use checksums |
167a11c30f451266638b7e2b42cc80d862b51e449f954cc6c89573508a1e5c02
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 11, 2026.
Transparency logRelease files / turkce_asr_ozel_isim-0.1.0-py3-none-any.whl
| Download URL | turkce_asr_ozel_isim-0.1.0-py3-none-any.whl |
|---|---|
| Size | 15.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b54d90523de9c252bf8c5746d820b1f9c7088a202f44a7731b7ddedb44f6739c
|
|
BLAKE2b-256 checksum How to use checksums |
1df56de310f7985d4d41bd2bb2416e8fe35953eb27b045124a6a2eb165a369f1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 11, 2026.
Transparency logSecurity for turkce-asr-ozel-isim 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for turkce_asr_ozel_isim-0.1.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 11, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.