Motion ve video

Ses formatları

Ses formatları iki türlüdür: sinyalin bir kısmını atan ve bir daha geri vermeyen kayıplı olanlar, ve dosyayı küçültürken orijinal örnekleri birebir koruyan kayıpsız olanlar. Hiçbiri diğerinden iyi değildir; arşiv kayıpsız, oynatma kayıplı ister.

  • Ders 4 / 10
  • Başlangıç
  • Ücretsiz, kayıt yok

Kayıplı ve kayıpsız: iki doğru iş

Kayıplı: MP3, AAC, Opus

  • Sinyalin bir kısmı atılır ve geri gelmez
  • Yüzde 80 ila 95'e varan oranda küçük
  • Oynatma, yayımlama ve indirilen her şey için
  • Yeniden kodlamak hasarı üst üste bindirir

Kayıpsız: WAV, FLAC

  • Tam olarak orijinal örnekleri geri verir
  • FLAC yaklaşık yüzde 40 ila 50 küçük, WAV hiç sıkıştırılmaz
  • Kayıt, kurgu, master ve arşiv için
  • Ondan alınan her çıktı yeniden sıfırdan başlar

Hiçbiri diğerinden iyi değildir. Hata, arşivi kayıplı tutmak ya da oynatma dosyasını kayıpsız göndermektir.

Son kontrol: Bu dersteki bilgiler ve araç adları bu tarihte kaynaklarıyla yeniden doğrulanır.

Kayıplı ve kayıpsız: aralarındaki fark tam olarak nedir

Kayıpsız kodek dosyayı küçültür ve kendisine verilen örnekleri bayt bayt aynen geri verir. Kayıplı kodek ise böyle bir söz vermez: insan işitme modelinin en az duyulur dediği kısmı atar ve o kısım bir daha geri gelmez. MDN'in ses kodek rehberi de aynısını söylüyor ve tasarrufa bir boyut veriyor: kayıplı kodek yüzde 80 ila 95'e varan oranda, kayıpsız olan ise yaklaşık yüzde 40 ila 50 oranında sıkıştırır.

Bu fark büyüktür ve iki ailenin neden birlikte var olduğunu açıklar. Kayıpsız bir formatta tek bir podcast bölümü birkaç yüz megabayta çıkar ve kimse indirmez. Aynı bölüm kayıplı hâlde birkaç düzine megabayttır ve telefonla kulakiçi kulaklıkta farkı duymazsınız.

Ama yönü ters çevirin, her şey değişir. Bir kez kayıplı sıkıştırılmış bir dosya o bilgiyi temelli kaybetmiştir. Ondan sonradan bir WAV üretebilirsiniz ve dosya büyür, ama atılan geri gelmez. Büyük WAV, yüksek kaliteli WAV demek değildir ve bu tek cümle bu alandaki hataların çoğunu önler.

Ses formatları: MP3, AAC, Opus, WAV ve FLAC

Örnekleme hızı, bit derinliği ve bit hızı ne demek

Havadaki ses sürekli bir dalgadır, bilgisayar ise süreklilikten anlamaz; bu yüzden dalganın düzenli aralıklarla fotoğrafı çekilir. Saniyede kaç fotoğraf çekildiği örnekleme hızıdır: 44100, saniyede kırk dört bin yüz kez demektir. Her fotoğrafın ne kadar hassas olduğu ise bit derinliğidir: 16 bitte her örnek 65536 olası düzeyden birini alır.

Bu iki sayı birlikte sıkıştırılmamış sesin boyutunu belirler ve hesap kolaydır. 44100 ve 16 bitte bir saniyelik stereo, 44100 çarpı 16 çarpı 2, yani saniyede 1411200 bittir. WAV'ın büyük olmasının sebebi budur: hiçbir şeyi sıkıştırmaz, yalnızca o örnekleri arka arkaya yazar. Kendi deneyimimiz bölümünde bunu gerçek bir dosyayla gösteriyoruz.

Bit hızı üçüncü sayıdır ve sıkıştıran kodeklere aittir. Kodeğin saniyede kaç bit harcayabileceğini söyler. MDN, MP3'ün aralığını saniyede 32 ila 320 kilobit olarak veriyor; Opus'un kendi sayfası ise aralığını 6 ila 510 kilobit olarak yazıyor. Opus'un bu kadar aşağıdan başlamasının sebebi, yalnızca müzik için değil konuşma için de tasarlanmış olmasıdır.

