{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "**LIBARRY**" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "import librosa\n", "import numpy as np\n", "import os\n", "import joblib\n", "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**PATH DATASET**" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "# Path dataset hasil preprocessing\n", "DATASET_PATH = \"preprocessing_data_v2\"\n", "OUTPUT_FOLDER = \"E:\\! KULIAHHH\\Ivano Kuliah\\!SEMESTER 8\\!SKRIPSI\\Data Suara\\!REVISI\\hasil_ekstrak_mfcc_v2\"\n", "\n", "# Buat folder output jika belum ada\n", "os.makedirs(OUTPUT_FOLDER, exist_ok=True)\n", "\n", "# Path penyimpanan file hasil ekstraksi\n", "OUTPUT_FEATURES = os.path.join(OUTPUT_FOLDER, \"X_train.npy\")\n", "OUTPUT_LABELS = os.path.join(OUTPUT_FOLDER, \"y_train.npy\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**PARAMETER MFCC**" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "# Parameter MFCC\n", "SAMPLE_RATE = 48000\n", "N_MFCC = 40 # Jumlah koefisien MFCC yang diambil\n", "N_FFT = 4096 # Panjang FFT\n", "HOP_LENGTH = 512 # Hop size\n", "\n", "X = [] # Menyimpan fitur MFCC\n", "y = [] # Menyimpan label kata" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**FUNGSI EKSTRASI MFCC**" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Processed: Negatif/mindrabodoh1 - Copy.wav → Label: Negatif\n", "Processed: Negatif/mindrabodoh1.wav → Label: Negatif\n", "Processed: Negatif/mindrabodoh10 - Copy.wav → Label: Negatif\n", "Processed: Negatif/mindrabodoh10.wav → Label: Negatif\n", "Processed: Negatif/mindrabodoh2 - Copy.wav → Label: Negatif\n", "Processed: Negatif/mindrabodoh2.wav → Label: Negatif\n", "Processed: Negatif/mindrabodoh3 - Copy.wav → Label: Negatif\n", "Processed: Negatif/mindrabodoh3.wav → Label: Negatif\n", "Processed: Negatif/mindrabodoh4 - Copy.wav → Label: Negatif\n", "Processed: Negatif/mindrabodoh4.wav → Label: Negatif\n", "Processed: Negatif/mindrabodoh5 - Copy.wav → Label: Negatif\n", "Processed: Negatif/mindrabodoh5.wav → Label: Negatif\n", "Processed: Negatif/mindrabodoh6 - Copy.wav → Label: Negatif\n", "Processed: Negatif/mindrabodoh6.wav → Label: Negatif\n", "Processed: Negatif/mindrabodoh7 - Copy.wav → Label: Negatif\n", "Processed: Negatif/mindrabodoh7.wav → Label: Negatif\n", "Processed: Negatif/mindrabodoh8 - Copy.wav → Label: Negatif\n", "Processed: Negatif/mindrabodoh8.wav → Label: Negatif\n", "Processed: Negatif/mindrabodoh9 - Copy.wav → Label: Negatif\n", "Processed: Negatif/mindrabodoh9.wav → Label: Negatif\n", "Processed: Negatif/mindralicik1 - Copy.wav → Label: Negatif\n", "Processed: Negatif/mindralicik1.wav → Label: Negatif\n", "Processed: Negatif/mindralicik10 - Copy.wav → Label: Negatif\n", "Processed: Negatif/mindralicik10.wav → Label: Negatif\n", "Processed: Negatif/mindralicik2 - Copy.wav → Label: Negatif\n", "Processed: Negatif/mindralicik2.wav → Label: Negatif\n", "Processed: Negatif/mindralicik3 - Copy.wav → Label: Negatif\n", "Processed: Negatif/mindralicik3.wav → Label: Negatif\n", "Processed: Negatif/mindralicik4 - Copy.wav → Label: Negatif\n", "Processed: Negatif/mindralicik4.wav → Label: Negatif\n", "Processed: Negatif/mindralicik5 - Copy.wav → Label: Negatif\n", "Processed: Negatif/mindralicik5.wav → Label: Negatif\n", "Processed: Negatif/mindralicik6 - Copy.wav → Label: Negatif\n", "Processed: Negatif/mindralicik6.wav → Label: Negatif\n", "Processed: Negatif/mindralicik7 - Copy.wav → Label: Negatif\n", "Processed: Negatif/mindralicik7.wav → Label: Negatif\n", "Processed: Negatif/mindralicik8 - Copy.wav → Label: Negatif\n", "Processed: Negatif/mindralicik8.wav → Label: Negatif\n", "Processed: Negatif/mindralicik9 - Copy.wav → Label: Negatif\n", "Processed: Negatif/mindralicik9.wav → Label: Negatif\n", "Processed: Negatif/mindrasombong1 - Copy.wav → Label: Negatif\n", "Processed: Negatif/mindrasombong1.wav → Label: Negatif\n", "Processed: Negatif/mindrasombong10 - Copy.wav → Label: Negatif\n", "Processed: Negatif/mindrasombong10.wav → Label: Negatif\n", "Processed: Negatif/mindrasombong2 - Copy.wav → Label: Negatif\n", "Processed: Negatif/mindrasombong2.wav → Label: Negatif\n", "Processed: Negatif/mindrasombong3 - Copy.wav → Label: Negatif\n", "Processed: Negatif/mindrasombong3.wav → Label: Negatif\n", "Processed: Negatif/mindrasombong4 - Copy.wav → Label: Negatif\n", "Processed: Negatif/mindrasombong4.wav → Label: Negatif\n", "Processed: Negatif/mindrasombong5 - Copy.wav → Label: Negatif\n", "Processed: Negatif/mindrasombong5.wav → Label: Negatif\n", "Processed: Negatif/mindrasombong6 - Copy.wav → Label: Negatif\n", "Processed: Negatif/mindrasombong6.wav → Label: Negatif\n", "Processed: Negatif/mindrasombong7 - Copy.wav → Label: Negatif\n", "Processed: Negatif/mindrasombong7.wav → Label: Negatif\n", "Processed: Negatif/mindrasombong8 - Copy.wav → Label: Negatif\n", "Processed: Negatif/mindrasombong8.wav → Label: Negatif\n", "Processed: Negatif/mindrasombong9 - Copy.wav → Label: Negatif\n", "Processed: Negatif/mindrasombong9.wav → Label: Negatif\n", "Processed: Negatif/naniabodoh1 - Copy.wav → Label: Negatif\n", "Processed: Negatif/naniabodoh1.wav → Label: Negatif\n", "Processed: Negatif/naniabodoh10 - Copy.wav → Label: Negatif\n", "Processed: Negatif/naniabodoh10.wav → Label: Negatif\n", "Processed: Negatif/naniabodoh11 - Copy.wav → Label: Negatif\n", "Processed: Negatif/naniabodoh11.wav → Label: Negatif\n", "Processed: Negatif/naniabodoh12 - Copy.wav → Label: Negatif\n", "Processed: Negatif/naniabodoh12.wav → Label: Negatif\n", "Processed: Negatif/naniabodoh13 - Copy.wav → Label: Negatif\n", "Processed: Negatif/naniabodoh13.wav → Label: Negatif\n", "Processed: Negatif/naniabodoh2 - Copy.wav → Label: Negatif\n", "Processed: Negatif/naniabodoh2.wav → Label: Negatif\n", "Processed: Negatif/naniabodoh3 - Copy.wav → Label: Negatif\n", "Processed: Negatif/naniabodoh3.wav → Label: Negatif\n", "Processed: Negatif/naniabodoh4 - Copy.wav → Label: Negatif\n", "Processed: Negatif/naniabodoh4.wav → Label: Negatif\n", "Processed: Negatif/naniabodoh5 - Copy.wav → Label: Negatif\n", "Processed: Negatif/naniabodoh5.wav → Label: Negatif\n", "Processed: Negatif/naniabodoh6 - Copy.wav → Label: Negatif\n", "Processed: Negatif/naniabodoh6.wav → Label: Negatif\n", "Processed: Negatif/naniabodoh7 - Copy.wav → Label: Negatif\n", "Processed: Negatif/naniabodoh7.wav → Label: Negatif\n", "Processed: Negatif/naniabodoh8 - Copy.wav → Label: Negatif\n", "Processed: Negatif/naniabodoh8.wav → Label: Negatif\n", "Processed: Negatif/naniabodoh9 - Copy.wav → Label: Negatif\n", "Processed: Negatif/naniabodoh9.wav → Label: Negatif\n", "Processed: Negatif/nanialicik1 - Copy.wav → Label: Negatif\n", "Processed: Negatif/nanialicik1.wav → Label: Negatif\n", "Processed: Negatif/nanialicik10 - Copy.wav → Label: Negatif\n", "Processed: Negatif/nanialicik10.wav → Label: Negatif\n", "Processed: Negatif/nanialicik11 - Copy.wav → Label: Negatif\n", "Processed: Negatif/nanialicik11.wav → Label: Negatif\n", "Processed: Negatif/nanialicik12 - Copy.wav → Label: Negatif\n", "Processed: Negatif/nanialicik12.wav → Label: Negatif\n", "Processed: Negatif/nanialicik13 - Copy.wav → Label: Negatif\n", "Processed: Negatif/nanialicik13.wav → Label: Negatif\n", "Processed: Negatif/nanialicik14 - Copy.wav → Label: Negatif\n", "Processed: Negatif/nanialicik14.wav → Label: Negatif\n", "Processed: Negatif/nanialicik2 - Copy.wav → Label: Negatif\n", "Processed: Negatif/nanialicik2.wav → Label: Negatif\n", "Processed: Negatif/nanialicik3 - Copy.wav → Label: Negatif\n", "Processed: Negatif/nanialicik3.wav → Label: Negatif\n", "Processed: Negatif/nanialicik4 - Copy.wav → Label: Negatif\n", "Processed: Negatif/nanialicik4.wav → Label: Negatif\n", "Processed: Negatif/nanialicik5 - Copy.wav → Label: Negatif\n", "Processed: Negatif/nanialicik5.wav → Label: Negatif\n", "Processed: Negatif/nanialicik6 - Copy.wav → Label: Negatif\n", "Processed: Negatif/nanialicik6.wav → Label: Negatif\n", "Processed: Negatif/nanialicik7 - Copy.wav → Label: Negatif\n", "Processed: Negatif/nanialicik7.wav → Label: Negatif\n", "Processed: Negatif/nanialicik8 - Copy.wav → Label: Negatif\n", "Processed: Negatif/nanialicik8.wav → Label: Negatif\n", "Processed: Negatif/nanialicik9 - Copy.wav → Label: Negatif\n", "Processed: Negatif/nanialicik9.wav → Label: Negatif\n", "Processed: Negatif/naniasombong1 - Copy.wav → Label: Negatif\n", "Processed: Negatif/naniasombong1.wav → Label: Negatif\n", "Processed: Negatif/naniasombong10 - Copy.wav → Label: Negatif\n", "Processed: Negatif/naniasombong10.wav → Label: Negatif\n", "Processed: Negatif/naniasombong11 - Copy.wav → Label: Negatif\n", "Processed: Negatif/naniasombong11.wav → Label: Negatif\n", "Processed: Negatif/naniasombong12 - Copy.wav → Label: Negatif\n", "Processed: Negatif/naniasombong12.wav → Label: Negatif\n", "Processed: Negatif/naniasombong13 - Copy.wav → Label: Negatif\n", "Processed: Negatif/naniasombong13.wav → Label: Negatif\n", "Processed: Negatif/naniasombong2 - Copy.wav → Label: Negatif\n", "Processed: Negatif/naniasombong2.wav → Label: Negatif\n", "Processed: Negatif/naniasombong3 - Copy.wav → Label: Negatif\n", "Processed: Negatif/naniasombong3.wav → Label: Negatif\n", "Processed: Negatif/naniasombong4 - Copy.wav → Label: Negatif\n", "Processed: Negatif/naniasombong4.wav → Label: Negatif\n", "Processed: Negatif/naniasombong5 - Copy.wav → Label: Negatif\n", "Processed: Negatif/naniasombong5.wav → Label: Negatif\n", "Processed: Negatif/naniasombong6 - Copy.wav → Label: Negatif\n", "Processed: Negatif/naniasombong6.wav → Label: Negatif\n", "Processed: Negatif/naniasombong7 - Copy.wav → Label: Negatif\n", "Processed: Negatif/naniasombong7.wav → Label: Negatif\n", "Processed: Negatif/naniasombong8 - Copy.wav → Label: Negatif\n", "Processed: Negatif/naniasombong8.wav → Label: Negatif\n", "Processed: Negatif/naniasombong9 - Copy.wav → Label: Negatif\n", "Processed: Negatif/naniasombong9.wav → Label: Negatif\n", "Processed: Positif/mindrabai8 - Copy.wav → Label: Positif\n", "Processed: Positif/mindrabai8.wav → Label: Positif\n", "Processed: Positif/mindrabaik1 - Copy.wav → Label: Positif\n", "Processed: Positif/mindrabaik1.wav → Label: Positif\n", "Processed: Positif/mindrabaik10 - Copy.wav → Label: Positif\n", "Processed: Positif/mindrabaik10.wav → Label: Positif\n", "Processed: Positif/mindrabaik2 - Copy.wav → Label: Positif\n", "Processed: Positif/mindrabaik2.wav → Label: Positif\n", "Processed: Positif/mindrabaik3 - Copy.wav → Label: Positif\n", "Processed: Positif/mindrabaik3.wav → Label: Positif\n", "Processed: Positif/mindrabaik4 - Copy.wav → Label: Positif\n", "Processed: Positif/mindrabaik4.wav → Label: Positif\n", "Processed: Positif/mindrabaik5 - Copy.wav → Label: Positif\n", "Processed: Positif/mindrabaik5.wav → Label: Positif\n", "Processed: Positif/mindrabaik6 - Copy.wav → Label: Positif\n", "Processed: Positif/mindrabaik6.wav → Label: Positif\n", "Processed: Positif/mindrabaik7 - Copy.wav → Label: Positif\n", "Processed: Positif/mindrabaik7.wav → Label: Positif\n", "Processed: Positif/mindrabaik8 - Copy.wav → Label: Positif\n", "Processed: Positif/mindrabaik8.wav → Label: Positif\n", "Processed: Positif/mindrabaik9 - Copy.wav → Label: Positif\n", "Processed: Positif/mindrabaik9.wav → Label: Positif\n", "Processed: Positif/mindrarajin1 - Copy.wav → Label: Positif\n", "Processed: Positif/mindrarajin1.wav → Label: Positif\n", "Processed: Positif/mindrarajin10 - Copy.wav → Label: Positif\n", "Processed: Positif/mindrarajin10.wav → Label: Positif\n", "Processed: Positif/mindrarajin2 - Copy.wav → Label: Positif\n", "Processed: Positif/mindrarajin2.wav → Label: Positif\n", "Processed: Positif/mindrarajin3 - Copy.wav → Label: Positif\n", "Processed: Positif/mindrarajin3.wav → Label: Positif\n", "Processed: Positif/mindrarajin4 - Copy.wav → Label: Positif\n", "Processed: Positif/mindrarajin4.wav → Label: Positif\n", "Processed: Positif/mindrarajin5 - Copy.wav → Label: Positif\n", "Processed: Positif/mindrarajin5.wav → Label: Positif\n", "Processed: Positif/mindrarajin6 - Copy.wav → Label: Positif\n", "Processed: Positif/mindrarajin6.wav → Label: Positif\n", "Processed: Positif/mindrarajin7 - Copy.wav → Label: Positif\n", "Processed: Positif/mindrarajin7.wav → Label: Positif\n", "Processed: Positif/mindrarajin8 - Copy.wav → Label: Positif\n", "Processed: Positif/mindrarajin8.wav → Label: Positif\n", "Processed: Positif/mindrarajin9 - Copy.wav → Label: Positif\n", "Processed: Positif/mindrarajin9.wav → Label: Positif\n", "Processed: Positif/naniabaik1 - Copy.wav → Label: Positif\n", "Processed: Positif/naniabaik1.wav → Label: Positif\n", "Processed: Positif/naniabaik10 - Copy.wav → Label: Positif\n", "Processed: Positif/naniabaik10.wav → Label: Positif\n", "Processed: Positif/naniabaik11 - Copy.wav → Label: Positif\n", "Processed: Positif/naniabaik11.wav → Label: Positif\n", "Processed: Positif/naniabaik12 - Copy.wav → Label: Positif\n", "Processed: Positif/naniabaik12.wav → Label: Positif\n", "Processed: Positif/naniabaik13 - Copy.wav → Label: Positif\n", "Processed: Positif/naniabaik13.wav → Label: Positif\n", "Processed: Positif/naniabaik14 - Copy.wav → Label: Positif\n", "Processed: Positif/naniabaik14.wav → Label: Positif\n", "Processed: Positif/naniabaik15 - Copy.wav → Label: Positif\n", "Processed: Positif/naniabaik15.wav → Label: Positif\n", "Processed: Positif/naniabaik16 - Copy.wav → Label: Positif\n", "Processed: Positif/naniabaik16.wav → Label: Positif\n", "Processed: Positif/naniabaik2 - Copy.wav → Label: Positif\n", "Processed: Positif/naniabaik2.wav → Label: Positif\n", "Processed: Positif/naniabaik3 - Copy.wav → Label: Positif\n", "Processed: Positif/naniabaik3.wav → Label: Positif\n", "Processed: Positif/naniabaik4 - Copy.wav → Label: Positif\n", "Processed: Positif/naniabaik4.wav → Label: Positif\n", "Processed: Positif/naniabaik5 - Copy.wav → Label: Positif\n", "Processed: Positif/naniabaik5.wav → Label: Positif\n", "Processed: Positif/naniabaik6 - Copy.wav → Label: Positif\n", "Processed: Positif/naniabaik6.wav → Label: Positif\n", "Processed: Positif/naniabaik7 - Copy.wav → Label: Positif\n", "Processed: Positif/naniabaik7.wav → Label: Positif\n", "Processed: Positif/naniabaik8 - Copy.wav → Label: Positif\n", "Processed: Positif/naniabaik8.wav → Label: Positif\n", "Processed: Positif/naniabaik9 - Copy.wav → Label: Positif\n", "Processed: Positif/naniabaik9.wav → Label: Positif\n", "Processed: Positif/naniarajin1 - Copy.wav → Label: Positif\n", "Processed: Positif/naniarajin1.wav → Label: Positif\n", "Processed: Positif/naniarajin10 - Copy.wav → Label: Positif\n", "Processed: Positif/naniarajin10.wav → Label: Positif\n", "Processed: Positif/naniarajin11 - Copy.wav → Label: Positif\n", "Processed: Positif/naniarajin11.wav → Label: Positif\n", "Processed: Positif/naniarajin12 - Copy.wav → Label: Positif\n", "Processed: Positif/naniarajin12.wav → Label: Positif\n", "Processed: Positif/naniarajin13 - Copy.wav → Label: Positif\n", "Processed: Positif/naniarajin13.wav → Label: Positif\n", "Processed: Positif/naniarajin14 - Copy.wav → Label: Positif\n", "Processed: Positif/naniarajin14.wav → Label: Positif\n", "Processed: Positif/naniarajin2 - Copy.wav → Label: Positif\n", "Processed: Positif/naniarajin2.wav → Label: Positif\n", "Processed: Positif/naniarajin3 - Copy.wav → Label: Positif\n", "Processed: Positif/naniarajin3.wav → Label: Positif\n", "Processed: Positif/naniarajin4 - Copy.wav → Label: Positif\n", "Processed: Positif/naniarajin4.wav → Label: Positif\n", "Processed: Positif/naniarajin5 - Copy.wav → Label: Positif\n", "Processed: Positif/naniarajin5.wav → Label: Positif\n", "Processed: Positif/naniarajin6 - Copy.wav → Label: Positif\n", "Processed: Positif/naniarajin6.wav → Label: Positif\n", "Processed: Positif/naniarajin7 - Copy.wav → Label: Positif\n", "Processed: Positif/naniarajin7.wav → Label: Positif\n", "Processed: Positif/naniarajin8 - Copy.wav → Label: Positif\n", "Processed: Positif/naniarajin8.wav → Label: Positif\n", "Processed: Positif/naniarajin9 - Copy.wav → Label: Positif\n", "Processed: Positif/naniarajin9.wav → Label: Positif\n", "Ekstraksi MFCC selesai. Dataset tersimpan di folder 'E:\\! KULIAHHH\\Ivano Kuliah\\!SEMESTER 8\\!SKRIPSI\\Data Suara\\!REVISI\\hasil_ekstrak_mfcc_v2'.\n" ] } ], "source": [ "def extract_mfcc(file_path):\n", " \"\"\"Ekstraksi fitur MFCC dari file audio.\"\"\"\n", " y_audio, sr = librosa.load(file_path, sr=SAMPLE_RATE)\n", " mfcc = librosa.feature.mfcc(y=y_audio, sr=sr, n_mfcc=N_MFCC, n_fft=N_FFT, hop_length=HOP_LENGTH, lifter=22)\n", " return np.mean(mfcc, axis=1) # Rata-rata per koefisien\n", "\n", "file_names = [] # Tambahan untuk menyimpan nama file\n", "\n", "# Looping folder Positif dan Negatif\n", "for label_folder in os.listdir(DATASET_PATH):\n", " label_path = os.path.join(DATASET_PATH, label_folder)\n", "\n", " if os.path.isdir(label_path):\n", " for file_name in os.listdir(label_path):\n", " if file_name.endswith(\".wav\"):\n", " file_path = os.path.join(label_path, file_name)\n", " mfcc_features = extract_mfcc(file_path)\n", "\n", " X.append(mfcc_features)\n", " y.append(label_folder)\n", " file_names.append(f\"{label_folder}/{file_name}\") # Simpan dengan labelnya biar mudah dilacak\n", "\n", " print(f\"Processed: {label_folder}/{file_name} → Label: {label_folder}\")\n", "\n", "# Konversi ke array numpy\n", "X = np.array(X)\n", "y = np.array(y)\n", "\n", "# Simpan hasil\n", "np.save(OUTPUT_FEATURES, X)\n", "np.save(OUTPUT_LABELS, y)\n", "np.save(os.path.join(OUTPUT_FOLDER, \"file_names.npy\"), np.array(file_names)) # Tambahan\n", "\n", "print(f\"Ekstraksi MFCC selesai. Dataset tersimpan di folder '{OUTPUT_FOLDER}'.\")" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.10.0" } }, "nbformat": 4, "nbformat_minor": 2 }