Friday, December 6, 2019

Teknik Pemisahan Suara yang Berurutan-Sequence



Melanjutkan tulisan sebelumnya (http://www.softscients.web.id/2019/11/belajar-dasar-dasar-sinyal.html) dengan judul Belajar Dasar-Dasar Sinyal mulai dari Frekuensi, Sample Rate/Cuplikan, Domain Waktu, Domain Frekuensi, serta contoh penerapannya secara nyata pada sinyal audio nada piano. Nah sekarang penulis lanjutkan sedikit mengenai Pemisahan Suara yang Berurutan/Sequence. Dalam penggabungan sinyal ada 2 macam seperti tulisan Belajar Dasar-
Dasar Sinyal yaitu
[A+B]: yang berarti 2 sinyal atau lebih dibunyikan secara bersama-sama
[A,B]: yang berarti 2 sinyal dibunyikan secara berurutan


Nah yang kita bahas pada tulisan kali ini adalah kasus yang sederhana yaitu [A,B] sesuai dengan plot Domain Waktu dibawah ini yaitu terdiri dari 6 suara yang dibunyikan secara berurutan.

Algoritma yang digunakan seperti berikut
    Operasi Blocking
    Operasi Windowing
    Operasi Powering
    Penentuan Batas/Thresholding
    Pencarian Peak


Operasi Blocking

Digunakan untuk memisahkan sinyal perblock secara overlapping
 
Ref: https://dsp.stackexchange.com/questions/36509/why-is-each-window-frame-overlapping

dimana M panjang tiap frame dan N overlapping tiap frame-nya.

 
Kemudian kita akan melakukan operasi frame blocking
Berikut jika menggunakan M = 4 dengan N = 3 (selisih antar block)
 
Kembali ke bitrate yang digunakan file audio yaitu 44100 Hz/detik, sehingga kita putuskan menggunakan waktu 0.02 detik atau 0.02 x 44100 = 882 sebagai nilai M dan 400 sebagai N nya. Kamu bisa lihat sejumlah block (ada 7 block saja yang ditampilkan).
 

Operasi Windowing

Setiap block akan diterapkan operasi  windowing  yang berguna untuk memperhalus ujung kiri dan kanan, perhatikan 2 sinyal berikut yang saling overlapping, akan terlihat bahwa sinyal smooth (yang sudah diterapkan windowing)
 
rumus umum seperti berikut

Ref: https://docs.scipy.org/doc/scipy-0.19.1/reference/generated/scipy.signal.hamming.html
Kamu bisa mencoba beragam windowing seperti
    Triangular window
    Parzen window
    Welch window
    Sine window
    Cosine-sum windows
    Blackman window
Lebih jelasnya ref: https://en.wikipedia.org/wiki/Window_function

Sekarang kamu bisa melihat penerapan hamming window dibawah ini , dengan tiap ujung lebih halus
 

Operasi Powering

Tiap – tiap block akan diberikan powering agar terlihat peak-peak sinyal, dengan rumus berikut

Makin jelas perbedaannya, hal ini bisa dikatakan bahwa area sinyal terdiri dari 6 sinyal.


Penentuan Nilai Ambang Batas dan Peak Powering

Hal penting selanjutnya yaitu penentuan ambang batas, dalam kasus ini dibuat 0.5 serta dicari peak powering (titik bulatan) seperti berikut
 
Sehingga sinyal suara akan terlihat jelas lagi yaitu bagian yang diberi warna biru
 
Setelah ditemukan titik-titik peaknya, maka hasil akhir sebagai berikut yaitu reverse dari area block yang diindikasikan sebagai area sinyal akan diberi warna-warna selain biru.
 
Akhirnya kita bisa memisahkan 6 sinyal secara berurutan yaitu terdapat 6 suara (voice) yang terpisah dengan non suara (unvoiced) berdasarkan amplitudo nya yang rendah, biar lebih jelasnya ditampilkan dalam versi 3 Dimensi secara berurutan.
 
Selesai sudah pembahasan kita mengenai pemisahan suara yang berurutan, penulis sengaja membuat semuanya dalam bentuk plotting grafik di Matlab agar kalian mudah memahami secara visual step by stepnya, secara code menjadi rumit untuk menampilkan visualisasi diatas.

untuk pembahasan selanjutnya cukup rumit yaitu pemisahan sinyal yang berbunyi secara bersama-sama, tentu teknik yang digunakan akan berbeda yaitu menggunakan analisis frekuensi, seperti gambar berikut jika 6 nada dibunyikan secara bersama-sama, maka secara visual menjadi seperti berikut:


Semuanya hampir mirip satu sama lainnya secara domain waktu.

Dukung blog ini agar menjadi lebih baik dengan cara subscribe email mu panel dibagian kanan

No comments: