v0.4.0 — kelime sınırları sessizlik haritasına çapalanıyor (zincir şişmesi fix'i)
Davranış değişikliği: kesim sınırları sıkılaşır ve
<ad>_transkript.jsonartık re-anchor'lı (çapalanmış) sınırları taşır — kayıt çapalamadan SONRA yapılıyor, dosyadaki zamanlar pipeline'ın DETECT'e verdiği zamanlardır (ham ASR çıktısı değil). Bu dosyayı fixture olarak kullanan akışlar bunu bilmeli.
Kelime sınırlarının silencedetect haritasına yeniden çapalanması
(re-anchor) — KNOWN_ISSUES.md KI-1'in "zincir şişmesi" bulgusunun pipeline
seviyesinde savunması. Kullanıcıya görünür davranış değişikliği vardır
(aşağıda). Yeni bağımlılık yok.
Eklendi
transcribe/reanchor.py— kelime sınırı çapalama (saf fonksiyon).
ASR kelime sınırları duraklamaları yutar: whisper.cpp-ml 1 -sowsınırları
uç uca üretir, duraklama komşu kelimeye yapışır; faster-whisper'da da
muadili vardır (KI-5,işte~15 sn).reanchor_words(words, silences)bir
kelimenin sessizliğe giren ucunu kırpar:endsessizliğin içindeyse →end = sessizlik.startstartsessizliğin içindeyse →start = sessizlik.end- kelime sessizliği boydan geçiyorsa → uzun kalan parça korunur
(eşitlikte sol taraf; gerekçe ölçümle sabit, KI-1'e bak) - kelime TAMAMEN sessizlik içindeyse (ghost) → dokunulmaz; bu fazda
silme/flag'leme yok, transkript bütünlüğü korunur
Değme (uç uca) kesişim kırpma SAYILMAZ — KI-5'in "değme çakışma kanıt
sayılmaz" sınır semantiğiyle aynı katı eşitsizlik. Saf fonksiyondur:
subprocess yok, ffmpeg bilmez,Wordfrozen olduğu için kırpılanlar yeni
nesne olarak döner.
Değişti
- Kesim sınırları sıkılaşır (davranış değişikliği). Şişmiş kelime
sınırından türeyen filler kesimleri artık kelimenin gerçek sınırına
daralır; duraklama komşuluğundaki şişmelerde kesim konuşmanın üstüne
taşmaz. Gerçek koşudaşeykelimesinin end sapması 702 ms → 3 ms,
umarım'ın start sapması −1014 ms → +2 ms. <ad>_transkript.jsonartık re-anchor'lı sınırları taşır. Kayıt
çapalamadan SONRA yapılır: dosyadaki zamanlar pipeline'ın DETECT'e verdiği
zamanlardır, ham ASR çıktısı değil. Dosyayı fixture olarak kullanan
akışlar bunu bilmelidir.- Pipeline sırası: silencedetect haritası TRANSCRIBE'dan ÖNCE. Harita
WAV'dan üretilir, transkriptten bağımsızdır. Tek koşu: aynı harita hem
çapalamayı hem DETECT'in sessizlik yarısını besler — ikinci bir ffmpeg
çağrısı YOK. Çapalama ham haritayı kullanır (silence_min_mssüzgecinden
geçmemiş): o süzgeç "hangi sessizlik kesilir" politikasıdır, "konuşma
nerede yok" sorusunun cevabı değil. - KI-5 anomali koruması yerinde kalır (
FILLER_ANOMALI_MS= 3000 ms) —
kaldırılmadı, yedek savunmaya çekildi: re-anchor'ın çıpası olmayan
bölgelerde (bkz. sınırlar) tek savunma odur.
Bilinen sınırlar (KI-1'de ölçümüyle)
- <400 ms duraklamalar kırpılmaz: harita
audio/silence.py'nind=0.4
eşiğiyle üretilir; daha düşük eşikli AYRI bir silencedetect koşusu bilinçli
olarak backlog'dadır (çift ffmpeg koşusu istenmiyor). - Zincir kayması kapsam dışıdır: sapmanın bir bölümü konuşmadan konuşmaya
kayan zincirden gelir; o bölgede sessizlik YOKTUR, dolayısıyla sessizlik
tabanlı çapalama düzeltemez. Ölçüm: 16 referans kelimesinin 8'i tolerans
içinde (6 temiz akış + 2 duraklama komşuluğu), 8'izincir_kaymasi. - Filler kaçağı (KI-1 ana kaydı) bu sürümde ÇÖZÜLMEDİ — ayrı faz.
Ölçüm özeti (test_konusma.wav, wcpp turbo/q5_0, harita noise=-35dB d=0.4): şişme tek sınıf değil. Duraklama komşuluğu sınıfı kapandı (şey end sapması 702 → 3 ms, umarım start sapması −1014 → +2 ms); zincir kayması sınıfı açık — o bölgede sessizlik yok, çapalamanın çıpası yok. Referans setinin durumu: 16 kelimenin 8'i tolerans içinde. Tam tablo ve eşik taraması KNOWN_ISSUES.md KI-1'de.
Test sayısı 431 → 468 (462 passed, 6 skipped). Trio (pytest / ruff check . / mypy .) üçü de exit 0.