Search what you want

Sunday, March 3, 2019

Learning Speech Recognition (part 3)


Learning Speech Recognition (part 2)

Pada part 1, telah dibahas mengenai pengenalan awal speech recognition. Mulai dari definisi, jenis-jenis, history, penggunaan hingga bagaimana speech recognition bekerja. Artikel part 2 ini akan coba dibahas tentang komponen penyusun sistem speech recognition
Signal to language (Andrew presentation slide)
seperti yang dilihat dari gambar diatas, sistem penyusun dari speech recognition memiliki komponen yang lumayan banyak. Mulai dari audio yang direkam hingga menghasilkan sebuah teks. Masing-masing komponen dilakukan proses yang nantinya akan menjadi komponen lain. proses-proses ini yang masih terus dikaji untuk dilakukan pembaharuan-pembaharuan yang lebik mutakhir, agar menghasilkan proses yang efisien dan akurasi yang baik. Pembahasan selanjutnya akan dijabarkan proses-proses yang terjadi dari setiap komponen. insyaallah.


Signal to language (Andrew presentation slide)
Representasi suara
  1. Pendengaran manusia ~50Hz — 20kHz (lebih umum pengetahuan tentang pendengaran manusia dimulai dari frekuensi 20Hz)
  2. musik 50Hz — 15kHz
  3. Suara manusia ~85Hz — 8kHz
  4. Suara telefoni yang memiliki samping 8kHz : 300Hz — 4kHz
  5. speech processing kontemporer lebih banyak menggunakan 16kHz 16bits/sample
https://www.audiologyonline.com/articles/comparison-music-sound-quality-between-20872
dari sini diketahui bahwa, pada suatu ketika seseorang dapat mendengar suatu suara/rekaman dengan baik. Akan tetapi ketika suara tersebut dimasukkan ke sebuah sistem rekognisi suara, sistem tidak dapat mengeluarkan transkripsi dengan baik. Hal itu dapat terjadi, dimungkinkan, karena perbedaan frekuensi yang ada.

Bagaimana suara manusia terbentuk
Suara yang dihasilkan oleh manusia memiliki proses yang unik untuk diketahui. Berikut sedikit ilustrasi bagaimana suara terbentuk.
http://ispl.korea.ac.kr/~wikim/research/speech.html
  1. gelombang terbentuk dari perubahan tekanan udara
  2. direalisasikan melalui eksitasi dari pita suara
  3. dimodulasikan oleh saluran vokal
  4. dimodulasikan oleh artikulator (lidah, gigi, bibir)
  5. vowels diproduksi dengan sebuah saluran vokal yang terbuka
  6. konsonan adalah penyempitan saluran vokal
  7. dikonversi ke tegangan melalui microphone
  8. disampling menggunakan analog to digital converter
https://www.researchgate.net/publication/271302106_Practical_Field_Overview_Voice_Quality_of_RTP_Packet_Size_Analyze_on_Codec_G729_Annexb_no_in_Low_Bandwidth_Area_of_Bangladesh


Signal to language (Senior Andrew presentation slide)
Mengetahui sifat dan jenis suara yang ada, memudahkan untuk mengetahui proses penerjemahan suara yang direkam. Suara manusia tidak dapat langsung diolah oleh komputer. Maka dari itu harus diubah kesebuah representasi agar komputer dapat mengolahnya, yaitu mengubahnya dari analog ke representasi digitallalu dilakukan ekstraksi fitur terhadap suara tersebut. Tujuan dari ekstraksi fitur suara, yaitu untuk:
  1. membantu meningkatkan performa dari pattern recognition
  2. mengurangi memory yang tidak perlu dan biaya pemprosesan
  3. mencari sekumpulan parameter dari sebuah utterance yang memiliki korelasi dengan sinyal suara
  4. menentukan informasi yang relevant dan menghilangkan informasi yang tidak dibutuhkan

Proses ekstraksi fitur pada suara
lalu bagaimana ekstraksi fitur pada suara untuk speech recognition dilakukan? secara umum, berikut proses ekstraksi fitur dilakukan:
Takahiro Shinozaki lecture
pastikan sampling dan quantizing dari suara sudah dengan format yang benar. Biasanya untuk speech recognition digunakan sample rate 16kHz dan nilai quantizing 16 bit.
Takahiro Shinozaki lecture (32ms = 512samples/16kHz)
Selanjutnya, sinyal dibagi menjadi untuk dilakukan ekstraksi fitur. Komponen ekstraksi fiturnya tediri dari lebar (window width), shifting dan overlaping. penentuan shifting dan window width berbeda-beda, akan tetapi pada gambar diatas dilakukan shifting sebesar 10ms, dengan window width 32ms, dan overlaping sinyal sebesar 22ms. 
pada presentasi Andrew (link) sekitar menit ke 12–13, mencontohkan melakukan pengolahan FFT dengan shifting sebesar 10ms, window width 35ms, dan overlapping sebesar 25ms. Jadi nilai-nilai ini masih bisa berbeda dengan kasus yang lainnya.
Biasanya lebar dari sinyal yang dijadikan frame berkisar antara 20ms–40ms per frame. Hal tersebut dikarenakan, jika lebar terlalu pendek maka tidak mendapatkan estimasi spektral yang baik, dan juga ketika lebarnya terlalu besar maka perubahan terlalu sering disetiap frame yang ada. (link)
Takahiro Shinozaki lecture
tahap terakhirnya adalah terbentuknya “frame” yang direpresentasikan dengan vector. Frame ini akan digunakan untuk proses selanjutnya dalam membuat model akustik.

