pengolahan sinyal digital menggunakan komponen dsp fft di delphi 7
DESCRIPTION
Pengolahan sinyal dengan Delphi 7TRANSCRIPT
Pengolahan Sinyal Digital menggunakan komponendsp FFT di delphi 7DIPOSKAN OLEH ADHIT8 ON KAMIS, 22 APRIL 2010
Pengenalan :
Proses pengolahan sinyal digital dilakukan setelah proses pembacaan file wav dan proses
pengolahan sebelumnya untuk mendapatkan data yang benar-benar bebas dari noise yang
mencerminkan data aktual karakteristik dari suara seseorang tersebut. Tujuan dari
pengolahan sinyal digital adalah untuk mencapai feature extraction, sebuah proses yang
mengkonversi sinyal suara menjadi beberapa parameter yang dapat diambil untuk proses
selanjutnya yaitu identifikasi pola suara. Feature extraction merupakan proses mengekstraksi
data hasil akuisisi sehingga dihasilkan data yang berdimensi lebih kecil, yang nantinya
digunakan untuk merepresentasikan tiap-tiap pembicara.
Pengolahan sinyal digital ini berbasis fast fourier dan memiliki beberapa proses untuk
mencapai feature extraction. Feature extraction yang paling cepat untuk diproses dan
didapatkan adalah nilai magnitude dalam domain frekuensi. Hal ini dikarenakan frekuensi
manusia yang dapat didengar memiliki batasan tertentu antara 0-20000Hz sehingga rentang
yang dimiliki menjadi tetap atau konstan. Untuk itu nilai magnitude dalam domain frekuensi
sangat memungkinkan dilakukan pada proses selanjutnya daripada nilai amplitudo dalam
domain waktu yang setiap pencuplikan sampel selalu tak konsisten. Proses-proses tersebut
yaitu :
Frame Blocking1.
Panjang frame yang biasanya digunakan untuk pemrosesan sinyal antara 10-30 ms
atau 256-1024 data. Panjang frame yang digunakan sangat mempengaruhi
keberhasilan dalam analisa spectral. Di satu sisi ukuran dalam frame harus sepanjang
mungkin untuk dapat menunjukkan resolusi frekuensi yang baik. Akan tetapi, di lain
sisi ukuran frame juga harus cukup pendek untuk dapat menunjukkan resolusi waktu
yang baik.
Proses Frame Blocking yaitu melakukan blok terhadap sinyal-sinyal menjadi
frame-frame N sampel, dengan frame-frame berdekatan dengan spasi M (M < N).
Frame pertama terdiri dari N sampel pertama. Frame kedua dengan M sampel setelah
frame pertama, dan overlap dengan N–M sampel. Dengan cara yang sama, frame
ketiga dimulai 2M sampel setelah frame pertama (atau M sampel setelah frame kedua)
dan overlap dengan N– 2M sampel. Proses ini berlanjut hingga semua sinyal suara
dihitung dalam satu atau banyak frame. Nilai untuk N dan M adalah N = 256 dan M
=100. Berikut ini adalah diagram blok untuk proses penentuan frame :
Saya lahir di kota Pasuruan, Jawa Timur padatanggal 16 Desember 1987. Sejak umur 3 tahunsaya merantau di kota Pekanbaru, Riau selama16 tahun lamanya untuk mengenyampendidikan di TK Avia, SDN 042, SLTP N 4Pekanbaru, SMA N 8 Pekanbaru.
Saya lulusan S1 ilmu komputer di UniversitasBrawijaya Malang pada Mei 2010. Dan mulaibekerja sebagai staff IT di perusahaan financepada Juni 2011. Selengkapnya...
Archive
► 2011 (15)
▼ 2010 (2)▼ April (2)
Pengolahan Sinyal Digitalmenggunakan komponendsp...
Pembacaan File WAV di delphi
► 2009 (19)
ShoutMixLive chat software foryour website
Click here to check it outnow!
0.0017s
welcome to adhit8 blog'sI n i l a h i n s p i r a s i k u , j i w a k u , h a t i k u d a l a m s e b u a h c o r e t a n n a nm e n a w a n u n t u k m e n g e k s p r e s i k a n k a r y a - k a r y a k u .
Home Profil Ilkom-UB Contact
welcome to adhit8 blog's: Pengolahan Sinyal Digital menggunakan kompo... http://adhit8.blogspot.com/2010/04/pengolahan-sinyal-digital-menggunaka...
1 of 6 12/23/2013 4:42 PM
Jadi, proses frame tersebut dilakukan secara terus-menerus hingga semua sinyal
dapat terproses. Selain itu, proses ini umumnya dilakukan secara overlapping untuk
setiap frame-nya. Panjang daerah overlap yang umum digunakan adalah kurang lebih
30% sampai 50% dari panjang frame.
Windowing2.
Proses windowing ini bertujuan untuk mengurangi terjadinya kebocoran spectral atau
aliasing yang mana merupakan suatu efek dari timbulnya sinyal baru yang memiliki
frekuensi yang berbeda dengan sinyal aslinya. Efek tersebut dapat terjadi karena
rendahnya jumlah sampling rate atau karena proses frame blocking yang
menyebabkan sinyal menjadi discontinue.
Ada beberapa fungsi pada proses window diantaranya adalah sebagai berikut :
Blackman Window1.
Fungsi ini menghasilkan sidelobe level yang paling tinggi (kurang lebih -58 dB),
tapi fungsi ini juga menghasilkan noise paling besar (kurang lebih 1.73 BINS).
Window Rectangle2.
Fungsi ini menghasilkan noise yang paling rendah berkisar 1.00 BINS, tapi
sayangnya fungsi ini memberikan sidelobe level yang paling rendah sehingga
menyebabkan terjadinya kebocoran spektral atau aliasing.
Hamming Window3.
Fungsi ini menghasilkan sidelobe level yang tidak terlalu tinggi (kurang lebih
-43 dB). Selain itu, noise yang dihasilkan pun tidak terlalu besar (kurang lebih
1.36 BINS).
Fast Fourier Transform (FFT)3.
Untuk mendapatkan sinyal dalam domain frekuensi dari sebuah sinyal discrete, salah
satu metode transformasi fourier yang digunakan adalah discrete fourier transform
(DFT). DFT dilakukan terhadap masing-masing frame dari sinyal yang telah
di-windowing. Namun, yang menjadi persoalan adalah bahwa DFT tersebut
memerlukan waktu komputasi yang sangat panjang untuk data yang besar. Oleh
karena itu, diperlukan suatu teknik komputasi yang efisien, baik dari sisi waktu maupun
dari sisi penggunaan memori.
FFT adalah algoritma cepat untuk mengimplementasikan discrete fourier transform
(DFT).FFT ini mengubah masing-masing frame N sampel dari domain waktu menjadi
domain frekuensi.
Hasil transformasi ini dipengaruhi oleh beberapa parameter, yaitu sample rate sinyal
suara dan FFT size. Sample rate adalah banyaknya sampel input analog yang diambil
secara digital dengan satuan Hertz (Hz). Sample rate sinyal suara berpengaruh pada
besarnya jangkauan frekuensi dari koefisien hasil FFT. Jangkauan frekuensi hasil FFT
adalah setengah dari sample rate sinyal suara yang ditransformasi. Artinya, apabila
terdapat sinyal suara dengan sample rate 44100 Hz, maka koefisien-koefisien hasil
transformasi dari sinyal suara tersebut berkisar dari 0 Hz sampai 22050 Hz. Jadi,
welcome to adhit8 blog's: Pengolahan Sinyal Digital menggunakan kompo... http://adhit8.blogspot.com/2010/04/pengolahan-sinyal-digital-menggunaka...
2 of 6 12/23/2013 4:42 PM
semakin besar sample rate , maka akan semakin detail pula sampel analog yang
diambil secara digital.
Sedangkan FFT size adalah panjang dari FFT yang digunakan. FFT size berpengaruh
terhadap ketelitian tiap koefisien FFT. Semakin besar FFT size, maka tiap koefisien
hasil FFT akan mewakili rentang frekuensi yang semakin kecil, sehingga ketelitiannya
semakin tinggi. Sebaliknya apabila ukuran sampel FFT semakin kecil, maka tiap
koefisien hasil FFT akan mewakili rentang frekuensi yang semakin besar, sehingga
ketelitiannya semakin rendah.
Output dari FFT ditransformasikan ke dalam rentang frekuensi. Nilai magnitude
terhadap frekuensi didapatkan berdasarkan rumus dibawah ini :
Proses :
Percakapan untuk data sampel telah ditentukan sebelumnya. Saya menggunakan frase atau
kata yang sama misal “Hallo”. Hal ini dilakukan agar dalam proses penelitian lebih mudah
karena dengan frase atau ucapan yang sama diharapkan masing-masing pembicara dapat
merepresentasikan nilai yang khas dari suaranya maka parameter yang ditentukan tidak
banyak. Pada dasarnya struktur fisik pengucapan setiap orang berbeda sehingga dihasilkan
gelombang yang berbeda pula. Adapun lamanya pembicaraan dalam suatu file wav tersebut
berdurasi kurang lebih 0.7 sampai 1.27. Hal ini dilakukan agar banyak frame yang dihasilkan
untuk setiap file sama karena ukuran waktu mempengaruhi panjang data dari file wav
tersebut. Banyak frame juga bergantung pada ukuran data yang diberikan untuk tiap
frame-nya. Saya menetapkan banyak data untuk setiap frame sebesar 1024 sehingga untuk
setiap overlap data sebesar N/2 buah data yaitu 512.
Pada tahap selanjutnya, panjang data dari suatu file wav tersebut telah diketahui. Dari
panjang data file wav tersebut akan dibagi menjadi beberapa frame. Jadi, banyak frame dapat
diketahui dengan membagi panjang data dengan nilai 1024 sehingga banyak frame akan
konsisten yaitu 36 selama selang waktu 0.7 detik sampai 1.27 detik.
Untuk tiap frame akan dilakukan proses FFT dengan window function Hamming, sehingga
menghasilkan N buah data RealOut dan Imaginer. Karena FFT menggunakan komponen
tambahan yaitu dspLab pada Delphi 7, maka algoritma FFT dan fungsi window Hamming akan
di-handle langsung oleh komponen tersebut. Begitu pula dengan ukuran data tiap frame yang
ditentukan sendiri melalui komponen tersebut melalui properties BufferSize. Jadi, nilai
BufferSize yaitu 1024 dan nilai N/2 buah data diinisialisaikan pada properties BufferSize2
secara otomatis.
Hasil dari FFT tersebut adalah simetris, sehingga hanya N/2 buah data yang digunakan untuk
proses selanjutnya. Dari N/2 buah data tersebut akan dihitung rata-rata nilai magnitude yang
menjadi nilai dari frame tersebut. Karena sampling rate yang digunakan adalah sebesar
44100Hz, maka frekuensi tertinggi yang diperoleh adalah 22050Hz dengan pembagian
frekuensi sebesar 22050Hz/512 data = 43.07 Hz/data. Nilai frekuensi tersebut sesuai dengan
batas frekuensi tertinggi yang dapat didengar oleh manusia. Tabel berikut ini menunjukkan
detail pembagian frekuensi sebagai hasil dari proses frequency extraction.
Data Frekuensi Magnitude
1 0 Hz – 43.07 Hz ---------------
2 43.07 Hz – 86.13 Hz ---------------
--- ------------------------- ---------------
512 22006.93 Hz – 22050 Hz ---------------
Implementasi Program :
view plain print ?
Written By Adhitya A P (0510960002)01.Student of Computer Science in Brawijaya University02.
03.unit UnitMain;04.
05.
welcome to adhit8 blog's: Pengolahan Sinyal Digital menggunakan kompo... http://adhit8.blogspot.com/2010/04/pengolahan-sinyal-digital-menggunaka...
3 of 6 12/23/2013 4:42 PM
interface06.07.
uses08. Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,09. Dialogs, dspFFT, dspIIRFilters, Menus, StdCtrls,10. Buttons, XPMan, DBCtrls, ExtCtrls, Mask, ComCtrls, DB, TeEngine,11. MmSystem, Series, Chart, Math;12.
13.type14. TFMain = class(TForm)15.
16. dspFFTL: TdspFFT;17. XPManifest1: TXPManifest;18. StatusBar1: TStatusBar;19. dspFFTR: TdspFFT;20. BitBtnProses: TBitBtn;21. Memo1: TMemo;22. Chart1: TChart;23. Series1: TFastLineSeries;24. Chart2: TChart;25. Series2: TFastLineSeries;26.
27.28.
procedure BitBtnProsesClick(Sender: TObject);29.30.
private31.{ Private declarations }32.
wavehdr : TWaveHeader;33. wavedata : array [0..1] of TChannel;34. numsamples : integer;35.
36. freqScale : array [1..20000] of real;37.
procedure GetInfoWav(filename : string; Memo : TMemo);38.procedure DisplayWav;39.procedure DigitalSignalProcessing(filename : string);40.
public41.{ Public declarations }42.procedure GetGrafik(i : Integer);43.
end;44.45.
var46. avgMagnitude, magnitude, Rmagnitude : array of real;47.
48.procedure TFMain.DigitalSignalProcessing(filename : string);49.var50.i, j : Integer;51.freqRange, nilai : real;52.str : string;53.
54.begin55.//Menentukan Banyak Frame56.nFrame := Round(Length(wavedata[0].Data)/dspFFTL.BufferSize);57.
58.//inisial array59.SetLength(avgMagnitude, nFrame);60.SetLength(Lmagnitude, dspFFTL.BufferSize2);61.SetLength(Rmagnitude, dspFFTL.BufferSize2);62.
63.str := '';64.
65.//proses segmentasi66.for i:= 0 to nFrame-1 do67.
begin68. StatusBar1.Panels.Items[1].Text := 'Proses File '+DM.TDataWav69. Memo1.Lines.Append('Frame ke-'+IntToStr(i+1));70.
71.//input FFT72.for j := 0 to dspFFTL.BufferSize-1 do73.
begin74.case wavehdr.NumChannels of75.//kasus mono76.1 : begin77.
dspFFTL.RealIn[j] := wavedata[0].Data[dspFFTL.78. dspFFTL.ImagIn[j]:= 0;79.
end;80.//kasus stereo81.2 : begin82.
//channel 083. dspFFTL.RealIn[j] := wavedata[0].Data[dspFFTL.BufferSize*i+j];84. dspFFTL.ImagIn[j]:= 0;85.
//channel 186. dspFFTR.RealIn[j] := wavedata[1].Data[dspFFTR.BufferSize*i+j];87. dspFFTR.ImagIn[j]:= 0;88.
end;89.end; //end case channel90.
end;91.92.
//proses FFT with komponen dsp93. dspFFTL.FFT;94.
welcome to adhit8 blog's: Pengolahan Sinyal Digital menggunakan kompo... http://adhit8.blogspot.com/2010/04/pengolahan-sinyal-digital-menggunaka...
4 of 6 12/23/2013 4:42 PM
dspFFTR.FFT;95.//procedure hitung nilai magnitude96.
dspFFTL.CalculateMagnitudes;97. dspFFTR.CalculateMagnitudes;98.
99.//range frekuensi100.
freqRange := (wavehdr.SampleRate/2)/dspFFTL.BufferSize2;
101.
for j:= 0 to (dspFFTL.BufferSize2) do102. freqScale[j] := (j*freqRange);103.
104.//proses awal nilai magnitude105.
nilai :=0;106.for j:= 0 to (dspFFTL.BufferSize2-1) do107.
begin108. Lmagnitude[j] := sqrt(power(dspFFTL.RealOut[j],2)+power(dspFFTL109. Rmagnitude[j] := sqrt(power(dspFFTR.RealOut[j],2)+power(dspFFTR110. nilai := nilai+magnitude[j];111.
end;112.113.
//rata-rata magnitude tiap frame114. avgMagnitude[i] := StrToFloat(Format('%0.2f', [nilai/dspFFTL115. str := str +' '+FloatToStr(avgMagnitude[i]);116. Memo1.Lines.Append('Rata-rata magnitude = '+FloatToStr(avgMagnitude[i])+117. Memo1.Lines.Append('');118.
119.//Penggambaran Grafik Sinyal120.
GetGrafik(i);121.end;122.
strpola := str;123. Memo1.Lines.Add('Pola = '+str);124. Memo1.Lines.Add('');125.end;126.
127.procedure TFMain.GetGrafik(i : Integer);128.var j: Integer;129.begin130.
131. Series1.Clear;132.for j:= 0 to (dspFFTL.BufferSize2)-1 do133.
Series5.AddXY(freqScale[j], Rmagnitude[j], '', clMaroon);134.135.
Series2.Clear;136.for j:= 0 to (dspFFTL.BufferSize2)-1 do137.
Series3.AddXY(freqScale[j], Lmagnitude[j], '', clMaroon);138.139.
end;140.
Download komponen dsplab disini
REAKSI:
5 k o m e n t a r :
Anonim mengatakan...
kok di variable "wavehdr"tidak di temukan...mas
30 Desember 2010 23.38
Anonim mengatakan...
Very big thanks for you! http://www.teworks.com/download.htm this site onlysale this component (dspFFT), but on your site i downloaded its free! Thanks!
PS. Sorry for my very bad english, i'm from Russia.
11 Februari 2011 10.04
adhit8 mengatakan...
untuk mempelajari mengenai wavehdr, silakan Anda baca terlebih dahulu prosespembacaan file wav pada blog saya http://adhit8.blogspot.com/2010/04/pembacaan-file-wav-di-delphi.html.
welcome to adhit8 blog's: Pengolahan Sinyal Digital menggunakan kompo... http://adhit8.blogspot.com/2010/04/pengolahan-sinyal-digital-menggunaka...
5 of 6 12/23/2013 4:42 PM
For friend from Russia, that's No problem. Welcome to my blog site. But, thiscomponent not complete to use. may be, shareware programs better thanfreeware program. So, it is basicly to learn dsp.
15 Maret 2011 16.34
Urang bandung mengatakan...
terima kasih ilmunya
18 Mei 2011 01.43
Anonim mengatakan...
gan, gw udah coba programnya, tapi muncul pesan[Error] Unit1.pas(87): Identifier redeclared: 'TFMain.DigitalSignalProcessing'gmn cara ngatasinnya??
15 Juni 2011 07.45
P o s k a n K o m e n t a r
Beri komentar sebagai:
Publikasikan
L i n k k e p o s t i n g i n i
Buat sebuah Link
Pages 8 1 2 3 4 5 6 Next
Copyright 2009 welcome to adhit8 blog's All rights reservedBlogger Template by Deluxe TemplatesWordpress by EZwpthemes
welcome to adhit8 blog's: Pengolahan Sinyal Digital menggunakan kompo... http://adhit8.blogspot.com/2010/04/pengolahan-sinyal-digital-menggunaka...
6 of 6 12/23/2013 4:42 PM