Anda di halaman 1dari 20

FINAL PROJECT REPORT

SIGNAL AND SYSTEM CLASS

Reducing various types of noises present in the speech


using Convolutional Neural Networks (CNNs)

CREATED BY :
Muhammad Fikri Mumtaz 02311840000115

ENGINEERING PHYSICS DEPARTEMENT


FACULTY OF INDUSTRIAL TECHNOLOGY
SEPULUH NOPEMBER INSTITUTE OF
TECHNOLOGY SURABAYA
2020
BAB I

PENDHULUAN

1.1 Latar Belakang

Pengurangan noise adalah masalah yang sudah berlangsung lama. Dengan adanya input
sinyal noise, tujuannya adalah untuk menyaring noise tersebut tanpa menurunkan sinyal yang
diinginkan. contoh di kehidupan sehari - hari kita dapat membayangkan seseorang berbicara dalam
konferensi video sementara musik diputar di latar belakang. Dalam situasi ini, sistem pengurangan
suara ucapan memiliki tugas untuk menghilangkan kebisingan latar belakang untuk meningkatkan
sinyal ucapan. Aplikasi ini sangat penting untuk konferensi video dan audio, di mana noise dapat
menurunkan kejelasan ucapan secara signifikan. Untuk pengurangan noise biasanya menggunakan
pemodelan generatif mengunakan metode statistik seperti "Gaussian Mixtures" dengan
memperkirakan noise yang diinginkan dan kemudian memulihkan sinyal noise yang dihilangkan.
Namun, dalam perkembangannya dalam situasi ini ketika banyak data tersedia, deep learning sering
kali menjadi solusi.
Pada problem final project kali ini, mahasiswa akan melakukan pengurangan noise dengan
menggunakan Convolutional Neural Networks (CNNs). Dengan adanya sinyal input noise, Di final
project ini fokus pada pemisahan sumber sinyal ucapan biasa dari kebisingan yang sering
ditemukan di lingkungan perkotaan.

1.2 Rumusan Masalah

Berdasarkan yang telah dipaparkan di atas, maka dapat disusun suatu rumusan masalah
yaitu:
a. Bagaimana cara mengurangi berbagai jenis noise yang ada dalam suara menggunakan
Convolutional Neural Networks?

1.3 Tujuan

Berdasarkan yang telah dipaparkan di atas, maka dapat disusun suatu tujuan untuk
menyelesaikan rumusan masalah yaitu:

a. Mengetahui cara mengurangi berbagai jenis noise yang ada dalam suara menggunakan
Convolutional Neural Networks.
BAB II
DASAR TEORI
2.1 Frequency Domain Loss Function

Diberikan vektor bernilai nyata xt berukuran N dalam domain waktu, kita dapat mengubahnya
menjadi domain frekuensi dengan mengalikannya dengan transformasi fourier diskrit bernilai
kompleks (DFT) matriks D menggunakan persamaan berikut

dimana xf adalah DFT dari xt dan D berukuran N x N. Sejak xt bernilai riil, relasi dalam
persamaan diatas dapat ditulis ulang sebagai

Dr dan Di adalah matriks bernilai nyata yang dibentuk dengan mengambil bagian nyata dan
imajiner dari D dan i menunjukkan unit imajiner. Relasi ini dapat dipisahkan menjadi dua
Persamaan yang hanya melibatkan vektor bernilai nyata seperti yang diberikan dalam persamaan
berikut

Di sini, xfr dan xfi adalah vektor bernilai riil yang dibentuk dengan mengambil bagian dari nilai
nyata dan imajiner dari xf. frequency domain loss dapat didefinisikan menggunakan xfr dan xfi.
Salah satu yang dapat mendefinisikan loss sebagai rata-rata MSE pada bagian nyata dan imajiner
xf adalah:

