R , platformlar arası ve serbest / açık kaynaktır.
Yükleyin tuneR
ve seewave
kitaplıkları yükleyin (henüz yüklenmediyse paket yöneticisinden yükleyin).
library(tuneR)
library(seewave)
Ardından, MP3 veya WAV dosyanızı yükleyin:
w = readMP3("dog-whistle-0.mp3")
w = readWave("dog-whistle-0.wav")
Şimdi, spektrumu ve zirvelerini çizelim:
fpeaks(meanspec(w), nmax=1)
Sonuç:
Sayısal sonuç:
fpeaks(meanspec(w), nmax=1, plot=FALSE)
12.05859
Yukarıdaki sadece müzikal olmayan verilerle çalışır. Müzik frekanslarını analiz ettiğinizde, en yüksek frekansların ilgili enstrümanlara bağlı olarak her zaman 12-20 kHz civarında olacağını göreceksiniz. Bununla birlikte, bu en yüksek frekans size çalınan notanın bir tahminini vermeyecektir, çünkü bir enstrüman tarafından çalındığında bir nota birden fazla frekanstan oluşacaktır.
Bu, bir enstrümanın "tınısı" dır ve bir flütle 440 Hz'deki A'nın, bir elektro gitarın çaldığı A ile karşılaştırıldığında farklı frekans bileşenleri içerdiğini göreceksiniz.
En iyi seçeneğiniz, kayan zaman pencerelerindeki frekans zirvelerine bakarak baskın bir frekans analizi yapmak ve en yüksek olanın nerede olduğunu kontrol etmektir.
Yine de "zaman içindeki frekans" diye bir şey yoktur. Ortalama (veya baskın) frekansı yalnızca belirli kayan zaman aralıklarına çizebilirsiniz . Seewave zaman pencerelerini seçmekle ilgili birkaç işlev sunar, ancak oldukça karmaşıklaşır.
Kullanabilirsin
s = specprop(meanspec(w, from=10, to=11))
spektrum özelliklerini 10 ila 11 saniye arasında almak ve daha sonra o zaman penceresinin merkez veya ortalama frekanslarını çağırmak s$centroid
veya s$mean
almak için (ses analizi için 1 saniye oldukça büyük olmasına rağmen).
Wave dosyanız 44,1 kHz örnekleme kullanıyorsa, hesaplama çabasını azaltmak için örneğin 16 kHz'e indirmek için altörnekleyebilirsiniz.
w = downsample(w, 16000)
Ancak, Nyquist Teoremine göre , şimdi temsil edilebilecek maksimum frekansın 8 kHz olduğunu unutmayın.
Ayrıca bir perde algılama yazılımı da arayabilirsiniz. Bu gibi , ama MATLAB gerektirir.
fpeaks
frekans grafiğini zamana karşı çizen bir işlev olup olmadığını biliyor musunuz?