Algoritma Short Time Fourier Transform(STFT) adalah pengembangan dari Transformasi Fourier. Transformasi Fourier hanya dapat menghasilkan informasi apakah suatu sinyal memiliki komponen frekuensi tertentu atau tidak. Hasil Transformasi Fourier tidak dapat menunjukkan kapan komponen frekuensi tersebut terjadi. Sehingga Transformasi Fourier hanya cocok diterapkan pada sinyal stasioner yaitu sinyal yang komponen frekuensinya tidak berubah seiring dengan perubahan waktu atau semua komponen frekuensi terjadi di semua waktu.
Lagu adalah sinyal non-stationary atau sinyal yang komponen frekuensinya berubah terhadap waktu. Untuk mengetahui kapan suatu komponen frekuensi dari sinyal suara lagu terjadi, dapat digunakan algoritma STFT. Ide dibalik algoritma ini adalah membagi-bagi sinyal non-stationary menjadi beberapa frame yang
masing-masing frame merupakan sinyal yang dianggap stasioner. STFT menghasilkan representasi frekuensi-waktu (Time-Frequency Representation) sebuah sinyal yang dapat digambarkan dengan sebuah spektrogram. Diagram blok algoritma STFT dapat dilihat pada Gambar 2.4.
Gambar 2.4. Diagram Blok STFT
2.11.1. Frame Blocking
Frame Blocking adalah pembagian sinyal suara digital menjadi beberapa frame.
Frame Blocking berguna untuk mempermudah dalam perhitungan dan analisis sinyal suara, karena proses analisis akan berhasil dengan baik apabila sinyal yang dianalisis memiliki parameter yang tetap (berubah dengan lambat) terhadap waktu(time invariant). Framing dibuat sedemikian rupa sehingga sinyal suara pada satu frame dapat dianggap sebagai sinyal yang tidak berubah terhadap waktu. Satu frame terdiri dari beberapa sample tergantung dengan samplerate.
Dalam proses frame blocking, sinyal suara dibagi menjadi beberapa frame yang saling tumpang tindih (overlap). Parameter yang biasa digunakan dalam proses frame blocking adalah N untuk banyak sample dalam setiap frame, dan M untuk hop size atau jarak antara permulaan satu frame dengan permulaan frame berikutnya.
Overlap berfungsi untuk mencegah hilangnya informasi yang terdapat di pinggiran frame sebelumnya. Ilustrasi frame blocking dapat dilihat pada Gambar 2.5.
Gambar 2.5. Frame blocking
Untuk menghitung banyak frame, dapat digunakan persamaan berikut :
⌈( )
⌉ (2.1)
Sebagai contoh perhitungan digunakan sinyal suara dengan samplerate 44100 Hz dengan jumlah sample dalam setiap frame 1024, dan jarak antara frame adalah
Proses windowing adalah suatu proses yang berguna untuk mengurangi efek diskontinuitas atau kesenjangan pada awal dan akhir frame yang dihasilkan dari proses frame blocking dengan cara mengalikan setiap frame dengan sebuah fungsi window untuk memperkecil sinyal hingga mendekati nol pada awal dan akhir tiap frame. Dengan berkurangnya efek diskontinuitas pada sinyal, maka sinyal tersebut akan lebih simetris dan periodis sehingga informasi yang dihasilkan setelah proses selanjutnya lebih akurat.
Terdapat beberapa fungsi window yang dapat digunakan, yaitu Rectangular Window, Hanning Window, Hamming Window dan Blackman Window. Fungsi window yang paling sering digunakan pada proses Identifikasi Lagu(Song Recognition) adalah Hamming Window karena cocok digunakan untuk sinyal degan amplitudo atau loudness yang berbeda-beda seperti sinyal lagu. Selain itu, Hamming
Window juga cocok digunakan untuk sinyal yang memiliki banyak derau seperti rekaman potongan sebuah lagu yang direkam di tempat yang ramai.
Persamaan Hamming Window adalah sebagai berikut :
( ) (
) (2.2) Nilai adalah jumlah sample pada setiap frame. Misalkan sinyal frame input adalah ( ) dan sinyal output dari proses windowing adalah ( ). Untuk memperoleh sinyal ( ) dapat dilakukan dengan menggunakan persamaan dibawah ini :
( ) ( ) ( ) (2.3)
2.11.3. Discrete Fourier Transform (DFT)
DFT adalah transformasi matematika yang memkonversikan sinyal suara digital dari domain waktu ke domain frekuensi.
Output dari DFT adalah bilangan kompleks X(k). Untuk mencari X(k) dapat
merupakan konstanta yang disebut sebagai Twiddle Factor. memiliki nilai
Keterangan :
- N adalah jumlah sample input
- X(k) adalah nilai output DFT pada urutan ke-k
- k adalah indeks output DFT dalam domain frekuensi (0,1,2,…,N-1) - x(n) adalah nilai sample input dalam domain waktu ke-n
- n adalah nilai indeks input dalam domain waktu (0,1,2,…,N-1) - j adalah konstanta bilangan imaginer
- = 3.14159
Dari persamaan (2.6) dapat disimpulkan untuk mencari nilai real dari bilangan kompleks X(k) adalah
dan untuk mencari nilai imaginer dari X(k) adalah
( ) ∑ ( ) ( )
(2.8)
Untuk menghitung nilai magnitude dari bilangan kompleks X(k) dapat digunakan persamaan (2.9).
( ) | ( )| √( ( )) ( ( )) (2.9)
2.11.4. Fast Fourier Transform (FFT)
FFT merupakan algoritma yang mengimplementasikan Discrete Fourier Transform(DFT). FFT merupakan teknik perhitungan cepat dari DFT. Dengan menerapkan algoritma FFT jumlah operasi aritmatika pada DFT sebanyak O( ) dapat dikurangi menjadi O( ). Untuk mengurangi kompleksitas perhitungan DFT, algoritma FFT memanfaatkan sifat periodisitas dan simetris dari Twiddle Factor.
Terdapat beberapa macam pendekatan algoritma FFT, dalam penelitian ini pendekatan yang digunakan adalah radix-2 Decimation in Time. Algoritma radix-2
Decimation in Time dikemukakan oleh J.W. Cooley dan John Tukey pada tahun 1965, sehingga algoritma ini juga dikenal dengan Algoritma Cooley-Tukey. Algoritma ini adalah algoritma yang paling sering digunakan pada pengolahan sinyal digital. FFT menerapkan prinsip Divide and Conquer dalam mengurangi kompleksitas perhitungan DFT.
Pada tahap divide, sinyal input x(n) dipisahkan menjadi dua bagian yaitu bagian x(n) dengan indeks n genap (n = 0, 2, 4, …) dan bagian x(n) dengan indeks n ganjil (n = 1, 3, 5, …). Ilustrasi tahap divide dengan N=8 dapat dilihat pada Gambar 2.6.
Gambar 2.6. Tahap divide pada FFT
Untuk memperoleh hasil dari tahap divide ini dapat digunakan prosedur bit-reverse, yaitu membalikkan bit dari indeks n pada x(n). Jumlah bit yang akan dibalikkan pada prosedur Bit-reverse adalah bit, dimana .
Misalnya, jumlah sample( ) , maka jumlah bit yang akan dibalikkan adalah 3. Hasil dari prosedur bit-reverse indeks n dengan jumlah sample ( ) = 8 dapat dilihat pada Tabel 2.2.
Tabel 2.2. Bit-reverse indeks n dengan n Bit Bit-reverse Hasil
0 000 000 0
1 001 100 4
2 010 010 2
3 011 110 6
4 100 001 1
5 101 101 5
6 110 011 3
7 111 111 7
Setelah tahap divide dilakukan, tahap selanjutnya adalah tahap conquer. Pada tahap conquer digunakan persamaan (2.10) dan persamaan (2.11).
( ) ( ) ( ) (2.10)
( ) ( ) ( ) (2.11)
Tahap conquer dapat gambarkan dengan diagram butterfly seperti yang terlihat pada Gambar 2.7.
Gambar 2.7. Diagram butterfly
Untuk 8 titik sample, proses FFT dengan pendekatan radix-2 Decimation in Time digambarkan secara menyeluruh oleh diagram pada Gambar 2.8.
Gambar 2.8. Diagram Butterfly untuk N=8
2.11.5. Spektrogram
Representasi frekuensi-waktu sebuah sinyal suara lagu hasil proses STFT dapat divisualisasikan dengan sebuah spektogram. Spektrogram seperti yang terlihat pada Gambar 2.9 adalah grafik tiga dimensi yaitu :
1. Sumbu x merepresentasikan waktu (s).
2. Sumbu y merepresentasikan frekuensi (Hz).
3. Dimensi ketiga yaitu warna merepresentasikan magnitudo (dB).
Gambar 2.9. Spektrogram