Categories
DSP FPGA

Digital Signal Processing and Deep Learning – Bisa.AI dan APTIKOM DIY

Rekaman live Sabtu, 4 Juli 2020

Pada Roundtable ini akan membahas mengenai Digital Signal Processing dan Deep Learning dengan narasumber:

  • Dr. Agfianto Eko Putra (Dosen DIKE, Fak. MIPA, Universitas Gadjah Mada, Ketua Aptikom Daerah Istimewa Yogyakarta) — Pembahasan: digital signal processing untuk kasus speech signal dan seismic dengan MATLAB;
  • M. Octaviano Pratama, M.Kom (Chief Scientist BISA AI) — Pembahasan: klasifikasi low level dan high level speech feature dengan Deep Learning;
klik disini untuk link YOUTUBE-nya . Terima kasih dan semoga bermanfaat.
Categories
DSP

Pemisahan Derau dan Suara – Speech Noise Reduction

Dalam suatu sistem perekaman suara, dilakukan perekaman suara secara digital dalam suatu area yang berisik dengan frekuensi cuplik 8 kHz. Dianggap bahwa rekaman suara yang dihasilkan mengandung informasi mulai dari hingga 1800 Hz, sehingga kita bisa merancang sebuah tapis lolos-rendah (low-pass) yang akan menahan derau antara 1800 Hz hingga batasan Nyquist, 4000 Hz (separo dari frekuensi cuplik 8000 Hz).

Berikut spesifikasi Tapis kita:

  • Tipe Tapis = FIR lolos-rendah (lowpass FIR filter)
  • Jangkauan Frekuensi Passband = 0 – 1800 Hz
  • Riak (ripple) pada Passband = 0,02 dB
  • Jangkauan Frekuensi Stopband = 2000 – 4000 Hz
  • Pelemahan (attenuation) pada Stopband = 50 dB
  • Tipe Jendela = Hamming
  • Jumlah koefisien = 133
  • Frekuensi cutoff = 1900 Hz

Fungsi jendela menggunakan persamaan-persamaan berikut:

Selanjutnya dibuat skrip fungsi firwd(N,Ftype,WnL,WnH,Wtype) yang digunakan untuk membuat tapis menggunakan jendela dengan listing sebagai berikut…

function B=firwd(N,Ftype,WnL,WnH,Wtype)
 %  B = firwd(N,Ftype,WnL,WnH,Wtype)
 %  Rancang Tapis FIR menggunakan metode Fungsi Jendela
 %  Parameter2 masukan:
 %  N: jumlah koefisien (tap) tapis FIR
 %     Catatan: Harus bilangan ganjil.
 %  Ftype: Tipe tapis
 %	1.  Tapis Low-pass ;
 %   2.  Tapis High-pass;
 %	3.  Tapis Bandpass;
 %   4.  Tapis Bandstop.
 %  WnL: Frekuensi cutoff bawah (radian), WnL=0 untuk Tapis Highpass
 %  WnH: Frekuensi cutoff atas (radian), WnH=0 untuk Tapis Lowpass.
 %  Wtype: tipe fungsi jendela
 %	1.  Jendela Rectangular;
 %   2.  Jendela Triangular;
 %	3.  Jendela Hanning;
 %   4.  Jendela Hamming;
 %	5.  Jendela Blackman;
 % Keluaran:
 % B: Koefisien2 Tapis FIR.
 %
 M=(N-1)/2;
 hH=sin(WnH*[-M:1:-1])./([-M:1:-1]*pi);
 hH(M+1)=WnH/pi;
 hH(M+2:1:N)=hH(M:-1:1);
 hL=sin(WnL*[-M:1:-1])./([-M:1:-1]*pi);
 hL(M+1)=WnL/pi;
 hL(M+2:1:N)=hL(M:-1:1);
 if Ftype == 1
    h(1:N)=hL(1:N);
 end
 if Ftype == 2
    h(1:N)=-hH(1:N);
    h(M+1)=1+h(M+1);
 end
 if Ftype ==3
    h(1:N)=hH(1:N)-hL(1:N);
 end
 if Ftype == 4
    h(1:N)=hL(1:N)-hH(1:N);
    h(M+1)=1+h(M+1);
 end
 % Fungsi-fungsi jendela;
 if Wtype ==1
    w(1:N)=ones(1,N);
 end
 if Wtype ==2
    w=1-abs([-M:1:M])/M;
 end
 if Wtype ==3
    w= 0.5+0.5*cos([-M:1:M]*pi/M);
 end
 if Wtype ==4
    w=0.54+0.46*cos([-M:1:M]*pi/M);
 end
 if Wtype ==5
    w=0.42+0.5*cos([-M:1:M]*pi/M)+0.08*cos(2*[-M:1:M]*pi/M);
 end
 B=h .* w

Fungsi firwd() ini akan kita gunakan dalam ekperimen Noise Removal kita ini. Baik, mari kita lakukan proses tapis derau langkah demi langkah sebagai berikut, kita awali dengan menutup jendela-jendela, sekalian membersihkan memori Matlab…

close all; clear all

Kita siapkan frekuensi cuplik (8000 Hz) dan periodenya (1/Fs), sekaligus membaca data yang digunakan untuk eksperimen ini (menggunakan instruksi load pada Matlab, data beserta listing program lengkap bisa diunduh disini):

