0 like 0 dislike
1 view
in Matlab by anonymous Bilge (165k points)
matlap ses (harf) karşılaştırma

1 Answer

0 like 0 dislike
by anonymous Bilge (165k points)

  % KAYDEDİLEN SESLİ HARFLARİN TANINMASI
  clc
  clear all;
  fs=44000; % Örnekleme frekansı
  filename='sestest3.wav'
  ahRecorder = audiorecorder(fs,16,1)
  recordblocking(ahRecorder,2)
  play(ahRecorder)
  y=getaudiodata(ahRecorder)
  plot(y)
  %sound(y,fs)
  audiowrite(filename,y,fs)
  % SES DOSYASINI FİLTRELİYORUZ
  [speech,fs]=audioread('sestest3.wav');
  sure_ms=100; % 100 milisaniyelik parçalara bölüyoruz.
    enerji_esik=1; % Enerjisi uygun olanlar 1 olacak.
    s_s=0; % Ses sayısı
  ses_par=sure_ms*fs/1000; % 100ms için 4400 ornek olacak
  speech2=speech(1:(length(speech))-mod(length(speech),ses_par),1);
  sesler=reshape(speech2,ses_par,length(speech2)/ses_par); % 2sn/100ms=>20 ses
  enegies=sqrt(sum(sesler.*sesler))';
vuv=enegies>enerji_esik % Eşik değerlerini hesapladık, 1-0 dizisi elde ettik.
ses_baslangici=0;
% Volume 2 Eşik değeri yüksek olanları seçiyoruz.
for j=1:length(enegies);
if((vuv(j)==0)&& (vuv(j+1)==1)) % 0’dan sonra 1 geliyorsa kayda başlıyoruz.
ses_baslangici=j+1;
disp(ses_baslangici);
break;
end
end
disp('KAYIT')
q=ses_baslangici+1;
w=q+1;
HARF = sesler(:,[q,w,w+1]); % 7. ve 8. sutunları alıyoruz
HARF=HARF(:); % iki sutunu tek sutuna indirdik.(1. altına ekledik.)
size(HARF);
audiowrite('harftest3.wav',HARF,fs);
% Autoregresif katsayılarını elde edip, euclid uzaklığını hesaplıyoruz.
filename1a='harf1a.wav';
filename2e='harf2e.wav';
filename3o='harf3o.wav';
filenametest='harftest.wav';
[y1,fs]=audioread(filename1a);
[y2,fs]=audioread(filename2e);
[y3,fs]=audioread(filename3o);
[y4,fs]=audioread(filenametest);
ya=y1(1:12000,:);
ye=y2(1:12000,:);
yo=y3(1:12000,:);
ytest=y4(1:12000,:);

wa=aryule(ya,11);
wa=wa(:,2:11);
we=aryule(ye,11);
we=we(:,2:11);
wo=aryule(yo,11);
wo=wo(:,2:11);
wtest=aryule(ytest,11);
wtest=wtest(:,2:11);
a=mean(wa);
e=mean(we);
o=mean(wo);
test=mean(wtest);
norma=norm(test-a)
norme=norm(test-e)
normo=norm(test-o)
v=[norma norme normo]
m=min(v)
if m==norma
disp('A sesi ile benzerdir.')
elseif m==norme
disp('E Sesi ile benzerdir.')
elseif m==normo
disp('O sesi ile benzerdir.')
else
disp('Benzer ses bulunamadı')
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
subplot(2,2,1)
plot(y1)
title('A Sesi')
subplot(2,2,2)
plot(y2)
title('E Sesi')
subplot(2,2,3)
plot(y3)
title('O Sesi')
subplot(2,2,4)
plot(y4)
title('Test Sesi')
...