di mana 𝒙̂f adalah perkiraan dari xf. x(n) menunjukkan nth komponen ke x. Perlu dicatat bahwa
fungsi kerugian ini memiliki besaran dan fasa karena menggunakan nilai real, juga sebagai bagian
imajiner. Namun, diketahui bahwa menggunakan keduanya, besaran dan fase tidak memberikan
kinerja yang baik karena hanya menggunakan besarannya. Jadi, kami menggunakan kerugian
berikut fungsi yang didefinisikan hanya dengan besaran.

Kerugian juga dapat digambarkan sebagai kerugian MAE dimana antaraperkiraan magnitudo
STFT dan besaran STFT yang bersih, ketika besaran bilangan kompleks ditentukan menggunakan
norma L1, dibandingkan juga fungsi kerugian dengan kerugian L2 maka didefinisikan sebagai

Di sini, α adalah konstanta positif kecil yang ditambahkan untuk menstabilkan training. Dari hasil
pengamatan terbaru, bahwa kerugian MAE bekerja lebih baik dalam hal skor kualitas obyektif
ketika DNN berbasis pemetaan spektral yang dilatih. Pada gambar 2.1. menunjukkan diagram
skema untuk menghitung frequency domain loss dari frame domain waktu yang ditingkatkan.
model yang diusulkan beroperasi pada ukuran bingkai 2048 sampel. Artinya dibutuhkan input
frame berdurasi 128 ms dengan frekuensi sampling 16 kHz, dan mengeluarkan sebuah bingkai
dengan panjang yang sama. Semua bingkai ucapan yang ditingkatkan di output jaringan
digabungkan menggunakan overlap – and - add (OLA) untuk mendapatkan ucapan yang
disempurnakan. Pergeseran bingkai dari 256 sampel digunakan untuk OLA. Ucapan yang
ditingkatkan dibagi menjadi frame berukuran 512. Frame yang didapat adalah

Gambar 2.1. Diagram Skema untuk menghitung frequency domain loss


2.2. Convolutional Network Architecture
Pada final project ini menggunakan jaringan neural konvolusional penuh yang terdiri dari
rangkaian lapisan konvolusional dan dekonvolusional. kemudian, dijelaskan operasi konvolusi
dan dekonvolusi dan kemudian model yang digunakan.

2.2.1. Konvolusi
Pperator konvolusi diskrit 1-D ∗, yang mengkonvolusi sinyal f dengan kernel k berukuran 2m + 1
dan dengan langkah r, didefinisikan sebagai

di mana p, s ∈ Z dan t ∈ [−m, m] ∩ Z. Di sini, Z menunjukkan set bilangan bulat. Langkah


konvolusi yang digunakan dalam pekerjaan ini adalah untuk mengurangi ukuran pada keluaran
dengan menggeser kernel yang melewati sinyal input dengan langkah lebih besar dari satu.
Misalnya, diberi masukan dengan panjang 2N, ukuran kernel 2m + 1 dan padding bernilai nol
dengan ukuran m di kedua sisi input, sebuah konvolusi dengan stride bernilai 2 akan menghasilkan
keluaran berukuran N. Oleh karena itu, masukan ukuran 2N secara efektif diturunkan sampelnya
menjadi keluaran N.

2.2.2. Dekonvolusi
Lapisan dekonvolusi, juga dikenal sebagai transposed covolution, adalah konvolusi yang
dimaksudkan untuk memperbesar ukuran pada hasil. Untuk dekonvolusi dengan panjang langkah
r, r – 1 nol pertama kali disisipkan di antara sampel yang berurutan dari sinyal masukan. Maka itu
adalah no di kedua sisi dengan jumlah yang sesuai sehingga konvolusi dengan kernel size k dan
stride 1 menghasilkan output dengan ukuran yang diinginkan. Untuk Misalnya, diberi masukan
dengan panjang N, ukuran kernel (2m + 1), dan langkah 2, pertama, satu nol akan disisipkan di
antara sampel input yang berurutan, memberikan sinyal panjang 2N - 1. Kemudian sinyal akan
kosong di kiri dan kanan dengan m dan m + 1 masing-masing untuk mendapatkan sinyal panjang
2N + 2m. Setelah ini, konvolusi dengan filter ukuran 2m + 1 akan menghasilkan keluaran
berukuran 2N. Oleh karena itu masukan ukuran N secara efektif ditingkatkan sampelnya menjadi
keluaran berukuran 2N.

