Soru sorShazam Uygulaması
kaanicyar tarafından 3 yıl önce soruldu

Herkese merhabalar. Shazam uygulamasına benzer bir uygulama geliştiriyorum da örnek bir kod buldum ama anlamakta zorlanıyorum.Bu kodları açıklayabilecek var mı acaba? Kodu genel olarak açıklayayım. Öncelikle audioread ile okuma yapıyorum. Bu kısımda aslında bir çok şarkı ekleyeceğim ve hepsini okuyacağım. Daha sonra herhangi bir tanesinin bir kısmını kesecek(örneğin 2 saniyelik bir ksıım) ve bu kesilen parçayı diğerlerinin içerisinde arayarak hangi şarkı olduğunu tespit etmeye çalışacağım. Aslında kodum şuan çalışıyor büyük kısmını kendim yazdım ancak y'nin dt'nin ve t'nin kısımlarını tam olarak ben yazmadığım için özellikle o kısımları açıklayabilirseniz mutlu olurum.

[y,fs] = audioread('orneksarki_kesilmishali.mp3');
[y2,fs2] = audioread('orneksarkin_tamami.mp3');

y = y(:,1);
y2 = y2(:,1);

dt = 1/fs;
dt2 = 1/fs2;

t = 0:dt:(length(y)*dt)-dt;
t2 = 0:dt2:(length(y2)*dt2)-dt2;

figure(1);
subplot(2,1,1);
plot(t,y); xlabel('Seconds'); ylabel('Amplitude'); %time domain
subplot(2,1,2);
plot(psd(spectrum.periodogram,y,'Fs',fs,'NFFT',length(y)));%frequency domain

[C2,lag2] = xcorr(y,y2);
max(C2)
1 Cevap
sayginer Yönetici tarafından 3 yıl önce cevaplandı

Merhaba,
y'nin ne olduğunu anlamak için audioread fonksiyonunun ne işe yaradığını bilmemiz lazım. https://www.mathworks.com/help/matlab/ref/audioread.html
Görüldüğü üzere y değeri sizin ses sinyalinizin verisini, fs değeri de örnekleme frekansınızı gösteriyor.
dt değişkeni ise örnekleme zamanımızdır. (Dikkat ederseniz örnekleme frekansının tersini almış, frekansın tersi zamanı verir.)