Pengolahan Sinyal Digital menggunakan komponen
Pengolahan Sinyal Digital menggunakan komponen
dsp FFT di delphi 7
dsp FFT di delphi 7
D I P O D I P OS K A N O LS K A N O LE HE H A D H I T 8A D H I T 8 O N K A M I SO N K A M I S, 2 2 A P R I, 2 2 A P R IL 2 0 1 0L 2 0 1 0Pengenalan :
Pengenalan :
Proses pengolahan sinyal digital dilakukan setelah proses pembacaan file wav dan proses Proses pengolahan sinyal digital dilakukan setelah proses pembacaan file wav dan proses pengolahan sebelumnya untuk mendapatkan data yang benar-benar bebas dari noise yang pengolahan sebelumnya untuk mendapatkan data yang benar-benar bebas dari noise yang mencerminkan data aktual karakteristik dari suara seseorang tersebut. Tujuan dari mencerminkan data aktual karakteristik dari suara seseorang tersebut. Tujuan dari pengolahan sinyal digital adalah untuk mencapai feature extraction, sebuah proses yang pengolahan sinyal digital adalah untuk mencapai feature extraction, sebuah proses yang mengkonversi sinyal suara menjadi beberapa parameter yang
mengkonversi sinyal suara menjadi beberapa parameter yang dapat diambil untuk prosesdapat diambil untuk proses selanjutnya yaitu identifikasi pola
selanjutnya yaitu identifikasi pola suara. Feature extraction merupakan proses mengekstraksisuara. Feature extraction merupakan proses mengekstraksi data hasil akuisisi sehingga dihasilkan data yang berdimensi lebih kecil, yang nantinya data hasil akuisisi sehingga dihasilkan data yang berdimensi lebih kecil, yang nantinya digunakan untuk merepresentasikan tiap-tiap pembicara.
digunakan untuk merepresentasikan tiap-tiap pembicara.
Pengolahan sinyal digital ini berbasis fast fourier dan memiliki beberapa proses untuk Pengolahan sinyal digital ini berbasis fast fourier dan memiliki beberapa proses untuk mencapai feature extraction. Feature extraction yang paling cepat untuk diproses mencapai feature extraction. Feature extraction yang paling cepat untuk diproses dandan didapatkan adalah nilai magnitude dalam domain frekuensi. Hal ini dikarenakan
didapatkan adalah nilai magnitude dalam domain frekuensi. Hal ini dikarenakan frekuensifrekuensi manusia yang dapat didengar memiliki batasan tertentu antara 0-20000Hz sehingga rentang 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 yang dimiliki menjadi tetap atau konstan. Untuk itu nilai magnitude dalam domain frekuensi sangat memungkinkan dilakukan pada proses selanjutnya
sangat memungkinkan dilakukan pada proses selanjutnya daripada nilai amplitudo dalamdaripada nilai amplitudo dalam domain waktu yang setiap pencuplikan sampel selalu tak konsisten. Proses-proses tersebut domain waktu yang setiap pencuplikan sampel selalu tak konsisten. Proses-proses tersebut yaitu : yaitu : Frame Blocking Frame Blocking 1. 1.
Panjang frame yang biasanya digunakan un
Panjang frame yang biasanya digunakan un tuk pemrosesan sinyal antara 10-30 tuk pemrosesan sinyal antara 10-30 msms atau 256-1024 data. Panjang frame yang digunakan
atau 256-1024 data. Panjang frame yang digunakan sangat mempengaruhisangat mempengaruhi keberhasilan dalam analisa spectral. Di sa
keberhasilan dalam analisa spectral. Di sa tu sisi ukuran dalam frame harus sepanjangtu sisi ukuran dalam frame harus sepanjang mungkin untuk dapat menunjukkan resolusi frekuensi yang
mungkin untuk dapat menunjukkan resolusi frekuensi yang baik. Akan tetapi, di lainbaik. Akan tetapi, di lain sisi ukuran frame juga harus cukup pendek untuk dapat menunjukkan resolusi waktu sisi ukuran frame juga harus cukup pendek untuk dapat menunjukkan resolusi waktu yang baik.
yang baik.
Proses Frame Blocking yaitu melakukan blok terhadap
Proses Frame Blocking yaitu melakukan blok terhadap sinyal-sinyal menjadisinyal-sinyal menjadi frame-fram
frame-frame N sampel, dengan frame-frame berdekatan dengan spasi M (M e N sampel, dengan frame-frame berdekatan dengan spasi M (M < N).< N). Frame pertama terdiri dari N sampel pertama. Fram
Frame pertama terdiri dari N sampel pertama. Frame kedua dengan e kedua dengan M sampel setelahM sampel setelah frame pertama, dan overlap dengan N–M sampel. Dengan cara yan
frame pertama, dan overlap dengan N–M sampel. Dengan cara yan g sama, frameg sama, frame ketiga dimulai 2M sampel setelah
ketiga dimulai 2M sampel setelah frame pertama (atau M sampel setelah frame kedua)frame pertama (atau M sampel setelah frame kedua) dan overlap dengan N– 2M sampel. Proses ini berlanjut hingga semua sinyal suara 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 dihitung dalam satu atau banyak frame. Nilai untuk N dan M adalah N = 256 dan M =100. Berikut ini adalah diagr
=100. Berikut ini adalah diagr am blok untuk proses penentuan frame :am blok untuk proses penentuan frame :
Saya l
Saya lahir di kota ahir di kota PasuruaPasuruan, Jawa Timur pan, Jawa Timur padada tanggal 16 Desember 1987. Sejak umur 3 tahun tanggal 16 Desember 1987. Sejak umur 3 tahun saya merantau di kota Pekanbaru, Riau selama saya merantau di kota Pekanbaru, Riau selama 16 tahun lamanya untuk m
16 tahun lamanya untuk m engenyamengenyam pendi
pendidikadikan di TK Avin di TK Avia, SDN 042a, SDN 042, SLTP N 4, SLTP N 4 Pekanba
Pekanbaru, SMA N 8 Pekanbru, SMA N 8 Pekanbaru.aru. Saya l
Saya lulusan S1 ilmu komputer di Uulusan S1 ilmu komputer di Universitaniversitass Brawij
Brawijaya Malaya Malang pang pada ada Mei 2010. Dan mulaMei 2010. Dan mulai i bekerja sebagai staff IT di perusahaan finance bekerja sebagai staff IT di perusahaan finance pad
pada Juni 2011.a Juni 2011. Selengkapnya... Selengkapnya...
Archive
Archive
► ► 20112011(15)(15) ▼ ▼ 20102010(2)(2) ▼ ▼ AprilApril(2)(2)Pengolahan Sinyal Digital Pengolahan Sinyal Digital
menggunakan komponen menggunakan komponen dsp...
dsp...
Pembacaan File WAV di delphi
Pembacaan File WAV di delphi
►
► 20092009(19)(19)
ShoutMix
ShoutMix
Live chat software for
Live chat software for
your website
your website
Click
Click
here hereto check it out
to check it out
now!
now!
0.0017s
0.0017s
welcome to adhit8 blog's
welcome to adhit8 blog's
I n i l a h i n s p i
I 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 n
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 n
m e n a w a n u n t u k
m e n a w a n u n t u k m e n g e k s p r e s
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 .
i k a n k a r y a - k a r y a k u .
H
Jadi, proses frame tersebut dilakukan se cara 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.
Windowing 2.
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 Window
1.
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 Rectangle
2.
Fungsi ini menghasilkan noise yang p aling rendah berkisar 1 .00 BINS, tapi sayangnya fungsi ini memberikan sidelobe level yang paling rendah sehingga menyebabkan terjadinya kebocoran spektral atau aliasing.
Hamming Window 3.
Fungsi ini menghasilkan sidelobe level yang tidak terlalu tinggi (kurang lebih -43 dB). Selain itu, noise yang dihasilkan pun tidak terlalu besar (kur ang 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 disc rete 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 p anjang untuk data yang b esar. 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 siny al suara yang ditransformasi. Artinya, apabila terdapat sinyal suara dengan sample rate 44100 Hz, maka koefisien-koefisien hasil transformasi dari sinyal suara tersebut b erkisar dari 0 Hz sampai 22050 Hz. Jadi,
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 s ize, 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 s ampel 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 s ama 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 ukura n 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 da ta 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 pr in t ? Written By Adhitya A P ( 0510960002) 01.Student of Computer Science in Brawijaya University 02.
03.
unit UnitMain; 04.
interface 06.
07. uses 08.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Contro 09.
Dialogs, dspFFT, dspIIRFilters, Menus, StdCtrls, 10.
Buttons, XPMan, DBCtrls, ExtCtrls, Mask, ComCtrls, DB, TeEngine, 11.
MmSystem, Series, Chart, Math; 12. 13. type 14. 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. private 31. { 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. public 41. { Public declarations } 42. procedure GetGrafik(i : Integer); 43. end; 44. 45. var 46.
avgMagnitude, magnitude, Rmagnitude : array of real; 47. 48. procedure TFMain.DigitalSignalProcessing(filename : string); 49. var 50. i, j : Integer; 51.
freqRange, nilai : real; 52. str : string; 53. 54. begin 55.
//Menentukan Banyak Frame 56. nFrame := Round(Length(wavedata[0].Data)/dspFFTL.BufferSize); 57. 58. //inisial array 59. SetLength(avgMagnitude, nFrame); 60. SetLength(Lmagnitude, dspFFTL.BufferSize2); 61. SetLength(Rmagnitude, dspFFTL.BufferSize2); 62. 63. str := ''; 64. 65. //proses segmentasi 66. for i:= 0 to nFrame-1 do 67. begin 68.
StatusBar1.Panels.Items[1].Text := 'Proses File '+DM.T 69. Memo1.Lines.Append('Frame ke-'+IntToStr(i+1)); 70. 71. //input FFT 72. for j := 0 to dspFFTL.BufferSize-1 do 73. begin 74. case wavehdr.NumChannels of 75. //kasus mono 76. 1 : begin 77. dspFFTL.RealIn[j] := wavedata[0].Data[dspFFTL. 78. dspFFTL.ImagIn[j]:= 0; 79. end; 80. //kasus stereo 81. 2 : begin 82. //channel 0 83. dspFFTL.RealIn[j] := wavedata[0].Data[dspFFTL. 84. dspFFTL.ImagIn[j]:= 0; 85. //channel 1 86. dspFFTR.RealIn[j] := wavedata[1].Data[dspFFTR. 87. dspFFTR.ImagIn[j]:= 0; 88. end; 89.
end; //end case channel 90.
end; 91.
92.
//proses FFT with komponen dsp 93.
dspFFTL.FFT; 94.
dspFFTR.FFT; 95.
//procedure hitung nilai magnitude 96. dspFFTL.CalculateMagnitudes; 97. dspFFTR.CalculateMagnitudes; 98. 99. //range frekuensi 100. freqRange := (wavehdr.SampleRate/2) /dspFFTL.BufferSize2; 101. for j:= 0 to (dspFFTL.BufferSize2) do 102. freqScale[j] := (j*freqRange); 103. 104.
//proses awal nilai magnitude 105. nilai :=0; 106. for j:= 0 to (dspFFTL.BufferSize2-1) do 107. begin 108. Lmagnitude[j] := sqrt(power(dspFFTL.RealOut[j],2)+po 109. Rmagnitude[j] := sqrt(power(dspFFTR.RealOut[j],2)+po 110. nilai := nilai+magnitude[j]; 111. end; 112. 113.
//rata-rata magnitude tiap frame 114.
avgMagnitude[i] := StrToFloat(Format('%0.2f', [nilai/dsp 115.
str := str +' '+FloatToStr(avgMagnitude[i]); 116.
Memo1.Lines.Append('Rata-rata magnitude = '+FloatToStr(a 117.
Memo1.Lines.Append(''); 118.
119.
//Penggambaran Grafik Sinyal 120. 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. begin 130. 131. Series1.Clear; 132. for j:= 0 to (dspFFTL.BufferSize2)-1 do 133.
Series5.AddXY(freqScale[j], Rmagnitude[j], '', clMaroon); 134. 135. Series2.Clear; 136. for j:= 0 to (dspFFTL.BufferSize2)-1 do 137.
Series3.AddXY(freqScale[j], Lmagnitude[j], '', clMaroon); 138.
139. end; 140.
Download komponen dsplab disini
R E A K S I :
5 k o m e n t a r :
Anonim mengatakan...
kok di variable "wavehdr" tidak di t emukan...mas30 Desember 2010 23.38
Anonim mengatakan...
Very big thanks for you! http://w ww.teworks. com/download.htm this site only sale this component (dspFFT), but on your site i downloaded its free! Thanks!
PS. Sorry f or my very bad english, i’m from Russia.
11 Februari 2011 10.04
adhit8 mengatakan...
untuk mempelajari mengenai wavehdr, silakan Anda baca terlebih dahulu proses pembacaan file wav pada blog saya http://adhit8.blogspot.com/2010/04 /pembacaan-file-wav-di-delphi.html.
For friend from Russia, that’s No problem. Welcome to my blog site. But, this component not complete to use. may be, shareware pr ograms better t han freeware program. So, it is basicly to learn dsp.
15 Maret 2011 16.34
Urang bandung mengatakan...
terima kasih ilmunya18 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