Opus 1.5 duyuruldu: makine öğrenimiyle yükseltilen Opus
(opus-codec.org)- Makine öğrenimi tabanlı özellikler eklenerek paket kaybı gizleme, düşük bitrate ses kalitesi iyileştirmesi ve DRED yedekli iletim sağlanırken RFC 6716 ile tam uyumluluk korunuyor
- Yeni ML tabanlı özellikler varsayılan olarak devre dışıdır ve boyut ile CPU maliyeti nedeniyle hem derleme zamanında hem de çalışma zamanında anahtar gerektirir
- Deep PLC,
--enable-deep-plcile derlenmeli ve çalışması için decoder karmaşıklığı 5 veya üzerine ayarlanmalıdır; yalnızca decoder'ı etkilediği için uyumluluk üzerinde etkisi yoktur - DRED,
--enable-dredile etkinleştirilir ve--enable-deep-plcseçeneğini de otomatik olarak etkinleştirir; henüz standartlaşmamıştır ve Opus 1.5'teki DRED son sürümle uyumlu değildir, ancak bit akışındaki deneysel sürüm numarasıyla uyuşmazlık algılanıp DRED payload'u yok sayılır - DRED, bir seferde en fazla 1 saniyelik yedek sesi iletir; bu, yaklaşık 12~32 kb/s ek yükle 20 ms'lik paketi fiilen 50 kez göndermek anlamına gelir
- Düşük bitrate konuşma iyileştirmesi için LACE ve NoLACE eklendi;
--enable-osceile derlendikten sonra decoder karmaşıklığı 6'da LACE, 7 ve üzerinde NoLACE etkinleşir - LACE ve NoLACE şu anda yalnızca 20 ms frame boyutu ve wideband veya üzeri bant genişliğinde uygulanır; encoder'dan bağımsız iyileştirmeler oldukları için uyumluluk üzerinde etkileri yoktur
- DRED kullanımı, jitter buffer ile daha yakın entegrasyon gerektirir; Google WebRTC deposunun bir fork'u olan webrtc-opus-ng yamasıyla DRED test edilebilir
- IETF mlcodec çalışma grubunda Opus genişletme mekanizması, deep redundancy ve konuşma kodlama iyileştirmesinin standardizasyonu üzerinde çalışılıyor
- AVX2/FMA desteği ve çalışma zamanı algılaması eklendi; böylece desteklenen donanımlarda yeni DNN kodu ile SILK encoder 256 bit SIMD kullanır
- AArch64 üzerinde ARMv7 Neon optimizasyonları yeniden etkinleştirildi ve Cortex-A75 veya üzerindeki sistemlerde Arm dot product uzantısı çalışma zamanında algılanarak yeni DNN kodunun 8 bit tamsayı iç çarpımları hızlandırılıyor
- Daha gerçekçi bir paket kaybı simülatörü eklendi;
--enable-lossgenile derlendikten sonraopus_demoiçinde-sim-loss <percentage>ile kullanılabilir
1 yorum
Hacker News yorumları
Bu tür codec’lerin başlıca sınırlaması CPU ve pil ömrü; burada makine öğrenmesini yer yer, seyrek biçimde uygulayıp geleneksel makine öğrenmesi dışı algoritmalarla birleştirerek CPU’ya karşı kalite dengesini iyi yakalamış olmaları hoşuma gitti
Örneğin düşük bit hızı/LACE desteğinde “kanıtlanmış bir post-filter fikriyle başlayıp üstüne tam gerektiği kadar derin öğrenme sinir ağı sihri serpiştirdiklerini” söylüyorlar
Kilit nokta, ham ses örneklerini sinir ağına sokmamaları. Yaklaşımları şu: “Sesin kendisi asla DNN’den geçmez. Sonuç olarak DNN ölçütlerine göre küçük ve karmaşıklığı çok düşük bir model ortaya çıkar; eski telefonlarda bile çalışabilir”
Gömülü algoritmalar için doğru yön gibi görünüyor; bugünlerde moda olan uçtan uca makine öğrenmesine kıyasla epey daha az araştırılmış bir alan gibi duruyor
Makine öğrenmesi tabanlı konuşma tanıma da bazı benchmark’larda daha iyi sonuç veriyor, ama benzer biçimde sonucu halüsinasyonla üretme ödünleşimi var
P2P ses akışı kütüphanesinde (https://git.iem.at/cm/aoo/ - hâlâ alfa) Opus’u başlıca codec’lerden biri olarak kullandığımız için bu çok sevindirici bir haber
Yeni makine öğrenmesi özelliklerini mutlaka kendim deneyeceğim
NoLACE ile 9kbps’de bu kadar iyi konuşma kalitesi elde etmek gerçekten inanılmaz derecede etkileyici
Üretim kodunu test etmeye devam edebilmek için tüm müzik kataloğunu 8000kbps WMA’ya yeniden encode edip stream etmem gerekti
Kalite biraz hayal kırıklığıydı
$ ffmpeg -i female_ref.wav - acodec real_144 female_ref.raDesteklenmeyebilir diye tekrar wav’a çevirip yükledim: http://9ol.es/female_ref-ra.wav
Bu, 90’ların ortasında 14.4kb/s çevirmeli bağlantı için “14.4” ses olarak görülürdü. Neredeyse 30 yılda, üstelik gerçekte daha az baytla elde edilebilen kalitenin bu kadar iyileşmiş olması gerçekten etkileyici
Ses codec’leri, konuşma sentezi ve konuşma tanımanın birbirini besleyerek gelişme biçimi ilginç. Bir taraftaki ilerleme genellikle diğer tarafta da ilerlemeye yol açıyor
Merak ettiğim şey, yaygın makine öğrenmesi etiği sorularını ele alıp almadıkları. Özellikle algoritmanın erkek ve kadın seslerinde daha iyi ya da daha kötü performans gösterip göstermediğini, dillere veya lehçelere göre durumun nasıl olduğunu, en başta yalnızca konuşmaya mı göre ayarlandığını yoksa müzik ya da kuş seslerinde de iyi çalışıp çalışmadığını merak ediyorum
Yine de örnekler etkileyici; bu düzeyde anlaşılabilir kalitenin aramalarda standart hâline gelmesini umuyorum
Testler çoğunlukla İngilizce üzerinde yapılmış, ama henüz standartlaştırılmadığı için erken yayımlama nedenlerinden biri de insanların kendilerinin deneyip sorunları bildirmesini sağlamak
Kadın ve erkek konuşmacı oranı neredeyse eşit. Ancak codec’ler her zaman ses perdesine bağlı olarak bir yönde az da olsa algısal kalite yanlılığı oluşturur. Ayrıca buradaki her şey yalnızca konuşma için
Bu durumlarda da iyi parametreleri bulmak için test setleri, hatta bazen “eğitim” ve “doğrulama” setleri kullanılır. Bu veriler ya da karar veren değerlendiricilerin kulakları da yanlılık kaynağı olabilir
Makine öğrenmesinde yanlılık sorusu sık gündeme geliyor, çünkü temelde veri olmadan algoritma çalışmaz; ama tüm algoritmalar insanlar tarafından tasarlanır ve birçok algoritma parametre ayarı için veriden yararlanır. İkisi de yanlılık kaynağı olabilir
Bence makine öğrenmesinin daha çok bilinmesinin nedeni, geleneksel algoritmalara göre tümevarımsal yanlılığının daha az olması ve bu yüzden veri setindeki yanlılıkları daha kolay benimsemesi
UTF yaygınlaşmadan önce web siteleri ve uygulamaların dilimde kullanılan özel karakterleri yok sayması da benzerdi
Bunu etik bir mesele olmaktan çok teknik bir sınırlama ya da bilgisizlik olarak görüyorum
Yanına metin altyazı akışı eklemeye ne dersiniz diye düşünüyorum. Encoder, makine öğrenmesiyle konuşmayı metne dönüştürebilir; decoder da bu metni ve ses kopmalarının çevresindeki sesi birlikte kullanıp koşullu metinden konuşmaya DNN’ine verebilir
Böylece ağın, yalnızca sese bakarak kopan bölümleri körlemesine enterpole etmeyi gerektiren daha zor problemi öğrenmesine gerek kalmaz. Metin akışı düşük bit hızlı olduğundan, belirli bir metin mesajının alınma olasılığını artırmak için ciddi miktarda yedeklilik de eklenebilir
Sonuçta çıktı, daha yüksek seviyeli ve verimli biçimde sıkıştırılmış bilgiden sentezleniyor
Çok havalı. Halüsinasyon sorununu ele almış gibi görünüyor. Yedeklilik olmadığında halüsinasyonun ortaya çıktığı, yedeklilikle düzeldiği örnekleri görmek ilginç olurdu
Bu yeni Opus sürümünün, düşük bit hızlarında üstün olan xHE-AAC ile arasındaki farkı kapatıp kapatmadığını merak ediyorum
Opus 1.5’in artık konuşmada 16kbps’de bile fiilen şeffaf olması ve 96kbps’de de 192kbps MP3’ten hâlâ daha iyi olması güzel
Buna karşılık xHE-AAC’nin 96~256kbps aralığı, AAC-LC’nin (Apple, FDK) yaklaşık 160kbps’inden bile pratikte daha kötü göründüğü için hâlâ baştan savma çıkmış gibi duruyor
Mevcut kayıplı formatları yeniden encode ederken fazla artefakt eklememeye yardımcı olacak profiler ya da ayarlar olsa nasıl olur diye düşünüyorum
Büyük koleksiyonlarda, kayıpsız orijinallere kolay erişim yoksa bu sorunla karşılaşılıyor
Ek kalite kaybının minimum olduğunu bilebilsem, çeşitli mp3, aac ve vorbis dosyalarını Opus’a taşımaya ciddi ilgi duyarım