Metode ekstraksi fitur dalam speech recognition
Terdapat banyak metode untuk melakukan ekstraksi fitur pada speech recognition, yang masing-masing memiliki kelebihan dan kekurangannya dan juga perbedaan property yang digunakan. Berikut merupakan beberapa metode untuk melakukan ekstraksi fitur:
  1. Principal Component Analysis (PCA)
  2. Linear Discriminate Analysis (LDA)
  3. Independent Component Analysis (ICA)
  4. Linear Predictive Coding
  5. Filter Bank Analysis
  6. Mel-frequency Cepstrum Coefficients (MFCC)
  7. Kernel based feature extraction method
  8. Wavelet
  9. Cepstral Mean Subtraction
  10. RASTA Filtering
Pada kesempatan kali ini mungkin akan lebih banyak dibahas tentang ekstraksi fitur menggunakan Mel-frequency Cepstrum Coefficient (MFCC). Akan tetapi, jika ada yang ingin mengetahui lebih lanjut pembahasan singkat tentang perbandingan setiap metode dapat dilihat pada paper tautan berikut (link). 

Mel-frequency Cepstrum Coefficients (MFCC)
Pada MFCC ini proses dilakukan pada power spektrum dari suara yang diproses menggunakan implementasi dari Fourier Analysis. Pada Fourier analysis ini kita juga membahas tentang Fourier Transform. Kekurangan dari MFCC ini tidak terlalu robust pada tambahan noise sekarang ini, tetapi dapat di reduce dengan menormalisasi nilainya.
ketika mempelajari lebih lanjut tentang proses yang terjadi untuk mendapatkan MFCC, ada beberapa hal yang menjadikan sedikit bingung untuk orang awam (termasuk saya). Tedapat perbedaan pada salah satu komponen yang ada pada prosesnya. Jika melihat pada diagram prosesnya, terdapat satu bagian yang terdapat perbedaan dibeberapa referensi, yaitu penggunaan FFT, DFT, dan DCT.
(Diagram 1 MFCC) Takahiro Shinozaki lecture
(Diagram 2 MFCC) https://www.researchgate.net/publication/262793706_A_Review_on_Feature_Extraction_and_Noise_Reduction_Technique (2014)
(Diagram 3 MFCC) https://www.researchgate.net/publication/318668903_Emotion_Recognition_from_Chinese_Speech_for_Smart_Affective_Services_Using_a_Combination_of_SVM_and_DBN (2017)
Setelah mencoba untuk sedikit mencari, akhirnya mendapatkan penjelasan yang cukup dipahami, tentang perbedaan ketiga jenis metode tersebut. Berikut link-nya (link). Ketiga algoritma itu sama-sama merupakan sebuah transformasi linier yang memiliki input-an sebuah sinyal (complex/real) dari sebuah panjang sinyal tertentu dan menghasilkan output.
  1. DFT (discrete Fourier Transform): teorema pada pengolahan sinyal kompleks.
  2. FFT : algoritma dari DFT 
  3. DCT (discrete cosine transform): teorema pada pengolahan sinyal real.
setelah melihat di (satu) forum yang ada, lebih banyak orang yang merekomendasikan menggunakan DCT dibandingkan yang lainnya. (link1) (link2). Hal tersebut dapat terlihat dari banyaknya tools populer yang menggunakan DCT pada bagian dari ekstraksi fiturnya.

Ekstarksi fitur (MFCC) pada tools yang ada
  1. Pocketsphinx (link) : 13 columns per frame
  2. kaldi (link) : FFT — DCT; 23 triangular overlapping bins and 13 coefficients; 25 ms frames shifted by 10ms each time
  3. slaney (link) : FFT — DCT ; 
  4. htk (link) (link): FFT — DCT; 26 channels and 12 MFCC coefficients; shifted by 10ms each time
  5. librosa (link): DCT; 
  6. other (link1) (link2): FFT — DCT

No comments:

Post a Comment