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