Rabu, 04 April 2018

Pemrosesan SInyal Audio


Konversi Audio ke FFT


path='datalatihh/alif.wav';
[x,fs] = audioread(path);
no=78010;%batasan pixel

nn=size(x,1);
if no< nn
   nn=no;
else
    nn=no;
end   

FFT = fft(x,nn);
outFFT=reshape(FFT,[1,size(FFT,1)*size(FFT,2)]);
plot(x);

Andai kita ambil secuplik / sampling audio ybs datanya adalah sbb:(antara pixel ke 30000 s/d 300010)=10 pixeel audio

samplingAudio=x(30000:30010,:)

samplingAudio =

    0.0587   -0.0587
    0.0601   -0.0601
    0.0797   -0.0797
    0.1053   -0.1053
    0.1205   -0.1205
    0.1296   -0.1296
    0.1529   -0.1529
    0.2001   -0.2001
    0.2499   -0.2499
    0.2728   -0.2728
    0.2801   -0.2801

>> plot(samplingAudio)



Lalu proses FFT nya adalah sbb:

FFT=fft(sampling)

FFT =

   1.7097 + 0.0000i  -1.7097 + 0.0000i
  -0.0403 + 0.5043i   0.0403 - 0.5043i
  -0.1796 + 0.2140i   0.1796 - 0.2140i
  -0.0956 + 0.0925i   0.0956 - 0.0925i
  -0.1056 + 0.0545i   0.1056 - 0.0545i
  -0.1107 + 0.0176i   0.1107 - 0.0176i
  -0.1107 - 0.0176i   0.1107 + 0.0176i
  -0.1056 - 0.0545i   0.1056 + 0.0545i
  -0.0956 - 0.0925i   0.0956 + 0.0925i
  -0.1796 - 0.2140i   0.1796 + 0.2140i
  -0.0403 - 0.5043i   0.0403 + 0.5043i

plot(FFT)



sedang untuk FFT nilai Single  hasilnya sbb:

FFT =

   1.7097 + 0.0000i   1.7097 + 0.0000i
  -0.0403 + 0.5043i  -0.0403 + 0.5043i
  -0.1796 + 0.2140i  -0.1796 + 0.2140i
  -0.0956 + 0.0925i  -0.0956 + 0.0925i
  -0.1056 + 0.0545i  -0.1056 + 0.0545i
  -0.1107 + 0.0176i  -0.1107 + 0.0176i
  -0.1107 - 0.0176i  -0.1107 - 0.0176i
  -0.1056 - 0.0545i  -0.1056 - 0.0545i
  -0.0956 - 0.0925i  -0.0956 - 0.0925i
  -0.1796 - 0.2140i  -0.1796 - 0.2140i
  -0.0403 - 0.5043i  -0.0403 - 0.5043i

%yaitu hanya melihat satu sisi amplitudo saja


Selanjutnya adalah proses Pembuatan Prediksi data FFT yang akan datang dari gabungan beberapa data FFT sejenis untuk dijadikan rujukan kedekatan dengan sinyal FFT audio uji.

dalam hal ini kita membuat perhitungan statistiknya menggunakan metode Hidden Markov Model

Misalkan data Uji dalah data sbb:


X=rand(3,10); %menggenerate bilangan random sebanyak 3 baris dan 10 kolom
X =

    0.8147    0.9134    0.2785    0.9649    0.9572    0.1419    0.7922    0.0357    0.6787    0.3922
    0.9058    0.6324    0.5469    0.1576    0.4854    0.4218    0.9595    0.8491    0.7577    0.6555
    0.1270    0.0975    0.9575    0.9706    0.8003    0.9157    0.6557    0.9340    0.7431    0.1712

Lalu dicari nilai total dari setiap barisnya

S=sum(X)
S =
    1.8475    1.6433    1.7829    2.0931    2.2428    1.4794    2.4074    1.8188    2.1796    1.2189


Lalu bagikan setiapd ata matrix dengan data total di atas:
H=X./S

H =

    0.4410    0.5558    0.1562    0.4610    0.4268    0.0959    0.3291    0.0196    0.3114    0.3218
    0.4903    0.3848    0.3067    0.0753    0.2164    0.2851    0.3986    0.4669    0.3476    0.5378
    0.0687    0.0594    0.5371    0.4637    0.3568    0.6190    0.2724    0.5135    0.3409    0.1404


ATau bisa juga menggunakan rumus sbb:

H2=bsxfun(@rdivide, double(X), double(S))

H2 =

    0.4410    0.5558    0.1562    0.4610    0.4268    0.0959    0.3291    0.0196    0.3114    0.3218
    0.4903    0.3848    0.3067    0.0753    0.2164    0.2851    0.3986    0.4669    0.3476    0.5378
    0.0687    0.0594    0.5371    0.4637    0.3568    0.6190    0.2724    0.5135    0.3409    0.1404

Selanjutnya barulah ke tahap perhitungan jarak/mencari selisih jarak antara data latih di atas dengan data UJi dengan menggunakan rumus jarak diantaranya ecludean distance

Misalkan sinyalFFT Uji adalah sebagai berikut datanya:
Uji =

    0.0687    0.0594    0.5371    0.4637    0.3568    0.6190    0.2724    0.5135    0.3409    0.1404



EccHmm(1)= sqrt(sum((H(1,:)-Uji).^2));
EccHmm(2)= sqrt(sum((H(2,:)-Uji).^2));
EccHmm(3)= sqrt(sum((H(3,:)-Uji).^2));

EccHmm =

    1.0438    0.8915         0

            
EcludeanDIstanceValue =min(EccHmm )  =0

Kesimpulan=Dalam hal ini sinyalUji sangat dekat dengan datalatih ke-3 dari data Uji.




Tidak ada komentar:

Posting Komentar