2.2.3. Permodelan
Dengan menggunakan neural konvolusional sepenuhnya berbasis autoencoder, jaringan dengan
step connection yang pertama kali diusulkan pada domain waktu untuk peningkatan suara yang
diadopsi dari U-Net. Diagram skematis dari model yang ditampilkan pada Gambar. 2, pada lapisan
pertama dari encoder adalah lapisan konvolusional yang meningkatkan jumlah saluran dari 1
hingga 64. Masing-masing dari delapan lapisan berikutnya secara berturut-turut mengurangi
dimensi sinyal input menggunakan konvolusi dengan langkah 2, baik untuk menggandakan atau
mempertahankan jumlah saluran. keluaran akhir encoder berukuran 8 dengan 256 saluran.decoder
mencerminkan encoder, yang terdiri dari delapan lapisan seri dekonvolusional dengan stride 2 yang
menggandakan dimensi inputnya membuat jumlah saluran sama seperti pada lapisan simetris yang
sesuai dari encoder. Output dari setiap lapisan di decoder digabungkan dengan keluaran dari
lapisan simetris yang sesuai dari pembuat enkode di sepanjang sumbu saluran. [1]

2.2.4. Redundant CED Network (R-CED)


R-CED terdiri dari konvolusi yang berulang, batch yang di normalisasi, dan aktivasi lapisan layer
ReLU (Pada gambar 2.2. setiap blok mewakili fitur). Tidak ada Pooling Layer, sehingga tidak
diperlukan lapisan pengambilan sampel. R-CED mengkodekan fitur ke dimensi yang lebih tinggi
di sepanjang encoder dan mengkompresi decoder tersebut. di encoder, jumlah filter secara
bertahap ditingkatkan, dan di decoder, jumlah filter secara bertahap dikurangi.

Gambar 2.2. Modified Convolutional Encoder-Decoder Network (CED)

2.2.4.1. Cascaded R-CED Network (CR-CED):


Jaringan Encoder-Decoder Konvolusional Redundan Bertingkat (CR-CED) adalah variasi dari
jaringan R-CED. Terdiri dari pengulangan Jaringan R-CED. Dibandingkan dengan R-CED
dengan ukuran jaringan yang sama dan juga jumlah parameter yang sama, CR-CED
mempunyai kinerja yang lebih baik dengan waktu konvergensi yang lebih sedikit.

Gambar 2.3. Proposed Redundant CED (R-CED)


2.2.5. Bypass Connections
Untuk R-CED, dan CR-CED, bypass connection ditambahkan ke jaringan untuk melakukan
pengoptimalan dalam fase traing dan peningkatan kinerja.

2.2.6. 1-Dim Convolution Operation for Convolution Layers


Pada semua lapisan konvolusi, konvolusi dilakukan hanya dalam 1 arah. Dalam Gambar 2.3, input
(3 x 3 matriks putih) dan filter (2 x 3 matriks biru) memiliki dimensi yang sama dalam sumbu
waktu, dan konvolusi dilakukan pada sumbu frekuensi. [2]

Gambar 2.3. (kiri) 1-d konvolusi, (kana) 2-d konvolusi


BAB III

METODOLOGI

3.1 Alat dan Bahan


Pada percobaan final project sinyal menggunakan alat dan bahan berupai yaitu:
a. Laptop
b. Google Colab
c. Internet
d. Dataset audio
e. Python

3.2 Langkah Percobaan