Ve para ile yer kazandıran bir kural: örnekleme hızını ya da bit derinliğini kaydın gerçekte yakaladığının üstüne çıkarmak yalnızca dosyayı büyütür. Kalite kaynaktan gelir, dışa aktarırken yazdığınız sayıdan değil.

Ses nasıl dosya olur

  1. 1

    Havada bir dalga

    Sürekli ve sonsuz ince. Bilgisayar bunu anlamaz.

  2. 2

    Mikrofon

    Dalgayı elektrik sinyaline çevirir. Nihai kalitenin tavanı tam burada belirlenir.

  3. 3

    Örnekleme

    Örnekleme hızı: dalganın saniyede kaç kez fotoğraflandığı.

  4. 4

    Nicemleme

    Bit derinliği: her örneğin ne kadar hassas yazıldığı.

  5. 5

    Kodlama ve dosya

    Bit hızı ve format: bir şeyin atılıp atılmayacağına burada karar verilir.

Bu dersteki üç sayı, zincirin ortadaki üç adımında belirlenir. Hiçbiri kaydın kendisini telafi etmez: yankılı bir oda her örnekleme hızında yankılıdır.

Gerçekten kullanılan beş format

Aşağıdaki sütunlar MDN'in ses kodek rehberinden, Opus için de projenin kendi sayfasından okunmuştur.

FormatTürLisansTarayıcı desteğiYeri
MP3KayıplıPatentleri doldu; ABD'de Nisan 2017 itibarıylaTüm büyük tarayıcılarHedef yalnızca MP3 kabul ediyorsa
AACKayıplıYayınlamak ya da dağıtmak lisans istemez; kodek geliştiricileri isterİşletim sisteminin kendi desteğine bağlı; Chrome yalnızca MP4 içindeVideonun içindeki ses
OpusKayıplıTümüyle açık ve telifsiz, RFC 6716 numaralı IETF standardıChrome, Firefox, Edge, Safari 11 ve sonrasıKonuşma ve web oynatma, gecikmenin önemli olduğu her yer
WAVSıkıştırmasızSerbestHer yerdeKayıt ve sesi programlar arasında taşıma
FLACKayıpsızTümüyle açık ve telifsizChrome, Firefox 51 ve sonrası, Safari 11 ve sonrasıArşiv ve master kopya

Bu tablonun iki sütunu diğerlerinden daha çok karar üretir. Birincisi lisans; Opus ile FLAC'ın hiçbir hukuki soru eklenmeden her projeye girebilmesini o açıklar. İkincisi gecikme; sütun değil ama MDN'in metninde var: Opus 5 ile 66,5 milisaniye arasında çalışır ve genel amaçlı kodeklerin en düşüğüdür. Bir sesli görüşme ya da canlı yayın için bu tek sayı tartışmayı bitirir.

Yalnızca tek bir kayıplı formatı destekleyebiliyorsanız MDN'in kendi tavsiyesi AAC'dir. Bu yukarıda söylediğimizle çelişmez: karşı tarafta ne olduğunu bilmiyorsanız güvenli seçim AAC, biliyorsanız daha iyi seçim Opus'tur.

Podcastçı, kurgucu ve arşiv neye ihtiyaç duyar

Üç kişi, üç ihtiyaç; aralarında neredeyse bütün durumları kapsıyorlar.

Podcastçı WAV ile kaydeder ve MP3 ile yayımlar; bu ikisinin arasında başka hiçbir kayıplı dosya olmamalıdır. WAV çünkü kayıt ve kurgu sırasında hiçbir şey kaybolmaz, MP3 çünkü podcast platform listesi hâlâ onu istiyor. Hedef Opus kabul ediyorsa aynı kalitede daha küçük bir dosya alırsınız; ama bunu hafızadan değil platformun kendi belgelerinden okuyun.

