FFmpeg 8.0, Whisper Desteği Ekledi
(code.ffmpeg.org)- FFmpeg 8.0 sürümü, Whisper konuşma tanıma modeli desteğini resmî olarak ekledi
- Whisper, OpenAI tarafından geliştirilen açık kaynaklı bir konuşma tanıma modeli olup farklı dillerde otomatik konuşma dönüştürme için kullanılıyor
- Bu özelliğin eklenmesiyle video ve ses işleme görevlerinde doğrudan konuşmadan metne dönüştürme iş akışlarını otomatikleştirme olasılığı arttı
- Geliştiriciler ve medya otomasyonu alanında FFmpeg'in kullanım alanı ve verimliliği önemli ölçüde güçlendi
- En yeni konuşma tanıma özelliğini yerleşik olarak sunarken ek harici araçlara veya karmaşık entegrasyon süreçlerine duyulan yükü azaltıyor
FFmpeg 8.0'da Whisper desteğine genel bakış
- FFmpeg 8.0 sürümü, Whisper konuşma tanıma modeli desteğini ekleyerek farklı dillerde ses verisini otomatik olarak metne dönüştürme işlevi sunuyor
- Whisper, OpenAI tarafından geliştirilen derin öğrenme tabanlı algoritma kullanarak yüksek doğrulukta konuşmadan metne dönüştürme performansı sağlıyor
- Mevcut FFmpeg kullanıcıları, harici araçlardan geçmeden yerleşik Whisper desteği sayesinde video ve ses dosyalarından altyazı üretebilir veya konuşma içeriğini çıkarabilir
Whisper entegrasyonunun başlıca avantajları
- Whisper entegrasyonu sayesinde FFmpeg tabanlı medya işleme ve otomasyon pipeline'larında verimli ve ölçeklenebilir konuşma tanıma iş akışları kurulabiliyor
- Konuşma tanıma algoritmasının yerleşik hale gelmesiyle geliştiriciler, karmaşık ek entegrasyonlar ya da ayrı script yazma yükü olmadan yalnızca basit komutlarla konuşmadan metne dönüştürme sonuçları alabiliyor
FFmpeg ve Whisper kombinasyonunun sektörel önemi
- Büyük medya varlıklarının yönetimi, altyazı üretimi, video verisi arşivleme gibi çeşitli alanlarda FFmpeg + Whisper kombinasyonu maliyet verimliliği ve otomasyonu aynı anda gerçekleştirme avantajı sunuyor
- Daha önce FFmpeg ile ayrı açık kaynak konuşma tanıma araçlarını entegre etmek gerekiyordu; artık doğrudan FFmpeg içinde işleme ile iş akışı sadeleşmesi ve işlem hızında artış beklenebiliyor
Teknik ayrıntılar
- FFmpeg'e, Whisper.cpp kütüphanesi temel alınarak FFmpeg içinde doğrudan otomatik konuşma tanıma (ASR) gerçekleştiren bir ses filtresi eklendi
--enable-whisperseçeneğiyle etkinleştirilebiliyor ve model yolu (model) zorunlu olarak belirtilmeli- Başlıca seçenekler: dil ayarı (language), GPU kullanımı (use_gpu), kuyruk boyutu (queue), çıktı biçimi (format: text/srt/json), VAD (ses etkinliği algılama) modeli ve eşik ayarı vb.
- queue değeri küçük olursa gerçek zamanlılık artar ancak doğruluk düşer ve CPU yükü yükselir; büyük olursa doğruluk artar ancak gecikme büyür
- destination seçeneğiyle sonuçlar çıktı dosyasına, URL'ye veya metadata'ya kaydedilebilir; AVIO protokolü de desteklenir
- Örnek olarak SRT altyazı üretimi, JSON biçiminde HTTP gönderimi, mikrofon girişinin gerçek zamanlı dökümü (VAD kullanarak) senaryoları yer alıyor
- SRT altyazı dosyası oluşturma örneği
ffmpeg -i input.mp4 -vn \ -af "whisper=model=../whisper.cpp/models/ggml-base.en.bin:language=en:queue=3:destination=output.srt:format=srt" \ -f null -
- SRT altyazı dosyası oluşturma örneği
1 yorum
Hacker News görüşleri
Subtitle Edit'i tavsiye etmek isterim (geliştiriciye bağış yapmak da iyi bir fikir). Subtitle Edit, Whisper ile denemeler yapmak için iyi bir arayüz sunuyor. Eskiden Aegisub kullananlar için Subtitle Edit'e Aegisub 2.0 demek mümkün
NASIL YAPILIR: Video veya ses dosyasını sağ taraftaki pencereye sürükleyin, ardından Video > Audio to text (Whisper) yolunu izleyin. Benim deneyimimde genelde Faster-Whisper-XXL en iyi sonucu verdi. Mümkünse
large-v2kullanmanızı öneririm (large-v3bazı konularda gerileme gösteriyor). Mükemmel değil ama Subtitle Edit'in Tools > Fix common errors gibi özellikleriyle yeterince düzeltilebiliyorYeni Nvidia ekran kartlarında düzgün çalışması için
--compute_type float32girmeniz gerekebilir. Hata alırsanız, aşağıdaki komuttaki gibi torch kütüphanesini belirli bir index üzerinden yeniden kurmanız gerekebilir Bu tür bir hatayı çözdüyseniz, hangi sorun olduğunu ve çözümü yorum olarak paylaşırsanız başkalarına da yardımcı olur (web aramalarında da bulunur)Subtitle Edit ana sayfası
Subtitle Edit geliştiricisine bağış sayfası
Subtitle Edit son sürüm releases
uv, torch ile ilgili paketleri kurarken CUDA sürücüsüne uygun tensor sürümünü otomatik seçiyor. Yine de bunu sistem Python'u yerine sanal ortamda (venv) kullanmak daha iyiAşağıdaki komutla otomatik backend seçimi yapılabilir
uv pip install torch torchvision torchaudio --torch-backend=autoAyrıntılı açıklama bağlantısı
torch ile ilgili paketler torch index'inden, diğerleri ise PyPI'dan indirildiği için çakışma konusunda endişe etmeye gerek yok
Profesyonelce hazırlanmış teknik videolarda bile gereksiz, kaldırılamayan altyazılar gördüm. Kedi videosu değilse bu kadarına gerek yok
Yerel transkripsiyon kullanılırsa otomatik çeviri mümkün olur ve zaten videoya gömülü olan altyazının üstüne bir de yeni altyazı bindirme gibi kötü deneyimler de ortadan kalkar
Örneğin "I scream" ile "Ice cream" gibi telaffuzu benzer ama anlamı tamamen farklı ifadelerde, daha sonraki bağlamı kullanarak önceki metin sonucunu değiştirebiliyor mu, bunu öğrenmek istiyorum
Bunun hem gerçek zamanlılığı hem de doğruluğu birlikte sağlayabilmek için gerekli bir koşul olduğunu düşünüyorum. Nitekim Android'deki transkripsiyonda konuşma sürerken metnin anlık olarak düzeltildiğini gördüm
"How to wreck a nice beach you sing calm incense"
Makale bağlantısı
Doğuştan işitme engelli kişilerin, ses temelli kelime oyunlarını (dil oyunları, ritim vb.) anlamak ya da üretmek için ayrıca çalışıp çalışmadığını merak ediyorum
Bu, deneyimsel sezgi olmadan soyut matematikle uğraşmaya benziyor gibi geliyor; gerçi matematikçiler de kendi soyutlamalarından müzik gibi deneyimsel olgular üretebildiklerini söylüyor, bu da ilginç bir nokta
İlgili pdf bağlantısı
Whisper'ın yapısını tam bilmiyorum ama genel olarak ASR modellerinde decoder, mevcut parçadan sonraki sesi de dikkate alarak bağlamı anlamaya çalışır. Böylece "I like ice cream" gibi dilbilgisel olarak doğal bir biçime yönelmek için dil modeliyle düzeltme yapılır
Run Whisper audio transcriptions with one FFmpeg command
Daha önce
sr(super resolution) filtresi eklenmişti ama artık eski kaldı; ağırlıkları edinmek de karmaşık, çeşitli ML kütüphanelerine (libtorchvb.) destek eklense de başlamak kolay değilKeşke kullanıma hazır modeller bir
modelsklasöründe toplansa da upscaling, gürültü engelleme, zaman serisi upscaling gibi çeşitli modelleri hızlıca kullanabilsekGünümüzde ses ve video filtreleri araştırmalarının çoğu ML tabanlı, yeni codec'lerin de muhtemelen ML tabanlı olması bekleniyor
Whisper hakkında Wikipedia açıklaması
Whisper tam model listesi
Elimde çok eski bir Japon filmi var ama İngilizce çevirisi olmadığı için izleyemiyorum
Daha önce Fiverr üzerinden çevirmen aramıştım; resmî fiyatlarla birkaç bin doları buluyordu, pazarlıkla birkaç yüz dolara kadar indi ama sonunda iletişim kesildi
Kalite lehçeye ve ses kalitesine bağlı olarak değişir; en iyi sonuçları
large-v3modeli veriyorFFmpeg entegrasyonunu aşağıdaki gibi bir komutla kullanabilirsiniz
ffmpeg -i movie.mp4 -af whisper=model=large-v3:task=translate output.srt"İngilizce" modeli aslında birçok dili destekliyor ve doğrudan İngilizceye çevirebiliyor
Ayrıca önce Japonca transkripsiyon alıp sonra başka bir çeviri aracıyla İngilizceye çevirmek de mümkün. Anlam bakımından karmaşık diyaloglarda bu yöntem bazen daha iyi sonuç verebilir
Örnek:
Doğrudan çeviri: Japonca→İngilizce: whisper-standalone-win referans bağlantısı
Seste olmayan şeyler uydurduğu çok oldu ve videoda birden fazla dil karışınca tamamen kafası karışıyor
Bağlamı hiç anlamadığı için, YouTube gibi otomatik çeviri sistemlerinde görülen hatalar burada da sıkça ortaya çıkıyor
En yüksek performans en büyük modelle elde ediliyor ama hız donanıma göre değişir
Bir başka yöntem de VideoToTextAI gibi araçlarla altyazıyı çıkarıp 100'den fazla dile çevirerek SRT dosyası olarak kaydetmek olabilir
Var olmayan cümleleri rastgele eklediği çok oluyor
Sınıfandırma için işe yarayabilir ama altyazı transkripsiyonu için yetersiz
Model kaynağı ayarlamadan doğrudan Mac üzerinde çalışabilirse güzel olur
SpeechTranscriber belgeleri
SpeechAnalyzer belgeleri
Gerçek kullanım incelemesi ve Whisper ile karşılaştırma
whisper.cppkütüphanesininavfiltersarmalayıcısını sunması ve bağımlılık yönetimini kullanıcıya bırakmasıYani:
1.
whisper.cppgit clone2. O kütüphane için bağımlılıkları kur
3. Derlemeyi başarıyla tamamla
4. Gerçek modeli indir
ancak bunlardan sonra
-af "whisper=model...filtresini kullanabiliyorsunÖn hazırlık yoksa çalışmayacak ve bu da yeni başlayanlar için büyük bir hayal kırıklığı olur
Bence Whisper
avfilter'ını yerel olarak sağlamak ve yalnızca modeli indirtmek daha verimli olurdu; böylece gerçek kullanıcı sayısı da çok daha artardıwhisper-cppprojesinin değişim hızını da hesaba katmak gerekirDiğer filtrelerde (
vmafgibi) olduğu gibi bağımlılık derleme ve model indirme gereksinimleri varsa, yakında yeni başlayanlar için önceden derlenmiş binary'ler de sunulacaktır diye düşünüyorum (whisper-cppMIT lisanslı olduğu için)Hatalar ve halüsinasyonlar var ama istediğim seviyede çalışıyor
Bu tür durumlarda konuşmacı tanıma özellikle önemli olur