Pengenalan Jenis Mesin Motor Menggunakan Metode MFCC dan K-Nearest Neighbor


Pengolahan audio (Audio Processing) adalah cabang dari pengolahan sinyal digital yang fokus pada manipulasi dan analisis sinyal suara. Ini melibatkan berbagai tugas yang bertujuan untuk memahami, memanipulasi, dan meningkatkan informasi yang terkandung dalam sinyal audio.

Suara Knalpot Motor (Istockphoto/Corosukechan3)

Dalam dunia otomotif, motor adalah salah satu alat transportasi yang sangat umum digunakan. Jenis mesin motor yang paling umum adalah mesin 2 tak dan 4 tak. Mesin-mesin ini memiliki karakteristik suara yang berbeda ketika beroperasi. Mesin 2 tak cenderung menghasilkan suara yang lebih berat dan berdenyut, sementara mesin 4 tak menghasilkan suara yang lebih halus dan stabil.

Motor 2 tak dan 4 tak (https://moladin.com)

Dalam artikel ini, akan dibahas tentang pengembangan sistem pengenalan jenis mesin motor berdasarkan suara yang dihasilkan oleh mesin tersebut. Metode yang digunakan untuk ekstraksi ciri adalah Mel-Frequency Cepstral Coefficients (MFCC), dan untuk pengenalan jenis mesin motor digunakan metode K-Nearest Neighbor (K-NN). Selain itu, sistem ini juga memiliki kemampuan untuk membaca taraf intensitas bunyi dalam satuan desibel (dB).

Metode Ekstraksi Ciri dengan MFCC

Mel-Frequency Cepstral Coefficients (MFCC) adalah metode yang umum digunakan dalam pemrosesan suara untuk mengekstraksi ciri-ciri penting dari sinyal audio. Proses ekstraksi MFCC melibatkan beberapa langkah sebagai berikut:

  1. Pengambilan Sampel: Sinyal suara dari mesin motor diambil dalam bentuk gelombang suara digital.
  2. Pre-Emphasis: Langkah awal adalah menerapkan filter pre-emphasis untuk meningkatkan amplitudo frekuensi tinggi dalam sinyal, membantu dalam deteksi ciri-ciri penting.
  3. Framing: Sinyal dibagi menjadi beberapa frame dengan durasi tertentu, biasanya sekitar 20-30 milidetik per frame.
  4. Transformasi Fourier: Setiap frame kemudian diubah menjadi domain frekuensi menggunakan transformasi Fourier.
  5. Filter Bank: Dalam langkah ini, digunakan filter bank yang merupakan kumpulan filter dengan lebar pita frekuensi yang berbeda untuk menghitung spektrum daya pada setiap frame.
  6. Logarithmic Compression: Hasil dari filter bank diubah menjadi skala logaritmik untuk meniru respons pendengaran manusia terhadap berbagai frekuensi.
  7. Discrete Cosine Transform (DCT): DCT digunakan untuk menghasilkan koefisien-koefisien cepstral yang akhirnya menjadi ciri-ciri MFCC.

Setelah ekstraksi MFCC selesai, ciri-ciri ini digunakan sebagai input untuk sistem pengenalan jenis mesin motor.

Mel-Frequency Cepstral Coefficients (MFCC)
(Engel, Zbigniew & Kłaczyński, Maciej & Wszołek, Wiesław. (2007). A Vibroacoustic Model of Selected Human Larynx Diseases. International journal of occupational safety and ergonomics : JOSE. 13. 367-79. 10.1080/10803548.2007.11105094)

Pengenalan Jenis Mesin Motor Menggunakan K-Nearest Neighbor

Metode K-Nearest Neighbor (K-NN) adalah salah satu metode klasifikasi yang paling sederhana dan efektif dalam pengenalan pola. Dalam konteks pengenalan jenis mesin motor berdasarkan suaranya, langkah-langkah K-NN adalah sebagai berikut:

  1. Pelatihan: Data pelatihan yang terdiri dari ciri-ciri MFCC dari berbagai sampel suara mesin motor 2 tak dan 4 tak digunakan untuk melatih model K-NN.
  2. Pengujian: Suara dari mesin motor yang tidak diketahui jenisnya diambil dan diekstraksi ciri MFCC-nya.
  3. Perhitungan Jarak: Jarak antara ciri-ciri suara pengujian dengan ciri-ciri suara pelatihan dihitung, misalnya menggunakan jarak Euclidean.
  4. Pemilihan Tetangga Terdekat: Beberapa tetangga terdekat (K tetangga terdekat) dengan jarak terpendek dipilih.
  5. Klasifikasi: Jenis mesin motor dari K tetangga terdekat diambil mayoritasnya, dan itu menjadi prediksi jenis mesin motor dari suara pengujian.

Pengukuran Taraf Intensitas Bunyi dalam dB

Sistem ini juga memiliki kemampuan untuk membaca taraf intensitas bunyi dalam satuan desibel (dB). Ini dapat memberikan informasi tambahan tentang kebisingan suara mesin motor selama operasi.

Sistem Pengenalan Jenis Mesin Motor (Kelas: 2 tak)

Berikut ini pemrograman MATLAB untuk sistem pengenalan jenis mesin motor menggunakan metode MFCC dan K-Nearest Neighbor:

Langkah 1: Membaca dan Memproses Sinyal Suara

% Membaca sinyal suara dari file audio (contoh: suara.wav)
[audio_signal, fs] = audioread('suara.wav');

% Menghitung panjang sinyal
signal_length = length(audio_signal);

Langkah 2: Menghitung Intensitas Bunyi dalam dB

% Menghitung energi sinyal
signal_energy = sum(audio_signal.^2);

% Menghitung intensitas bunyi dalam dB
intensity_dB = 10 * log10(signal_energy / (signal_length * (1/fs)^2));

% Menampilkan hasil intensitas bunyi
disp(['Intensitas Bunyi (dB): ', num2str(intensity_dB)]);

Langkah 3: Ekstraksi Ciri Suara dengan MFCC

% Fungsi untuk ekstraksi ciri MFCC dari suara motor
function mfcc_features = extractMFCCFeatures(audio_signal)
    % Menerapkan filter pre-emphasis
    pre_emphasized_signal = filter([1 -0.97], 1, audio_signal);

    % Pembagian sinyal menjadi frame-frame
    frame_length = 0.025; % Durasi frame dalam detik
    frame_overlap = 0.01; % Jumlah tumpang tindih antara frame dalam detik
    frame_size = round(frame_length * fs);
    frame_step = round(frame_overlap * fs);
    frames = buffer(pre_emphasized_signal, frame_size, frame_step, 'nodelay');

    % Menghitung MFCC
    num_coeffs = 13; % Jumlah koefisien MFCC yang akan diekstraksi
    mfcc_features = mfcc(frames, fs, 'NumCoeffs', num_coeffs);
end

Langkah 4: Pelatihan Model K-Nearest Neighbor

% Data pelatihan
train_data = [mfcc_features_motor_2tak; mfcc_features_motor_4tak]; % Ciri-ciri MFCC dari motor 2 tak dan 4 tak
labels = [ones(size(mfcc_features_motor_2tak, 1), 1); 2 * ones(size(mfcc_features_motor_4tak, 1), 1)]; % Label 1 untuk motor 2 tak, 2 untuk motor 4 tak

% Pelatihan model K-Nearest Neighbor
k = 3; % Jumlah tetangga terdekat yang akan digunakan
mdl = fitcknn(train_data, labels, 'NumNeighbors', k);

Langkah 5: Pengujian dan Klasifikasi

% Ekstraksi ciri MFCC dari suara yang akan diuji
mfcc_features_to_test = extractMFCCFeatures(audio_signal_to_test);

% Klasifikasi dengan model K-Nearest Neighbor
predicted_label = predict(mdl, mfcc_features_to_test);

% Menampilkan hasil klasifikasi
if predicted_label == 1
    disp('Suara motor adalah jenis 2 tak.');
else
    disp('Suara motor adalah jenis 4 tak.');
end

Sistem Pengenalan Jenis Mesin Motor (Kelas: 4 tak)

Dalam artikel ini, telah dibahas tentang pengembangan sistem pengenalan jenis mesin motor berdasarkan suara menggunakan metode MFCC dan K-NN. Sistem ini dapat mengidentifikasi apakah suara berasal dari mesin motor 2 tak atau 4 tak berdasarkan ciri-ciri suara yang diekstraksi. Selain itu, sistem ini juga dapat membaca taraf intensitas bunyi dalam satuan dB untuk memberikan informasi tambahan tentang tingkat kebisingan. Dengan perkembangan teknologi seperti ini, pengawasan dan perawatan mesin motor dapat menjadi lebih efisien dan akurat.

Posted on September 19, 2023, in Pengolahan Sinyal and tagged , , , , , , , , , , , . Bookmark the permalink. Leave a comment.

Leave a comment