Video kurgucusunun genelde seçeneği yoktur ve konteynerin kabul ettiğini koyar: MP4 içinde AAC, WebM içinde Opus. Kolayca unutulan şey, sesin de bir bit hızı olduğu ve nihai dosyadan payını aldığıdır. Konuşma sesi için daha düşük bit hızı ve iki yerine tek kanal, boyutu gözle görülür şekilde düşürür ve kimse fark etmez.

Arşivin ise hepsinden basit bir kuralı var: yeniden üretmesi pahalı olan her şeyi kayıpsız saklayın. FLAC tam bunun için yapıldı ve MDN de kullanım yeri olarak müzik arşivlemeyi adlandırıyor. Elinizde ham WAV dosyaları varsa ve yeriniz daralıyorsa, onları FLAC'e çevirmek hiçbir şey kaybettirmez; kendi deneyimimiz bölümünde bunu bir testle gösteriyoruz.

Ses formatını sizin yerinize seçen dört iş

Hücrelerin ekseni yoktur: her hücre bir iştir ve cevabı yanında yazılıdır.

  • Podcast ve konuşma

    WAV ile kaydedin, MP3 ile yayımlayın. Hedef kabul ediyorsa Opus.

  • Videonun içindeki ses

    MP4 içinde AAC, WebM içinde Opus. Seçimi konteyner daraltır.

  • Arşiv ve master

    FLAC ya da yeriniz varsa orijinal WAV. Asla kayıplı değil.

  • Web'de oynatma

    Opus en küçüğü ve en düşük gecikmelisidir; MP3 en güvenli yedektir.

tek ses dosyası

Bu dört hücre formatı çözer, bit hızını değil. Bit hızı sayısı hedefin kendi şartnamesinden gelmelidir.

Kayıplı bir dosyayı neden yeniden kayıplı olarak dışa aktarmamalısınız

Kayıplı bir dosya her kodlandığında kodek neyi atacağına karar verir. Girdi bu adımdan zaten bir kez geçtiyse, ikinci karar hâlihazırda kendisinden bir şeyler atılmış bir şey hakkında verilir. Sonuç birikir ve geri döndürülemez.

Pratikte bu sessizce olur ve kimse fark etmez: bir MP3'ü kurgu programına atarsınız, tek bir kesme yaparsınız ve yine MP3 olarak dışa aktarırsınız. Ya da zaten AAC olan bir videonun sesini ayırıp podcast için MP3'e çevirirsiniz. İkisi de gayet mümkündür ve ikisi de bir tur daha atma ekler.

Doğru yol yine arşiv kuralıdır. Tek bir kayıpsız kopya saklayın, bütün düzenlemeleri onun üzerinde yapın ve her kayıplı çıktıyı doğrudan o kopyadan alın. Kayıplı bir dosyadan çalışmak zorundaysanız, en azından üç kez değil bir kez daha kodlanmasını sağlayın.

Yapay zekayla hızlı yol

Profesyonel bir podcast'i ev yapımı olandan ayıran şey genelde mikrofon değildir; bölümler arasında tutarlı kalan ses yüksekliğidir. Alışılmış yol, programdaki Normalize düğmesine basmaktır; o yalnızca en yüksek tepeyi kaldırır ve algılanan yükseklikle ilgisi yoktur. Profesyonel yol ise bütünleşik yüksekliği ölçüp düzeltmektir ve ffmpeg'de tam bunun için, kendisini bir EBU R128 uygulaması olarak tanıtan loudnorm filtresi vardır. Onun iki geçişli biçimi tam olarak bir dil modelinin işe yaradığı yerdir: birinci geçiş ölçülen değerleri JSON olarak basar, ikinci geçişin de o aynı değerleri birebir alması gerekir. Bu mekanik doldurma, insanların yanlış yaptığı adımdır.

  1. Birinci geçiş, ölçüm. Tek satır: ffmpeg -i in.wav -af loudnorm=print_format=json -f null - komutu measured_I, measured_TP, measured_LRA ve measured_thresh değerlerini basar ve hiçbir dosya yazmaz.
  2. Hedefi bir yerde okuduğunuz bir sayıdan değil, hedefin kendi belgelerinden alın. Hedef bir şey yayımlamadıysa loudnorm'un kendi varsayılanları yerinde kalır: bütünleşik yükseklik eksi 24, gerçek tepe tavanı eksi 2, yükseklik aralığı 7. Bunları ffmpeg -h filter=loudnorm ile kendiniz görebilirsiniz.
  3. Aşağıdaki tarifi birinci geçişin JSON çıktısı ve hedefin değeriyle doldurun. Model, ikinci geçiş komutunu o ölçülen değerlerle kurmalı ve nihai çıktıyı aynı komutta teslim formatına kodlamalı; böylece dosya iki kez kodlanmaz.
  4. Sonunda yeniden ölçün. Aynı birinci geçiş komutunu çıktı üzerinde çalıştırın; sayı hedefe oturmalı. Oturmadıysa bu genelde kaynağın çok geniş bir dinamik aralığı olduğu ve sayıyı ikinci kez zorlamak yerine insan kararı gerektiği anlamına gelir.