A. Persiapan Modul
Pada tahap ini kita melakukan persiapan environtment dan modul seperti gambar 3.1
1. Pertama dilakukan installasi framework untuk membuat model machine learning yaitu
menggunakan tensorflow
2. Dilakukan proses installasi grpcio untuk membangun layanan API ( Application
Programming Interface ) pada google colab
3. Dilakukannya install keras tuner untuk melakukan per hypermodelan pada google colab
4. Kemudian dari keras dilakukan instalasi keras rectified adam untuk mendapatkan neural
network yang lebih akurat dan menyelesaikan epoch lebih singkat
5. kemudian dilakukan import os dan import utility yang lainnya gunanya untuk menetapkan
path ke modul secara spesifik

Gambar 3.1. Persiapan Modul pada Google Colab


B. Menyiapkan Dataset
1. Dilakukan import file zip untuk membaca file zip dan dilakukan proses mendownload
dataset dari link url, setelah didownload maka dataset akan tersimpan di direktori "dataset",
kemudian dari dataset tersebut berisi 3 file yaitu suara manusia pada folder "en", suara noise
audio pada folder "UrbanSound8k" dan folder "tfrecords" yang berisi file training dan
validation
2. Dimasukkan alamat direktori training file "train_tfrecords_filenames", dan juga validation
file pada bagian "val_tfrecords_filenames"
3. Dilakukan proses kalkulasi sinyal Short Time Fourier Transform (STFT) maka perlu
didefinisikan pada windowLength = 256; overlap, inputFs = 48.000; dan fs = 16.000

Gambar 3.2. Persiapan Dataset

C. Melatih Model ( Model Training )


1. Dilakukannya import Conv2D, Input, LeakyReLU, Flatten, Dense, Reshape,
Conv2DTranspose, BatchNormalization, Activation, model, dan Sequential
2. Kemudian didefinisikan bentuk dari convolutional blok tersebut
3. Dilakukan definisi penuh dari pengaktifan block dari konvolusi
4. Didefinisikan model dari sequential yang berupa sequential network, lalu dilakukan input
berupa nilai x, lalu dikonvolusi dengan dimasukkan audio input lewat filter konvolusional
5. Lalu, dari setelah dilakukan keluaran nilai dari model, dioptimalkan menggunakan adam
optimizer untuk perbedaan Mean Square Error (MSE) antara sinyal output dan juga audio
yang bersih tidak ada noisenya
6. Kemudian, didefinisikan sinyal ke rasio distorsi
Gambar 3.3. Pelatihan Model ( Model Training )
7. Setelah itu dilakukan permodelan dataset training file dengan iterasi epoch sebesar 25
dengan tiap masing - masing epoch adalah 600, maka didapat 4 nilai yaitu loss, root mean
square error, val_loss, dan juga val_rmse

Gambar 3.2. Iterasi Epoch selama 25 kali


D. Tes Audio
1. Dilakukan definisi untuk read_audio supaya file suara dapat dibaca google colab, lalu
write_audio untuk menulis ulang audio yang ada di direktori, dan add noise to clean audio
supaya noise bisa digabung pada suara audio yang bersih (clean audio), dan didefinikan
play supaya audio bisa diputar pada google colab
2. Dilakukan definisi pada FeatureExtrator supaya bisa mengekstrak fitur dari model yang
sudah dilatik pada model training
3. Dilakukan proses pembacaan suara noise melalui directori
4. Dilakukan definisi dari prepare_input_feature untuk menghindari perbedaan antara fase
noise dan bersih
5. Lalu, didefinisikan juga prediktor yang digunakan untuk analisis regresi dimana pada
variabel prediktor memberikan informasi terkait variabel mengenal hasil tertentu
6. Lalu dilakukan Short Time Fourier Transform Konvolusi (STFTFullyConvolutional)
dengan diinputnya nilai dari model prediktor
7. Kemudian didefinikan revert_feature_to_audio dimana kita mengembalikan skala output
ke bentuk originalnya
8. Didapatkan proses pembacaan untuk audio yang noise sudah berkurang pada
denoiseAudioFullyConvolutional
9. Setelah itu bisa didapatkan grafik dan spectrogram dari masing - masing audio
BAB IV
ANALISIS DATA DAN PEMBAHASAN

4.1 Analisis Data


