merhabalar.matlab üzerinden shazam uygulamasına benzer bir uygulama yapmaya çalışıyorum.uygulama şu şekilde olacak elimizde 10 tane ses örneği olduğunu varsayalım.bunları matlaba yüklüyoruz ardından bu seslerin herhangi birinin birebir aynısını yükleyerek en son yüklenen sinyalin öncekilerden hangisiyle eşleştiğini bulmaya çalışıyoruz.ben xcorr kullandım sinyalleri gözlemledim ancak bu gözlemlediklerim üzerinde hangisinin birebir aynısı olduğunu çıktı olarak vermesini istiyorum.ne önerirsiniz yardımcı olabilir misiniz?örnek olarak kodumu yazdım çıktıları da ekliyorum xcorr dan başka bir fonksiyon kullanmamı mı önerirsiniz yoksa buradan nasıl ilerleyebilirim yardımcı olursanız çok mutlu olurum.
[y,fs] = audioread('deneme.mp3'); [y2,fs2] = audioread('o1.mp3'); [y3,fs3] = audioread('o2.mp3'); [y4,fs4] = audioread('o3.wav'); y = y(:,1); y2 = y2(:,1); y3 = y3(:,1); y4 = y4(:,1); dt = 1/fs; dt2 = 1/fs2; dt3 = 1/fs3; dt4 = 1/fs4; t = 0:dt:(length(y)*dt)-dt; t2 = 0:dt2:(length(y2)*dt2)-dt2; t3 = 0:dt3:(length(y3)*dt3)-dt3; t4 = 0:dt4:(length(y4)*dt4)-dt4; 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 [C1,lag1] = xcorr(y,y2); C1_new = C1./max(abs(C1(:))); [C2,lag2] = xcorr(y,y3); C2_new = C2./max(abs(C2(:))); [C3,lag3] = xcorr(y,y4); C3_new = C3./max(abs(C3(:))); figure(2); subplot(3,1,1); plot(lag1/fs2,C1_new,'k'); subplot(3,1,2); plot(lag2/fs3,C2_new,'k'); subplot(3,1,3); plot(lag3/fs4,C3_new,'k');
Merhaba,
Bu tarz uygulamalar için findsignal adında bir fonksiyon varmış. Belki aradığınız şey olabilir:
https://it.mathworks.com/help/signal/ref/findsignal.html
Ayrıca:
bu fonksiyonu denedim ancak işlem süresi çok uzun sürüyor hatta sonuna kadar gelemeden kapatmak zorunda kaldım.acaba findsignal fonksiyonuna sinyallerimi yanlış bir şekilde mi gönderdim emin değilim.
İsterseniz aşağıdaki bağlantıdaki örnekleri inceleyin fonksiyonu daha iyi anlarsınız. Duruma göre de sinyalinizi kısaltarak belki yine deneyebilirsiniz. Arama işleminin uzun sürebilir diye düşünüyorum.