Kopyalamaya hazır şablon

Rol: ses mühendisi. İşin ikinci loudnorm geçişinin komutunu tam olarak kurmak. Hiçbir sayı üretme; yalnızca aşağıdaki JSON'da ya da hedef değerinde geçen sayıları kullan.

Hedef değeri:
{hedef bir sayı yayımladıysa buraya yaz, yoksa filtrenin kendi varsayılanları kalsın diye «yayımlanmamış» yaz}

Teslim formatı ve şartnamesi:
{örn. podcast barındırıcısı için stereo MP3 | video için MP4 içinde AAC | web için Opus}

Birinci geçişin JSON çıktısı:
{JSON'u buraya yapıştır}

Şu sırayla cevapla:
1. Dört measured değerini de JSON'dan birebir alan ve linear'ı açık tutan tek bir ffmpeg komutu ver.
2. Aynı komutta çıktıyı doğrudan teslim formatına kodla. Ara dosya üretme.
3. Komutun altında, tek satırda her seçeneğin ne yaptığını söyle.
4. Ölçülen yükseklik hedeften çok uzaksa bunun ne kadar kazanç gerektirdiğini söyle ve gürültü tabanının da aynı ölçüde yükseleceği konusunda uyar.
5. Çıktı dosyasını yeniden ölçen komutu da yaz ki kendim kontrol edebileyim.

Çıktıya güvenmeden önce: Yüksekliği eşitlemek kalite değildir. Yankılı oda bundan sonra da yankılıdır ve cılız bir kaydı yükseltmek gürültü tabanını da beraberinde yükseltir. İki şeyi de asla yapmayın: arşiv kopyasını değil yalnızca teslim kopyasını normalleştirin; ve loudnorm çıktısını filtreden yeniden geçirmeyin, çünkü her geçiş bir kodlama daha demektir.

Bu işte yapay zeka

Görsel formatlarının aksine ses, yapay zekanın gerçekten bir şeyi değiştirdiği bir alan: deşifre, konuşma temizleme ve metinden sese, üçü de bugün çalışıyor. Ama format seçimi hâlâ bir modelin zevki değil hesaptır ve her şeyin bozulduğu yer, kötü sesi iyi sese çevirdiğini iddia eden araçlardır.

Gerçekten işe yarayan araçlar

  • ElevenLabs Metinden sese ve dublaj için. Modellerinin, Farsçayı gerçekten okuyup okumadığına göre ağırlıklandırılmış sıralaması bu sitede var. Kendi kullanım şartlarındaki ihracat denetimi maddesi İran'ı adıyla anıyor; dolayısıyla İran'dan resmi kayıt ve ödeme yok.
  • Claude ffmpeg filtre zincirini kurmak ve ölçülen değerleri ikinci loudnorm geçişine doldurmak için; açıklaması filtre belgeleriyle karşılaştırılabilir. İran, Anthropic'in desteklenen ülkeler listesinde değil.
  • FFmpeg Yapay zeka aracı değil ve listede bilerek var. Yükseklik ölçmek, format çevirmek ve konuşmayı mono yapmak; üçü de birer komut satırıdır ve hiçbir model gerektirmez.
  • RGB İran için erişim ve ödeme katmanı, araçlardan ayrı tutulmuş.

Nerede geri teper

Ses «iyileştirme» araçları görsel muadillerinin yaptığını yapar: hiç kaydedilmemiş olanı geri getirmez, yerine en olası tahmini koyar. Bir tanıtım için bunun önemi yoktur. Bir röportaj, bir müşteri referansı, kaydedilmiş bir toplantı ya da kayıt işlevi görecek herhangi bir dosya içinse iyileştirilmiş sürüm artık orijinal kayıt değildir ve dosya adlandırması hangisinin master hangisinin işlenmiş olduğunu açıkça göstermelidir. İkinci risk ters yönde ilerler: yeniden kodlama yapay zeka ses filigranını silmez. Google, SynthID için ses filigranının gürültü eklemek, MP3 sıkıştırması ya da parçanın hızını değiştirmek gibi yaygın değişikliklerle bozulamadığını yazıyor. Üçüncü risk teknik değil ama her şeyi mahveder: gerçek bir insanın sesini yazılı izni olmadan klonlamak. Bu, teknik bir sorudan önce sözleşmesel bir sorudur ve cevabı yayından sonra değil kayıttan önce alınmalıdır.

Kaynaklar: MDN: Web audio codec guide Opus Interactive Audio Codec Google DeepMind: SynthID ElevenLabs Terms of Use

Bu tavsiyenin sınırı

Format ilk değil son karardır. Oda, mikrofon ve ağız ile mikrofon arasındaki mesafe sonucu neredeyse her seferinde kodek seçiminden çok etkiler; yankılı bir odada kaydedilmiş sesi hiçbir format kurtarmaz. Kayıpsız da daha iyi tınlıyor demek değildir; geri döndürülebilir demektir. Hedef cihazda bir fark duymuyorsanız teslim için kayıpsız dosyaya ihtiyacınız yoktur, yalnızca bant genişliği harcarsınız. Ve tarayıcı destek listesi taşıyan her sayfa gibi, bu tablonun sütunları da üstte basılı tarihte kaynaklarından okundu ve bugün yeniden o kaynaklardan okunmalıdır.

Kendi işimizden

Bu dersin iki iddiasını bu sunucuda, ffmpeg 6.1.1 ile, bu sayfanın üstünde basılı tarihte ölçtük. Önce WAV hesabı: 44100'de, 16 bit, iki kanallı otuz saniyelik bir dosya ürettik ve 5292078 bayt çıktı; oysa 44100 çarpı 16 çarpı 2, bölü 8, çarpı 30 işlemi 5292000 veriyor. Dosyanın tamamı, 78 baytlık başlık dışında, o hesaptan ibarettir. İkinci olarak «kayıpsız»ın anlamı: aynı dosyayı FLAC, MP3, Opus ve AAC'ye çevirdik, sonra beşini de ham örneklere geri çözüp md5 aldık. WAV ile FLAC ikisi de 1671d60e646f0e771bbf874a6a5db852 döndürdü, yani bayt bayt aynı. Üç kayıplı dosya üç farklı md5 döndürdü. Burada kulak gerektirmeyen ve kesin cevap veren tek test budur.

Gerçek devam soruları

MP3 ile WAV arasındaki fark nedir?

WAV hiçbir şeyi sıkıştırmaz ve örnekleri kaydedildiği gibi tutar; bu yüzden büyüktür ve kayıt ile kurgu için doğrudur. MP3 kayıplı sıkıştırır ve sinyalin bir kısmını temelli atar; bu yüzden küçüktür ve yayımlamak için doğrudur. Doğru yol birinciden ikinciye gider, asla tersi olmaz.

Opus mu MP3 mi daha iyi?

Teknik olarak Opus daha gençtir, telifsizdir, çok daha düşük bit hızlarından başlar ve genel amaçlı kodeklerin en düşük gecikmelisidir. Ama MP3 pratikte her yerde oynar ve bazı platformlar hâlâ başka bir şey kabul etmez. Hedefi siz belirliyorsanız Opus, belirlemiyorsanız MP3.

Podcast için hangi bit hızını kullanmalıyım?

Sayıyı genel bir kural değil, dosyayı yüklediğiniz yerin şartnamesi belirler. Ama iki şey neredeyse her zaman doğrudur: konuşma müzikten çok daha düşük bit hızı ister ve tek bir ses stereo değil mono gönderilmelidir; çünkü stereo hiçbir şey katmadan boyutu ikiye katlar.