pengolahan sinyal digital menggunakan komponen dsp fft di delphi 7

6
Pengolahan Sinyal Digital menggunakan komponen dsp FFT di delphi 7 DIPOSKAN 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 Blocking 1. 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 pada tanggal 16 Desember 1987. Sejak umur 3 tahun saya merantau di kota Pekanbaru, Riau selama 16 tahun lamanya untuk mengenyam pendidikan di TK Avia, SDN 042, SLTP N 4 Pekanbaru, SMA N 8 Pekanbaru. Saya lulusan S1 ilmu komputer di Universitas Brawijaya Malang pada Mei 2010. Dan mulai bekerja sebagai staff IT di perusahaan finance pada Juni 2011. Selengkapnya... Archive 2011 (15) 2010 (2) April (2) Pengolahan Sinyal Digital menggunakan komponen dsp... Pembacaan File WAV di delphi 2009 (19) ShoutMix Live chat software for your website Click here to check it out now! 0.0017s welcome to adhit8 blog's Inilah inspirasiku, jiwaku, hatiku dalam sebuah coretan nan menawan untuk mengekspresikan karya-karya ku. 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

Upload: juli-adi-prastyo

Post on 20-Jan-2016

358 views

Category:

Documents


21 download

DESCRIPTION

Pengolahan sinyal dengan Delphi 7

TRANSCRIPT

Page 1: Pengolahan Sinyal Digital Menggunakan Komponen Dsp FFT Di Delphi 7

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

Page 2: Pengolahan Sinyal Digital Menggunakan Komponen Dsp FFT Di Delphi 7

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

Page 3: Pengolahan Sinyal Digital Menggunakan Komponen Dsp FFT Di Delphi 7

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

Page 4: Pengolahan Sinyal Digital Menggunakan Komponen Dsp FFT Di Delphi 7

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

Page 5: Pengolahan Sinyal Digital Menggunakan Komponen Dsp FFT Di Delphi 7

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

Page 6: Pengolahan Sinyal Digital Menggunakan Komponen Dsp FFT Di Delphi 7

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