% İlk Giriş Wav Dosyasının Alınması fn=input('\nWav dosyası ismi girin : ','s'); [x,Fs]=wavread(fn); % wav dosyası okunuyor % x:giriş fs:frekans x=x.'; fprintf('Frekans : %g\n',Fs); %---------------------------------------------------------------- % Zero Crossing Rate - Sınır Kesit Oranı M = length(x) - 1; x1 = x(1:end-1); x2 = x(2:end); xp = x1 .* x2; I = (xp < 0); zc = sum(I) / M; fprintf('Zero Crossing Rate : %g\n',zc); if(zc>0.07) fprintf('ZCR ye göre İnsan Sesi Var(Voice)\n'); else fprintf('ZCR ye göre İnsan Sesi Yok(Unvoice)\n'); end %---------------------------------------------------------------- % Shortime-Energy - Kısa Süreli Enerji Hesabı N=length(x); s=cos(2*pi*N/N-1*[0:N-1]'); h=0.54-0.46*s; E=x*h.^2; fprintf('Short-Time Energy : %g\n',E); if E>3 fprintf('STE ye göre İnsan Sesi Var(Voice)\n'); else fprintf('STE ye göre İnsan Sesi Yok(Unvoice)\n'); end %---------------------------------------------------------------- % Giriş Sesi, Zero Crossing Rate ve Short-time Energy Grafikleri t=(0:length(x)-1)/Fs; subplot(3,1,1); plot(t,x); title('Kontrol Edilecek Olan Ses Dalgasının Genlik-Zaman Grafiği') legend('Dalga Şekli'); xlabel('Zaman (s)'); ylabel('Genlik'); subplot(3,1,2); plot(t,zc); title('Zero Crossing Rate Grafiği'); legend('ZCR'); xlabel('Zaman (s)'); subplot(3,1,3); plot(t,E); title('Short-time Energy Grafiği'); legend('STE'); xlabel('Zaman (s)');
10 Haziran 2010 Perşembe
MATLAB ile Voice/Unvoice
Bir arkadaşa yardım için basitçe hazırladığım matlab programı. Wav uzantılı sesi alarak 2 tür işlemden geçiriyor ve Ses'te konuşma olup olmadığını tespit ediyor.Bu 2 yöntem Zero Crossing Rate ve Short-Time Energy. Bu konularla ilgili internette pek çok kaynak bulunmakta. Matlab ile amatörce geliştirdiğim kod ise şöyle:
Kaydol:
Kayıtlar (Atom)