R là đa nền tảng và nguồn mở / miễn phí.
Tải nó và tải tuneR
và seewave
thư viện (cài đặt chúng từ trình quản lý gói nếu chưa được cài đặt).
library(tuneR)
library(seewave)
Sau đó, tải tệp MP3 hoặc WAV của bạn:
w = readMP3("dog-whistle-0.mp3")
w = readWave("dog-whistle-0.wav")
Bây giờ, hãy vẽ biểu đồ phổ và cực đại của nó:
fpeaks(meanspec(w), nmax=1)
Kết quả:

Kết quả số:
fpeaks(meanspec(w), nmax=1, plot=FALSE)
12.05859
Ở trên chỉ hoạt động với dữ liệu phi âm nhạc. Khi bạn phân tích tần số âm nhạc, bạn sẽ thấy rằng tần số cao nhất sẽ luôn ở khoảng 12-20 kHz, tùy thuộc vào (các) nhạc cụ có liên quan. Tuy nhiên, tần số cao nhất này sẽ không cung cấp cho bạn ước tính về nốt nhạc đang được phát, vì một nốt nhạc, khi được chơi bởi một nhạc cụ, sẽ bao gồm nhiều tần số.
Đây được gọi là "âm sắc" của một nhạc cụ và bạn sẽ thấy rằng một âm A ở 440 Hz bằng sáo sẽ bao gồm các thành phần tần số khác nhau so với A được chơi bởi guitar điện.
Đặt cược tốt nhất của bạn là chạy một phân tích tần số chi phối bằng cách nhìn vào các đỉnh tần số trên các cửa sổ thời gian trượt và kiểm tra xem nơi nào cao nhất xảy ra.
Không có thứ gọi là "tần suất theo thời gian" mặc dù. Bạn chỉ có thể vẽ tần số trung bình (hoặc chiếm ưu thế) trên các cửa sổ thời gian trượt nhất định . Seewave cung cấp khá nhiều chức năng liên quan đến việc chọn cửa sổ thời gian, nhưng nó khá phức tạp.
Bạn đã có thể sử dụng
s = specprop(meanspec(w, from=10, to=11))
để có được các thuộc tính phổ từ 10 đến 11 giây và sau đó gọi s$centroid
hoặc s$mean
để lấy trung tâm hoặc tần số trung bình của cửa sổ thời gian cụ thể đó (mặc dù 1 giây là khá lớn để phân tích âm thanh).
Nếu tệp Wave của bạn sử dụng lấy mẫu 44,1 kHz, bạn có thể lấy mẫu xuống để giảm nỗ lực tính toán, ví dụ như xuống 16 kHz.
w = downsample(w, 16000)
Nhưng hãy nhớ rằng theo Định lý Nyquist , tần số tối đa có thể được biểu diễn bây giờ là 8 kHz.
Bạn cũng có thể tìm kiếm một phần mềm phát hiện cao độ. Giống như cái này , đòi hỏi MATLAB mặc dù.
fpeaks
, bạn có biết nếu có một hàm vẽ đồ thị tần số theo thời gian?