Dari percobaan yang telah dilakukan pada final project ini didapatkan hasil yaitu plot dan
spectogram seperti gambar – gambar dibawah ini.
Didapatkan bentuk gelombang untuk audio bersih (clean audio), suara background noise
(noise audio) dan suara campuran audio bersih dan noise (noisy audio)

Gambar 4.1. Clean Audio

Gambar 4.2. Noise Audio


Didapatkan bentuk gelombang dan spectogram pada suara campuran yaitu suara manusia
ditambah dengan suara noise menjadi noisy audio seperti pada gambar dibawah ini.

Gambar 4.3. waveform dari noisy audio

Gambar 4.4. Sinyal sample yang diperbesar pada 2000 – 2100


Gambar 4.5. Spectrogram dari noise audio

Kemudian, didapatkan bentuk gelombang dan spectogram pada noise reduction audio

Gambar 4.6. Waveform dari reduction noise audio


Gambar 4.7. Sinyal sample yang diperbesar pada 2000 - 2100

Gambar 4.8. spectogram dari sinyal noise reduction audio


Gambar 4.9. Iterasi EPOCH sebesar 25 kali

4.2 Pembahasan
Dari percobaan yang sudah dilakukan, dataset terdiri dari suara manuasia yaitu pada folder
“en” dan suara noise audio pada folder “UrbanSound8K”, lalu ada “val_tfrecord” dan
train_tfrecord” pada folder “tfrecord” untuk dimasukkan kedalam tensorflow. Percobaan dilakukan
memasukkan file dataset pada google colab kemudian menginstall environtment didalamnnya lalu
melakukan import direktori yang dibutuhkan dari google colab seperti ditunjukkan pada gambar
3.1 dan men set “random seed” sebesar 999 yang gunanya untuk mereprodusivitas dari sistem yang
kita arahin agar selalu sama, jika membahasa training dan data Machine Learning banyak data
random yang perlu di generate maka diperlukannya seed. Lalu, file dari dataset diarahkan pada
folder path yang tersedia pada google colab seperti pada gambar 3.2. Kemudian untuk mentraining
model kita melakukannya dengan melakukan Convolutional Neural Nework di mana pada CNN
ini menggunakan Cascaded Redundant Convolutional Encoder-Decoder Network. Pada model ini
menggunakan dasar arsitektur encoder-decoder yang simetris. Pada komponen didalamnya ada
blok untuk konvolusi untuk menempatkan suara input melalui serangkaian filter dari
konvolusional, kemudian Rectified linear unit (ReLU) untuk melalukan training lebih cepat dan
efektif untuk memetakan nilai negatif menjadi 0 (nol) serta mempertahankan nilai dari postif, lalu
ada batch normalization untuk dilakukan normalisasi, mengubah range data pada bagian ini. Pada
model terdapat nilai paramaeter yaitu 32,933. Didalam training model juga ada skip connection
pada bagian antara encoder dan juga decoder, dimana fungsi dari skip connection adalah untuk
mempercepat konvergensi dan mengurangi gradient yang hilang. Pada jaringan Cascaded
Redundant Convolutional Encoder – Decoder Networks, konvolusi hanya dilakukan pada satu
dimesi, pada spektrum yang diinput dengan bentuk (129 x 8), konvolusi dilakukan hanya pada
sumbu frekuensi, agar frekuensi tetap konstan selama forwading propagation yaitu proses
bagaimana sebuah neural network membuat prediksi, dimana data input diteruskan melalui layer
network ke layer akhir dan akhirnya mengeluarkan prediksi. Kemudian ketika network sudah
memproduksi nilai output dari snyal dilakukan optimasi dengan meminimize atau mengecilkan
Mean Sqaured Difference (MSE) antara output sinyal dan juga target dari sinyal yaitu audio yang
bersih tidak ada noise (clean audio). Pada gambar 4.1 ditampilkan visual dari sinyal input bersih
dari suara manusia dengan menggunakan bahasa inggris selama 3 detik, lalu pada gambar 4.2.
ditampilkan juga suara noise dari dari anjing yang sedang menggonggong dan pada gambar 4.3.
ialah gabungan suara dari suara manusia dan noise menjadi nosy audio. Jika diperhatikan, kekuatan
dari noise di set sehingga rasio dari sinyal ke noise adalah 0 db (desibel). Pada rasio lebih dari 1:1
( atau lebih besar dari 0 db) maka diketahui bahwa sinyal nya lebih banyak ketimbang noise
tersebut. Dari percobaan dilakukan dengan menurunkan sampel dari sinyal audio yang ada menjadi
8000 kHz dan juga menghapus frames yang ada didalamnya, dengan tujuan adalah untuk
mengurangi ukuran jumlah data dan komputasi. Data audio berbeda dengan data gambar karena
CNN yang digunakan untuk mereduksi noise yang ada pada audio, maka kita mempunyai data deret
waktu satu dimensi, maka diperlukannya untuk diubah menjadi 2 dimensi (waktu/frekuensi). Dari
hasil percobaan pada data training, dalam proyek ini memakan waktu sekitar 3 jam 33 menit dengan
EPOCH sebesar 25 dengan per 1 EPOCH adalah 600. Didapat nilai RMSE 0,3093 dan Loss sebesar
0,0957. Nilai tersebut merupakan error dari percobaan. Semakin besar nilai ini, akan berdampak
pada semakin besar pula kesalahannya. sebaliknya, semakin kecil nilai dari RMSE maka semakin
kecil nilai dari kesalahan tersebut. Hasil akhir dari proyek ini adalah noisy audio pada gambar 4.3.
- 4.5 dan suara noisy yang sudah direduksi yaitu reduction audio pada gambar 4.6 – 4.8 didapat
grafik spektogram dengan sampling rate yaitu 16.000 sampel per detik dengan besar dari sinyal
nya yaitu 56064 sampel yang menunjukkan grafik frekuensi terhadap waktu menggunakan Short
Time Fourier Transform dimana pada noise reduction terjadi pengecilan frekuensi suara, hal ini
disebabkan karena sewaktu noise dilakukan reduksi spektrum dari suara akan sedikit menghilang
sehingga mengurangi kualitas dan frekuensi suara. Hal lain juga bisa jadi di akibat kan dari nilai
Loss dan RMSE pada saat melakukan training data yang hanya dilakukan dengan jumlah training
data hanya sebesar 10% saja.
BAB V

