Zephyrnet Logosu

Farklı Müzik Türü Parçalarının Sıfır Geçiş Oranlarının Analizi

Tarih:

Bu makale, Veri Bilimi Blogathon.

Bu yazıda, farklı müzik türü parçalarının Sıfır geçiş oranlarını (ZCR'ler) analiz edeceğiz. Bu yazı Valerio Valerdo'dan ilham almıştır. . onu incelemenizi şiddetle tavsiye ederim Youtube ses için ML/DL alanındaki olağanüstü çalışması için.

Kullanılan aletler

  • Python
  • terazi (librosa.feature.zero_crossing)
  • 30 farklı müzik türünün (Klasik, Blues, Reggae, Rock, Jazz, Pop, Hip-hop, Country, Disco ve Metal) her birinden 10 saniyelik bir ses klibi GTZAN veri kümesi

Giriş

Sıfır Geçişi: Sıfır geçiş, matematiksel bir fonksiyonun işareti değişir (örn. pozitiften negatife). Bir ile temsil edilir eksenin kesişimi (sıfır değeri) fonksiyonun grafiğinde. 

Sıfır Geçiş Oranları
Zaman içindeki gerilimi temsil eden bir dalga biçiminin çizgi grafiğinde sıfır geçiş

 

Sıfır Geçiş Oranı: Sıfır geçiş oranı (ZCR), bir sinyalin pozitiften sıfıra negatife veya negatiften sıfıra pozitife geçiş hızıdır. Değeri her ikisinde de yaygın olarak kullanılmıştır. Konuşma tanıma ve müzik bilgisi alma vurmalı sesleri sınıflandırmak için.

ZCR şu şekilde tanımlanır:

Sıfır Geçiş Oranları | formül

Sıfır geçiş oranı, monofonik ton sinyalleri için temel bir perde algılama algoritması olarak kullanılabilir. Bir ses segmentinde insan konuşmasının bulunup bulunmadığını belirleyen ses etkinliği algılama (VAD) da sıfır geçiş oranlarını kullanır.

Şimdi librosa kütüphanesini kullanarak ona daha yakından bakalım. Başlamak için, gerekli tüm kitaplıkları içe aktaracağız ve librosa yardımıyla farklı müzik türlerinden ses dosyalarını yükleyeceğiz.

Librosa Kullanarak Kısa Bir Analiz

#Gerekli tüm kitaplıkları içe aktararak matplotlib.pyplot'u plt olarak içe aktar numpy'yi np olarak içe aktar librosa'yı içe aktar librosa.display'i içe aktar IPython.display'i ipd olarak içe aktar %matplotlib satır içi
#Ses dosyalarının yolunu belirtme classic_music_file = "/content/drive/MyDrive/trytheseaudios/classical.00000.wav" blues_music_file = "/content/drive/MyDrive/trytheseaudios/blues.00000.wav" reggae_music_file = "/content/drive /MyDrive/trytheseaudios/reggae.00000.wav" rock_music_file = "/content/drive/MyDrive/trytheseaudios/rock.00000.wav" jazz_music_file = "/content/drive/MyDrive/trytheseaudios/jazz.00000.wav" country_music_file =" /content/drive/MyDrive/trytheseaudios/country.00000.wav" disco_music_file = "/content/drive/MyDrive/trytheseaudios/disco.00000.wav" hiphop_music_file = "/content/drive/MyDrive/trytheseaudios/hiphop.00000.wav " metal_music_file = "/content/drive/MyDrive/trytheseaudios/metal.00000.wav" pop_music_file = "/content/drive/MyDrive/trytheseaudios/pop.00000.wav"
# librosa classic ile ses dosyalarını yükle, sr = librosa.load(classical_music_file, süre=30) blues, _ = librosa.load(blues_music_file,duration=30) reggae, _ = librosa.load(reggae_music_file, süre=30) rock, _ = librosa.load(rock_music_file, süre=30) caz, _ = librosa.load(jazz_music_file, süre=30) ülke,_ = librosa.load(country_music_file, süre=30) disko, _ = librosa.load(disco_music_file, süre=30) hiphop, _ = librosa.load(hiphop_music_file, süre=30) metal, _ = librosa.load(metal_music_file, süre=30) pop, _ = librosa.load(pop_music_file, süre=30)

Bunu takiben, en düşük ve en yüksek değerleri değerlendirip karşılaştıracağız. anlık ZCR değerleriyanı sıra en düşük ve en yüksek ortalama ZCR değerleri çeşitli müzik türü örnekleri.

#ZCR min([librosa.feature.zero_crossing_rate(classical).min(), librosa.feature.zero_crossing_rate(blues).min(), librosa.feature.zero_crossing_rate(reggae)'nin en düşük anlık değerine sahip müzik türünü belirleme. min(), librosa.feature.zero_crossing_rate(rock).min(), librosa.feature.zero_crossing_rate(jazz).min(), librosa.feature.zero_crossing_rate(country).min(), librosa.feature.zero_crossing_rate(disco ).min(), librosa.feature.zero_crossing_rate(hiphop).min(), librosa.feature.zero_crossing_rate(metal).min(), librosa.feature.zero_crossing_rate(pop).min()])

Çıktı: 0.00585 —> bu, Caz müzik türü parçası için!

#ZCR max([librosa.feature.zero_crossing_rate(classical).max()), librosa.feature.zero_crossing_rate(blues).max(), librosa.feature.zero_crossing_rate(reggae) anlık değeri en yüksek olan müzik türünü belirleme. max(), librosa.feature.zero_crossing_rate(rock).max(), librosa.feature.zero_crossing_rate(jazz).max(), librosa.feature.zero_crossing_rate(country).max(), librosa.feature.zero_crossing_rate(disco ).max(), librosa.feature.zero_crossing_rate(hiphop).max(), librosa.feature.zero_crossing_rate(metal).max(), librosa.feature.zero_crossing_rate(pop).max()])

Çıktı: 0.67675 —-> pop müzik türü parça!

#ZCR min([librosa.feature.zero_crossing_rate(classical).mean(), librosa.feature.zero_crossing_rate(blues).mean(), librosa.feature.zero_crossing_rate(reggae)'nin EN DÜŞÜK ORTALAMA değerine sahip müzik türünü belirleme). ortalama(), librosa.feature.zero_crossing_rate(rock).mean(), librosa.feature.zero_crossing_rate(jazz).mean(), librosa.feature.zero_crossing_rate(country).mean(), librosa.feature.zero_crossing_rate(disco ).mean(), librosa.feature.zero_crossing_rate(hiphop).mean(), librosa.feature.zero_crossing_rate(metal).mean(), librosa.feature.zero_crossing_rate(pop).mean()])

Çıktı: 0.07846 —> Caz müziği türü parçası!

#ZCR max([librosa.feature.zero_crossing_rate(classical).mean(), librosa.feature.zero_crossing_rate(blues).mean(), librosa.feature.zero_crossing_rate(reggae)'nin EN YÜKSEK ORTALAMA değerine sahip müzik türünü belirleme. ortalama(), librosa.feature.zero_crossing_rate(rock).mean(), librosa.feature.zero_crossing_rate(jazz).mean(), librosa.feature.zero_crossing_rate(country).mean(), librosa.feature.zero_crossing_rate(disco ).mean(), librosa.feature.zero_crossing_rate(hiphop).mean(), librosa.feature.zero_crossing_rate(metal).mean(), librosa.feature.zero_crossing_rate(pop).mean()])

Çıktı: 0.18307 —> Metal müzik türü parça!

Ayrıca, daha ileri araştırmalarda, klasik tarzdaki ses örnek izinin düşük bir ZCR'ye sahip olduğu bulundu.

print(f"Klasik Tür şarkısı için Minimum Anlık ZCR:{librosa.feature.zero_crossing_rate(classical).min()}, Klasik Tür şarkısı için Maksimum Anlık ZCR:{librosa.feature.zero_crossing_rate(classical).max()}, Klasik Tür şarkısı için ortalama ZCR: {librosa.feature.zero_crossing_rate(classical).mean()}")

Çıktı: Klasik Tür şarkı için Minimum Anlık ZCR:0.02685, Klasik Tür şarkı için Maksimum Anlık ZCR:0.1767, Klasik Tür şarkı için Ortalama ZCR: 0.0982

#Pop müzik türü parça baskısı için Minimum anlık, Maksimum anlık ve ortalama ZCR'nin belirlenmesi(f"Pop Türü şarkı için Minimum Anlık ZCR:{librosa.feature.zero_crossing_rate(pop).min()}, Pop Türü şarkı için Maksimum Anlık ZCR: {librosa.feature.zero_crossing_rate(pop).max()}, Pop Tür şarkısı için Ortalama ZCR: {librosa.feature.zero_crossing_rate(pop).mean()}")

Çıktı: Pop Türlü şarkı için Minimum Anlık ZCR:0.00683, Pop Türlü şarkı için Maksimum Anlık ZCR:0.6767, Pop Türlü şarkı için Ortalama ZCR: 0.12676

Gözlem: Sonuçlara göre, caz müzik türü parçası en düşük anlık ve ortalama ZCR'ye sahip. Daha fazla analiz, klasik müzik türündeki şarkının bile son derece düşük ZCR değerlerine sahip olduğunu ortaya çıkardı. Sonuç olarak, caz müziği türündeki şarkıların en düşük ZCR değerine sahip olduğunu genelleyemeyiz ve söyleyemeyiz, çünkü gözlem şarkı kompozisyonuna bağlı olarak değişir. Ayrıca, metal ve pop müzik ses örnek parçaları en yüksek ortalama ZCR'ye sahiptir.

Görselleştirme yoluyla gizemden arındırma

Şimdi görseller yardımıyla biraz daha aydınlatalım. Bu bağlamda, her müzik türü parçası için sıfır geçiş oranını çıkarmak için önce Librosa'yı kullanacağız ve ardından her müzik türü için normalleştirilmiş ZCR'yi, ardından her müzik türü için gerçek (normalleştirilmemiş) ZCR'yi çizeceğiz.

#Çerçeve boyutunu ve atlama uzunluğunu belirleme
FRAME_SIZE = 1024 HOP_LENGTH = 512
#Librosa zcr_classical = librosa.feature.zero_crossing_rate(classical, frame_length=FRAME_SIZE, hop_length=HOP_LENGTH)[0] zcr_blues = librosa.feature.zero_crossing_rate,HOP_uzunluk,HOP uzunluk,FRAM_E uzunluğu kullanılarak her müzik türü şarkısı için sıfır geçiş oranı çıkarma )[0] zcr_reggae = librosa.feature.zero_crossing_rate(reggae, frame_length=FRAME_SIZE, hop_length=HOP_LENGTH)[0] zcr_rock = librosa.feature.zero_crossing_rate(rock, frame_length=THFRAME_HOP_, hop_) feature.zero_crossing_rate(jazz, frame_length=FRAME_SIZE, hop_length=HOP_LENGTH)[0] zcr_country = librosa.feature.zero_crossing_rate(country, frame_length=FRAME_SIZE, hop_length=HOP_LENGTH)[0] zcr_saature_fe. FRAME_SIZE, hop_length=HOP_LENGTH)[0] zcr_hiphop = librosa.feature.zero_crossing_rate(hiphop, frame_length=FRAME_SIZE, hop_length=HOP_LENGTH)[0] zcr_metal = librosa.feature.zero_crossing_ESIZE=metal , hop_length=HOP_LENGTH)[0] zcr_pop = librosa.feature.zero_crossing_rate(pop, frame_length=FRAME_SIZE, hop_length=HOP_LENGTH)[0]
çerçeveler = aralık(len(zcr_classical)) t = librosa.frames_to_time(kareler, hop_length=HOP_LENGTH)
#Farklı müzik türü şarkıların normalleştirilmiş Sıfır geçiş oranını (ZCR) görselleştirme plt.figure(figsize=(20, 20))
ax = plt.subplot(5, 2, 1) librosa.display.waveplot(klasik, alpha=0.5) plt.plot(t, zcr_classical, color="b") plt.ylim((-1, 1)) plt .title("Klasik Müzik Türü şarkısı")
plt.subplot(5, 2, 2) librosa.display.waveplot(blues, alpha=0.5) plt.plot(t, zcr_blues, color="g") plt.ylim((-1, 1)) plt.title ("Blues Müzik Türü şarkısı")
plt.subplot(5, 2, 3) librosa.display.waveplot(reggae, alpha=0.5) plt.plot(t, zcr_reggae, color="k") plt.ylim((-1, 1)) plt.title ("Reggae Müzik Türü Şarkısı")
plt.subplot(5, 2, 4) librosa.display.waveplot(rock, alpha=0.5) plt.plot(t, zcr_rock, color="#E9967A") plt.ylim((-1, 1)) plt. title("Rock Müzik Türü Şarkısı")
plt.subplot(5, 2, 5) librosa.display.waveplot(jazz, alpha=0.5) plt.plot(t, zcr_jazz, color="m") plt.ylim((-1, 1)) plt.title ("Caz Müziği Türü şarkısı")
plt.subplot(5, 2, 6) librosa.display.waveplot(ülke, alpha=0.5) plt.plot(t, zcr_country, color="y") plt.ylim((-1, 1)) plt.title ("Ülke Müziği Türü şarkısı")
plt.subplot(5, 2, 7) librosa.display.waveplot(disco, alpha=0.5) plt.plot(t, zcr_disco, color="r") plt.ylim((-1, 1)) plt.title ("Disko Müzik Türü şarkısı")
plt.subplot(5, 2, 8) librosa.display.waveplot(hiphop, alpha=0.5) plt.plot(t, zcr_hiphop, color="#7FFF00") plt.ylim((-1, 1)) plt. başlık("Hiphop Müzik Türü şarkısı")
plt.subplot(5, 2, 9) librosa.display.waveplot(metal, alpha=0.5) plt.plot(t, zcr_metal, color="#FFB90F") plt.ylim((-1, 1)) plt. title("Metal Müzik Türü Şarkısı")
plt.subplot(5, 2, 10) librosa.display.waveplot(pop, alpha=0.5) plt.plot(t, zcr_pop, color="#458B00") plt.ylim((-1, 1)) plt. title("Pop Müzik Türü şarkı") plt.subplots_adjust(hspace = 0.75)
Sıfır Geçiş Oranları
Çeşitli müzik türü parçalarının sıfır geçiş oranlarını gösteren Waveplot'lar

#Visualizing NORMALIZE Farklı müzik türü parçalarının sıfır geçiş oranları

plt.figure(figsize=(25, 25)) plt.plot(t, zcr_classical, color="b") plt.plot(t, zcr_blues, color="g") plt.plot(t, zcr_reggae, color= "k") plt.plot(t, zcr_rock, color="#E9967A") plt.plot(t, zcr_jazz, color="m") plt.plot(t, zcr_country, color="y") plt.plot (t, zcr_disco, color="r") plt.plot(t, zcr_hiphop, color="#7FFF00") plt.plot(t, zcr_metal, color="#FFB90F") plt.plot(t, zcr_pop, color ="#458B00") plt.ylim(0, 1)
Sıfır Geçiş Oranları
Farklı müzik türü parçalarının NORMALİZE Sıfır geçiş oranlarını gösteren grafik

#Visualizing ACTUAL (NORMALİZE OLMAYAN) Farklı müzik türü parçalarının sıfır geçiş oranı

plt.figure(figsize=(25, 25)) plt.plot(t, zcr_classical*FRAME_SIZE, color="b") plt.plot(t, zcr_blues*FRAME_SIZE, color="g") plt.plot(t, zcr_reggae*FRAME_SIZE, color="k") plt.plot(t, zcr_rock*FRAME_SIZE, color="#E9967A") plt.plot(t, zcr_jazz*FRAME_SIZE, color="m") plt.plot(t, zcr_country *FRAME_SIZE, color="y") plt.plot(t, zcr_disco*FRAME_SIZE, color="r") plt.plot(t, zcr_hiphop*FRAME_SIZE, color="#7FFF00") plt.plot(t, zcr_metal* FRAME_SIZE, color="#FFB90F") plt.plot(t, zcr_pop*FRAME_SIZE, color="#458B00") plt.ylim(0, 600)
Sıfır Geçiş Oranları
Farklı müzik türü parçalarının GERÇEK (NORMALİZE OLMAYAN) sıfır geçiş oranlarını gösteren grafik

Sonuç

Matematiksel ve görsel olarak incelendiğinde caz ve klasik müzik türündeki şarkıların ZCR değerlerinin düşük olduğunu söyleyebiliriz. Pop ve Metal müzik türündeki şarkılar yüksek ZCR'ye sahiptir. Ancak, küçük örneklem büyüklüğüne dayanarak bu bulguları tüm grup için tahmin edemeyiz. Öte yandan, önceki analiz bize farklı müzik türleri hakkında kısa bir özet, bir sezgi biçimi sunabilir.

Okuduğunuz için teşekkürler. Herhangi bir sorunuz veya endişeniz varsa, lütfen bunları aşağıdaki yorumlar bölümünde bırakın. Mutlu Öğrenme!

Bizimle ilgili daha fazla makale okuyun blog.

GitHub deposuna bağlantı: Buraya Tıkla!

Referanslar: 1. https://www.youtube.com/watch?v=EycaSbIRx-0&t=1352s

2. https://en.wikipedia.org/wiki/Zero_crossing

3. https://en.wikipedia.org/wiki/Zero-crossing_rate

Bu makalede gösterilen medya Analytics Vidhya'ya ait değildir ve Yazarın takdirine bağlı olarak kullanılır. 

Kaynak: https://www.analyticsvidhya.com/blog/2022/01/analysis-of-zero-crossing-rates-of- Different-music-genre-tracks/

spot_img

En Son İstihbarat

spot_img

Bizimle sohbet

Merhaba! Size nasıl yardım edebilirim?