R adalah platform-silang dan sumber bebas / terbuka.
Muat, dan muat tuneR
dan seewave
pustaka (instal dari pengelola paket jika belum diinstal).
library(tuneR)
library(seewave)
Kemudian, muat file MP3 atau WAV Anda:
w = readMP3("dog-whistle-0.mp3")
w = readWave("dog-whistle-0.wav")
Sekarang, mari kita plot spektrum dan puncaknya:
fpeaks(meanspec(w), nmax=1)
Hasil:
Hasil numerik:
fpeaks(meanspec(w), nmax=1, plot=FALSE)
12.05859
Di atas hanya berfungsi dengan data non-musikal. Ketika Anda menganalisis frekuensi musik, Anda akan menemukan bahwa frekuensi tertinggi akan selalu sekitar 12-20 kHz, tergantung pada instrumen yang terlibat. Namun, frekuensi tertinggi ini tidak akan memberi Anda perkiraan not yang sedang diputar, karena not musik, ketika dimainkan oleh instrumen, akan terdiri dari beberapa frekuensi.
Ini adalah apa yang disebut "timbre" instrumen, dan Anda akan menemukan bahwa A pada 440 Hz oleh seruling akan mencakup komponen frekuensi yang berbeda dibandingkan dengan A yang dimainkan oleh gitar listrik.
Taruhan terbaik Anda adalah menjalankan analisis frekuensi dominan dengan melihat puncak frekuensi di atas jendela waktu geser, dan memeriksa di mana yang tertinggi terjadi.
Tidak ada yang namanya "frekuensi dari waktu ke waktu". Anda hanya dapat memplot frekuensi rata-rata (atau dominan) di atas jendela waktu geser tertentu . Seewave menawarkan beberapa fungsi untuk memilih jendela waktu, tetapi menjadi agak rumit.
Anda bisa menggunakannya
s = specprop(meanspec(w, from=10, to=11))
untuk mendapatkan properti spektrum dari 10 hingga 11 detik dan kemudian menelepon s$centroid
atau s$mean
untuk mendapatkan centroid atau frekuensi rata-rata dari jendela waktu tertentu (meskipun 1 detik cukup besar untuk analisis audio).
Jika file Wave Anda menggunakan pengambilan sampel 44,1 kHz, Anda dapat melakukan downsample untuk mengurangi upaya perhitungan, misalnya menjadi 16 kHz.
w = downsample(w, 16000)
Tetapi ingat bahwa menurut Teorema Nyquist , frekuensi maksimum yang dapat direpresentasikan sekarang adalah 8 kHz.
Anda juga dapat mencari perangkat lunak pendeteksi pitch. Seperti ini , yang membutuhkan MATLAB.
fpeaks
, apakah Anda sadar jika ada fungsi yang memplot grafik frekuensi terhadap waktu?