KESIMPULAN DAN SARAN

5.1 Kesimpulan
1. Dari percobaan yang telah dilakukan pada proyek ini, disimpulkan bahwa noise bisa
dilakukan dengan mereduksi suara yang ada didalamnya, akan tetapi suara noise tidak akan
menghilang secara sepenuhnya dikarenakan itu juga akan mereduksi suara dari spektrum
audio tersebut.
2. Didapat nilai RMSE 0,3093 dan Loss sebesar 0,0957. Nilai tersebut merupakan error dari
percobaan. Semakin besar nilai ini, akan berdampak pada semakin besar pula kesalahannya.
sebaliknya, semakin kecil nilai dari RMSE maka semakin kecil nilai dari kesalahan tersebut.

5.2. Saran
Disarankan mahasiswa untuk lebih teliti dalam melakukan analisis data yang ada pada google
colab, dan mempersiapkan internet dengan kuota yang besar dikarenakan jumlah dataset yang
sangat besar
DAFTAR PUSTAKA

[1]. Pandey A, Wang D. A new framework for CNN-based speech enhancement in the time domain.
IEEE/ACM Transactions on Audio, Speech, and Language Processing. 2019 Apr 29;27(7):1179 -
88.
[2]. Park SR, Lee J. A fully convolutional neural network for speech enhancement. arXiv preprint
arXiv:1609.07132. 2016 Sep 22.
LAMPIRAN

https://drive.google.com/file/d/1p9zMCjGywdoMl0WDcQr-0skvq5GnNZas/view?usp=sharing

Anda mungkin juga menyukai