fs=8000;T=1/fs;
load we.dat

Kemudian kita siapkan variabel waktunya (t). Mulai dari 0 (detik) hingga [Panjang(we)-1] dikali T (detik)…

t=[0:length(we)-1]*T;

Baik, sekarang kita siapkan deraunya. Derau berkaitan dengan data-data, tingkatnya tinggi (high level) dan bersifat broadband (nanti akan Anda lihat spektrumnya), diawali dengan 1/4 dari rerata kuadrat data…

th=mean(we.*we)/4;
v=sqrt(th)*randn([1,length(we)]);

Gabungkan derau (v) dengan sinyal aslinya (we) dan gambarkan hasilnya (dalam ranah waktu)….

x=we+v;
subplot(2,1,1);plot(t,x,’k’);
xlabel(‘Waktu (detik)’);ylabel(‘Amplitudo’);grid;

Kemudian gambarkan juga spektrumnya…

N=length(x);
f=[0:N/2]*fs/N;
Axk=2*abs(fft(x))/N;Axk(1)=Axk(1)/2;
subplot(2,1,2); plot(f,Axk(1:N/2+1),’k’);
xlabel(‘Frekuensi (Hz)’); ylabel(‘Besaran |X(f)| ‘);grid;

hasilnya…

Bagaimana? Sekarang Anda bisa melihat dengan jelas sinyal + derau dan spektrumnya. Perhatikan bentuk-bentuk ‘rumput’ pada spektrumnya (ini karena adanya derau). Selanjutnya dilakukan proses penapisan untuk mengambil (atau lebih tepatnya menahan) komponen derau. Kita siapkan frekuensi cutoff dalam radian yang dinormalisasi terhadap frekuensi cuplik (Fc/Fs) dikali dengan 2*pi…

wc=2*pi*1900/8000;

Kemudian kita siapkan tapisnya…

B=firwd(133,1,wc,0,4);

Dan akhirnya kita lakukan proses penapisan (filtering)…

y=filter(B,1,x);

Selanjutnya kita gambarkan hasilnya, sekalian spektrumnya…

Ayk=2*abs(fft(y))/N;Ayk(1)=Ayk(1)/2;
subplot(2,1,1); plot(t,y,’k’);
xlabel(‘Waktu (detik)’);ylabel(‘Amplitudo’);grid;
subplot(2,1,2);plot(f,Ayk(1:N/2+1),’k’);
xlabel(‘Frekuensi (Hz)’); ylabel(‘Besaran |Y(f)| ‘);grid;

Hasilnya…

Okey! Bandingkan kedua gambar tersebut, adakah perbedaan? Dalam ranah waktu? Dalam ranah frekuensi? Mo Jawab? Komentar? Pertanyaan? Silahkan gunakan form komentar di bawah ini…

Terima kasih, semoga bermanfaat.. Oya mo listingnya lengkap (termasuk data we.dat)? Unduh aja disini (RAR)!

Catatan:

  • Beberapa instruksi yang tidak dijelaskan dalam artikel mohon merujuk HELP-nya Matlab.

sumber:

  • Tan, Li, 2008, Digital Signal Processing: Fundamentals and Applications, Academic Press, Elsevier, USA
Categories
DSP

Pembuatan Ekualiser 10-Band Stereo Digital dengan Algoritma Penapis Lolos-pita Tanggap Impuls Tak-Hingga

ABSTRAK

Telah dibuat sebuah aplikasi ekualiser menggunakan algoritma Penapis Lolos-pita Tanggap Impuls Tak-hingga (IIRInfinite Impulse Response). Dengan ekualiser tersebut dapat diubah penguatan pada tingkat frekuensi tertentu, sehingga dapat ditonjolkan suara bass, trebel maupun vokal dari suatu sinyal audio.

Salah satu teknik dasar yang merupakan komponen utama dalam pembuatan sebuah ekualiser adalah penapisan. Teknik penapisan digunakan untuk meloloskan beberapa sinyal tertentu dan memblokade lainnya. Penapis Lolos-pita Tanggap Impuls Tak-hingga adalah salah satu teknik penapisan yang menggunakan metode rekursif (menggunakan keluaran sebelumnya sebagai masukan saat ini dan digunakan untuk mendapatkan keluaran saat ini).

PENDAHULUAN

Ekualiser merupakan salah satu komponen efek suara (sound effect) yang biasanya terdapat dalam sebuah pemutar audio. Hampir semua pemutar audio dilengkapi dengan komponen ini. Keberadaan komponen ini menjadi penting mengingat fungsinya yang dapat mengatur penguatan masing-masing pita frekuensi secara terpisah. Ekualiser digunakan untuk melakukan seleksi terhadap suatu frekuensi tertentu dan mengubah kuat bunyi (gain) pada tingkat frekuensi tersebut. Dulunya komponen ekualiser ini terdapat dalam pemutar audio dan dibuat secara perangkat keras. Namun kini dengan kemajuan teknik pemrograman dan perkembangan bahasa pemrograman dapat diprogram sebuah ekualiser yang tentu lebih murah dengan kualitas yang tak kalah dari ekualiser secara perangkat keras.

(informasi selengkapnya bisa diunduh disini)