Bir parçanın mono mu yoksa stereo mu olduğu nasıl doğrulanır?


2

Bazen, özellikle eski müzik albümlerini araştırırken bir ses parçası mono veya stereo olarak kaydedilmişse, saygın bir yöntem kullanarak doğrulamam gerekir.
Audacity'nin bir dosyayı açarken bunu söylemediğine inanmak için bir nedenim var (Lütfen Lütfen Beat The Beatles tarafından yayınlanan “Lütfen Lütfen Beni Beat The Stereo” olarak gösterildi).


5
"mono" ile, aynı sinyalin hem sol hem de sağ kanallara karıştırıldığı anlamına gelebilir. Bu, hem sol hem de sağ hoparlörlerin sinyal alabilmesi için yapılabilir
Blaine

1
@ Blaine'nin yorum türü, orijinalin mono, stereo olarak kaydedilip kaydedilmediğini veya "mix" in orijinal stereo olarak kaydedilmiş bir şarkının bir kanalı olup olmadığını asla tanımlayamayacağınız için bu sorunun çözülmesi imkansız olabilir. .
Kinnectus

2
Bunu yapmanın bir yolunu bildiğimi söylemiyorum, ancak olası bir çözüm bir şekilde sağ kanalı ve solu karşılaştırmak ve aynı olup olmadıklarını kontrol etmek olacaktır
Blaine

@ Kinectus: Orijinal albümün hangi formatta kaydedildiği önemli değil, bu sorunun kapsamı dışında. Ancak Blaine'in yorumunda açıklandığı gibi, şimdi potansiyel olarak "aynı sinyalin hem sol hem de sağ kanallara karıştığını" anlıyorum - bu nedenle teknik olarak stereo, ancak pratikte mono.
user598527

Yanıtlar:


3

Bir stereo dosyasının her iki kanalında da aynı mono parçaya sahip olup olmadığını söylemenin bir yolu , kanallardan birini (örneğin, sol olanı) ters çevirmek ve sonra diğer kanalla eklemektir. (Bu nedenle faz tutarlılığını arıyoruz )

Audacity'i çok sık kullanmıyorum, bu yüzden böyle bir şey yapıp yapamayacağını bilmiyorum ama işte istediğinizi yapan küçük bir FFmpeg sözdizimi:

ffmpeg -i 'is_this_stereo.wav' -filter_complex "stereotools=phasel=1" -ac 1 'output.wav'

(Ayrıca diğer ses kodekleriyle de çalışır - WAV gibi kayıpsız bir formatta kodlamanın hiçbir şeyi silmemesini sağlar)

FFmpeg-script'in yaptığı: Sol kanalın fazını tersine çevirir, ardından her iki kanalı da yeni bir kanalda toplar.

Bunun yerine -ac 1, filter_complex-chain değerini de değiştirebilirsiniz stereotools=phasel=1[tmp];[tmp]pan=1c:c0=0.5*c0+0.5*c1. Ancak bunun gerekli olduğunu sanmıyorum.

Daha sonra yeni oluşturulan dosyaya bakarsanız ve dalga formunda düz bir çizgi görürseniz, orijinal dosyanın sol kanalı tam olarak sağdaki ile aynı olur. Eğer sadece çok küçük tepe noktaları varsa (örneğin, -60dB veya daha az civarında) varsa, o zaman aradaki fark muhtemelen sadece artefaktları kodlamaktan kaynaklanır - sadece emin olmak için dinleyin .

Kod kaynakları:


Audacity çıktı dosyasını açamıyor, "dosya hatası bulunamadı": i.imgur.com/hKnYnaI.png
user598527

1
\ Users \ <adınız> \ Desktop \ testfile.wav: örneğin, C: (hesap / yazma için okuyabilir biri anlamına gelir), bir "doğru" yolunu kullanmak zorunda
flolilo

Teşekkürler, şimdi çalışıyor! Dosyanın düz bir dalga biçimi olan Audacity'de nasıl göründüğü: i.imgur.com/mQkBtYz.png
user598527

