Soru:
Ses örnekleme hızını ve bit derinliğini azaltmanın doğru yolu nedir?
shadowox8
2013-07-01 20:03:40 UTC
view on stackexchange narkive permalink

Kayıpsız bir ses dosyasıyla sunulduğunda, örnekleme hızını ve bit derinliğini azaltmanın doğru yolu nedir?

Bit derinliğini azaltırken, titreme uygulamam gerektiğini anlıyorum, ancak bilmiyorum hangi ölçek veya yöntem kullanılacağını. (Aslında, "üçgen" veya "şekillendirici" renk taklidi kullanmam gerektiğini okudum, ancak hangisini kullanacağımı hala bilmiyorum. Kişisel tercihime bağlı mı?)

Ne zaman örnek oranını düşürdüğümde, ek işlemin gerekli olup olmadığı hakkında hiçbir fikrim yok. (Belli ki örnekleme hızı bit derinliğinden çok daha karmaşıktır.) Şu anda dönüştürme sürecim şöyle görünüyor:

  ffmpeg -i <input.file> -compression_level 12 [-ar 44100 -sample_fmt 16] <output.flac>  

Uygulamaya özel yanıtlara genel yanıtları tercih ederim, ancak elimden geleni alacağım. Şimdiden teşekkürler!

Ben bir tüketiciyim, yapımcı değil. Bu dosyalara başka işlem uygulanmayacaktır.

Düzenleme 0: Gerçek dünya örneği: 96/24 PCM (WAV) dosyam var. 44.1 / 16 olmasını istiyorum.

Düzenleme 1: Daha fazla araştırma, bu fantastik örnekleme hızı dönüştürücüler karşılaştırmasını (grafiklerle) sağladı!

