.NET'te podcast sesinden temiz altyazıya: Whisper ve s1-mini
Bruno Capuano, .NET'te yerel çalışan bir altyazı hattını anlatıyor. Podcast sesi önce Whisper ile zaman damgalı metne çevriliyor, ardından s1-mini yalnızca her altyazı satırının metnini temizliyor ve zamanlamalar değişmeden kalıyor. Yazı ayrıca uzun İspanyolca kayıtlardaki sınırları da ele alıyor.
Kilit noktalar
- Segment zaman damgaları EnableTimestamps ile açıkça etkinleştirilmeli; yoksa Segments null döner.
- SubtitleCue.FromTimes zaman satırını biçimlendirir; SRT virgül, WebVTT nokta kullanır.
- NormalizeSubtitlesAsync metni temizler, <i> gibi etiketleri siler, çok satırlı cue'ları birleştirir ve zamanlama satırlarına dokunmaz.
- dropEmptyCues: true geçilirse yalnızca dolgu olan cue'lar tamamen kaldırılır.
- İspanyolca için çok dilli bir Whisper modeli ve --language es kullanılmalı; s1-mini v1 yalnızca İngilizce metni temizler.
- WebVTT çıktısı için SubtitleFormat.WebVtt seçilmeli.
Bir okuyucu, podcast'i için ürettiği SRT dosyalarını ElBruno.S1Mini ile temizleyip temizleyemeyeceğini sordu. Bruno Capuano'nun yanıtı sesten altyazıya uzanan yerel bir hat: Whisper segment zaman damgalarıyla metni çıkarıyor, her segment bir altyazı satırına dönüşüyor ve s1-mini yalnızca metni düzenliyor. Model sesi duymadığı ve zaman damgalarını görmediği için zamanlama Whisper'da kalıyor.
Yazı sınırları da açıkça belirtiyor. Whisper'ın kendi hataları düzeltilmiyor, uzun kayıtlar pencerelerle işlenmeli ve s1-mini v1 yalnızca İngilizce olduğu için İspanyolca'da çok dilli bir Whisper modeli gerekiyor. Zaman değerleri korunuyor ama bağımsız doğrulanmış değil; bu yüzden kaba aralıklı altyazılar üretime almadan önce gözden geçirilmeli. WebVTT çıktısı da destekleniyor.
Gerçek dünyada kullanımı
- Haftalık bir podcast kaydını bulut servisine ses yüklemeden SRT veya WebVTT altyazısına çevirmek.
- Başka bir transkripsiyon aracından çıkan mevcut altyazı dosyalarını Whisper adımı olmadan temizlemek.
- Sahte bir IChatClient ile altyazı mantığını çevrimdışı birim testlerinde doğrulamak.
Neden önemli
Uygulamanıza yerel konuşmadan altyazıya bir hat ekleyip zamanlamayı bozmadan tutabilirsiniz; ancak transkripsiyon hatalarını ve kaba cue sınırlarını yine de gözden geçirmeniz gerekir.
Benzer haberler
- C#'ta LLM token'ları: yapay zekâ "strawberry"deki r'leri neden sayamıyor?DEV Community: #csharp1 gün önce
- FAIRouter NuGet'te: birkaç satır C# ile göreve göre dil modeli seçimiHabr C# (ru)2 gün önce
- PostSharp 2027.0, AI kodlama ajanlarına derleme sonuçlarını ve API bilgisini veriyorMetalama / PostSharp Blog5 gün önce