Rica ederim. İki şey: 1) Dalga biçimi gösterimi için "dalga biçimi (dB)" kullanmanızı öneririm: imgur.com/a/5WcRr 2) Ayarlarda dB aralığını en az -72 olarak değiştirirdim: imgur.com/a/ 7WVxl . O zaman hala bir şey göremiyorsanız (ve daha da önemlisi: duyuyorsanız), o zaman kesinlikle her iki kanalda da aynı mono ize sahip bir stereo dosyadır.
flolilo

2

Yorumlarda belirtildiği gibi, bir stereo dosyası ve bir stereo kayıt arasında temel bir fark vardır .

Hiçbir şey bizi tek bir ses kaynağından beslenen her iki stereo kanalı da içeren bir dosya oluşturmamızı engellemiyor - bu, örneğin CD için yeniden düzenlenmiş eski kayıtlar için Standart.

Bir stereo dosyasının gerçekte sterofonik içerik içerip içermediğine dair bir fikir edinmenin tipik yolu, her iki kanalda da saniyede sıfır geçiş sayısının ikinci dereceden toplamını hesaplamaktır. Bilmiyorum, Audacity veya diğer ücretsiz yazılım araçlarında bu numara varsa.

İnsan gözünün kanal farklılıklarını tespit etmekte oldukça iyi olduğu, bu nedenle kontrol edilecek kayıt sayısının düşük olması durumunda, bunun bir stereofonik olup olmadığına dair bir dalga grafiği (audacity tarafından üretildiği gibi) iyi bir his vermelidir.


Bunu kabul etmiyorum çünkü diğerleri soruyu cevapladı.
user598527

1

Bilgisayarların sıkıcı işleri yapmasına izin vermeyi tercih ediyorum, bu yüzden flolilo'nun cevabından başlayarak şunu bitirdim:

ffmpeg -i is_this_stereo.wav -filter_complex 'pan=mono|c0=0.5*FL+-0.5*FR,silenceremove=start_periods=1' -f null -

Bu, eğer giriş dosyasının kanalları tam kopyalarsa (CD'lerin en az biri için olan), "Çıkış dosyası boş, hiçbir şey kodlanmadı" uyarısını gösterir. Susturucu filtre filtresini , örneğin, silenceremove=start_periods=1:start_threshold=0.02veya bazı gürültülere aldırmamak için rahatlatabilirsiniz start_threshold=-17dB, ancak bu göreceli genlik, kayıt seviyesine göre değil, PCM özelliğine göredir. Bazı CD'lerim için bu değer, ince ancak oldukça sesli stereoları filtreler; diğerleri için asgari düzeyde.

-f null -Bölüm basitçe konsol mesajı yeterli olması durumunda dosya çıktısı, bastırır, ama tabii ki bunu fark dosyası yazmak sağlayabilirsiniz. Bir betiğin içindeki tekliği kontrol etmek için, geldiğim en iyi şey:

out=$(ffmpeg -nostdin -loglevel error -i "$infile" -filter_complex 'pan=mono|c0=0.5*FL+-0.5*FR,silenceremove=start_periods=1:detection=peak' -t 0.00002 -f crc -)
if [ "$out" == 'CRC=0x00000001' ]
then echo "$infile is definitely mono"
fi

Bu komut dosyasında:

  • Zaman sınırı -t 0.00002, farkı tek bir numuneye indirir (standart 44.100 numune / saniye CD içeriği için), bu da stereo dosyalarda algılamayı büyük ölçüde hızlandırır. -frames 1aynı sonuçları verir, sistemimde, ancak bir çerçevenin birden fazla örnek içerdiğinden olması gerektiğinden emin değilim. -fs 1Bir baytın nispeten ötesine geçer.
  • -f crcçıktıyı bir komut dosyasında ele almak daha kolay olan ASCII olarak yazıyor. Bir 16 bit örnek sessizlik gidericiden geçerse, 32 bit CRC'nin başlangıçtaki 1 değerinden değişmesi gerektiğini düşünüyorum. Ayrıca -f md5veya kullanabilirsiniz -f hash.
  • outKabuk -e seçeneğini kullanırsanız, aşağıdaki test yerine, ayrı ayrı atama , betiğin hatalı durmasını sağlar.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.