[Bu videoyu] (http://xiph.org/video/vid2.shtml) başka bir soruda buldum ve çok bilgilendirici ve takip etmesi kolay buldum. Temelde A / D ve D / A dönüşümü ile ilgili, ancak renk taklidi ve etkileri hakkında bazı iyi bilgiler var.
Bkz. [FFmpeg and the SoX Resampler] (https://trac.ffmpeg.org/wiki/FFmpeg%20and%20the%20SoX%20Resampler) ve [FFmpeg Resampler Documentation] (http://ffmpeg.org/ffmpeg-resampler. html).
SoX (bağımsız), nihayetinde kullandığım şey. İkinci bağlantı soruma dahil edildi.
Bir cevap:
Bjorn Roche
2013-07-01 22:59:22 UTC
view on stackexchange narkive permalink

Bunları birer birer doğru sırayla alalım:

  1. Kayıpsız bir dosyayla başlıyorsunuz. Bu ya PCM'dir ya da kayıpsız sıkıştırılmıştır (belirtmediniz). Sıkıştırılmışsa, anlamlı bir şey yapmak için PCM'ye (veya sıkıştırılmamış) dönüştürülmelidir. Bu, genellikle biçimi okuyabildiğini iddia eden herhangi bir uygulama tarafından otomatik olarak yapılır, ancak bunun gerçekleştiğinin farkında olmalısınız. Bu ses üzerinde daha fazla çalışma yapılacağı için, örnekler kayan nokta formatına dönüştürülmelidir.

  2. Ardından örnekleme hızı dönüşümü gelir. Doğru söylediğiniz gibi, SR dönüşümü karmaşıktır. SR dönüşümüne saf bir yaklaşım "örtüşme" distorsiyonu üretecektir. Örneğin, 44100 Hz'lik bir dosyadan diğer her örneği almak size bir 22050 dosyası verir, ancak 22050'de doğru bir şekilde temsil edilemeyen herhangi bir malzeme, elenmek yerine yanlış temsil edilir. Ne kadarının olduğuna bağlı olarak, yanlış sunum kulağa son derece kötü gelebilir. Çözüm, önce bunları filtrelemektir, bu nedenle SR dönüşümü filtrelemeyi ve ardından yeniden örneklemeyi içerir (her ikisini de tek adımda yapmanıza izin veren bir numara olsa da, kavramsal olarak iki adım bu sırayla). Genellikle filtreleme, sr dönüştürme yazılımı tarafından otomatik olarak yapılır, ancak bunun farkında olmalısınız çünkü bu, kalite açısından en büyük farkı yaratır. Önemsiyorsanız filtre kalitesinden ödün vermeyin.

  3. Son olarak, bit derinliğini azaltırsınız. SR dönüşümünde olduğu gibi, bit derinliğini azaltmaya yönelik naif bir yaklaşım bir tür distorsiyona neden olur, ancak bu tür distorsiyon genellikle daha az iğrenç olarak kabul edilir. Bu distorsiyonun çözümü, küçük bir gürültü miktarı olan "titreme" eklemektir. Titreşimi bit derinliği azaltmadan önce eklemelisiniz. Azaltmadan sonra titreme eklemenin gürültü eklemekten başka bir etkisi olmayacaktır. Çoğu yazılım için renk taklidi bir seçenektir (eğer mevcutsa) ve otomatik olarak gerçekleştirilmez. Kullandığınız ve hatta titrek olsanız bile, büyük ölçüde, bir tercih meselesi ve kaynak malzemedir. Matematiksel olarak konuşursak, distorsiyonu ortadan kaldırmanın tek yolu bu olsa da, artık titremekten rahatsız olmayan büyük mastering stüdyoları var. [1] Üçgen ve "şekilli" renk taklidi [2] ile ilgili olarak, temel kural şudur: son aşamada şekilli titreme, diğer adımlar için üçgen titreme kullanılır. Bu nedenle, sizin durumunuzda muhtemelen şekilli bir titreme kullanmalısınız. Bununla birlikte, şekilli bir renk taklidi zaten uygulanmışsa, son adım olarak standart üçgen renk taklidini tercih edebilirsiniz. Buna kulaklarınızın karar vermesine izin vermelisiniz, ancak umarım fark o kadar ince olur ki yine de farketmezsiniz.

[1] Onlar değil rahatsız edici çünkü distorsiyon titremesi, ürettikleri müzikteki dinamik aralık eksikliği nedeniyle etkili bir şekilde ortadan kaldırılıyor. Müziğin dinamik aralığı (modern pop, yaklaşık 6 ila 10 dB dinamik aralığa sahiptir), ortamın dinamik aralığına kıyasla çok çok küçükse (CD'ler yaklaşık 96 dB dinamik aralığa sahiptir), gerçekten titreşime ihtiyaç var.

[2] İkisi arasındaki fark, "üçgen" titremenin beyaz gürültü olmasıdır. Gürültünün frekansını işitme aralığımızın dışına kaydırarak "şekilli" titreme girişimleri daha az duyulabilir. Bu oldukça iyi çalışıyor, ancak bunu tekrar tekrar yaparsanız, özellikle POW-R gibi gerçekten agresif şekilli bir titreme kullanıyorsanız, bazı yüksek frekans birikimlerine neden olabilir.

1. Genelde sadece WAV (PCM) ve FLAC (nihayetinde PCM'ye deşifre eden, evet) ile ilgileniyorum. FFmpeg'in varsayılan algoritmasına bakacağım veya belki de SoX etkinken yeniden derleyeceğim, çünkü algoritması iyi değerlendirildi. [Hydrogenaudio'nun yeniden örnekleme sayfası] (http://wiki.hydrogenaudio.org/index.php?title=Resampling) de çok sayıda referansa sahip gibi görünüyor. Dikdörtgen titremenin aralıklı adımlar sırasında (üçgen yerine) kullanılması gerektiğini okuduğumu hatırlıyorum, ancak bu referansı yeniden konumlandıramıyorum. Ama bu benim durumum için tartışmalı bir nokta. ;)


Bu Soru-Cevap, otomatik olarak İngilizce dilinden çevrilmiştir.Orijinal içerik, dağıtıldığı cc by-sa 3.0 lisansı için teşekkür ettiğimiz stackexchange'ta mevcuttur.
Loading...