{"metadata":{"kernelspec":{"name":"ir","display_name":"R","language":"R"},"language_info":{"name":"R","codemirror_mode":"r","pygments_lexer":"r","mimetype":"text/x-r-source","file_extension":".r","version":"4.0.5"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"library(fs)\nlibrary(ddpcr)\nlist.files(path = \"../input\")\n\n# You can write up to 20GB to the current directory (/kaggle/working/) that gets preserved as output when you create a version using \"Save & Run All\" \n# You can also write temporary files to /kaggle/temp/, but they won't be saved outside of the current session","metadata":{"_uuid":"051d70d956493feee0c6d64651c6a088724dca2a","_execution_state":"idle","execution":{"iopub.status.busy":"2023-07-28T17:04:39.578431Z","iopub.execute_input":"2023-07-28T17:04:39.616508Z","iopub.status.idle":"2023-07-28T17:04:39.680237Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# directory structure of input files, recursing takes forever\ndir_tree(path = \"/kaggle/input/bengaliai-speech\", recurse=FALSE)","metadata":{"execution":{"iopub.status.busy":"2023-07-28T17:04:39.682894Z","iopub.execute_input":"2023-07-28T17:04:39.684372Z","iopub.status.idle":"2023-07-28T17:04:39.732465Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# number of training mp3s\nsystem(\"ls /kaggle/input/bengaliai-speech/train_mp3s | wc -l\", intern = TRUE)","metadata":{"execution":{"iopub.status.busy":"2023-07-28T17:04:40.182849Z","iopub.execute_input":"2023-07-28T17:04:40.184630Z","iopub.status.idle":"2023-07-28T17:04:55.750628Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# confirm train.csv has the same number of entries, plus header row\nsystem(\"wc -l /kaggle/input/bengaliai-speech/train.csv\", intern = TRUE)","metadata":{"execution":{"iopub.status.busy":"2023-07-28T17:04:55.754522Z","iopub.execute_input":"2023-07-28T17:04:55.756170Z","iopub.status.idle":"2023-07-28T17:04:57.179651Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# file size\nsystem(\"ls -lah /kaggle/input/bengaliai-speech/train.csv\", intern = TRUE)","metadata":{"execution":{"iopub.status.busy":"2023-07-28T17:04:57.182352Z","iopub.execute_input":"2023-07-28T17:04:57.184213Z","iopub.status.idle":"2023-07-28T17:04:57.210325Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"df <- read.csv(\"/kaggle/input/bengaliai-speech/train.csv\")\nhead(df)","metadata":{"execution":{"iopub.status.busy":"2023-07-28T17:04:57.213101Z","iopub.execute_input":"2023-07-28T17:04:57.214598Z","iopub.status.idle":"2023-07-28T17:05:04.747363Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"table(df$split)","metadata":{"execution":{"iopub.status.busy":"2023-07-28T17:05:04.749945Z","iopub.execute_input":"2023-07-28T17:05:04.751686Z","iopub.status.idle":"2023-07-28T17:05:05.384495Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# separate train and validation\ntrain <- df[df$split == \"train\", c(\"id\", \"sentence\")]\nvalid <- df[df$split == \"valid\", c(\"id\", \"sentence\")]\nrm(df) #reclaim memory","metadata":{"execution":{"iopub.status.busy":"2023-07-28T17:05:05.386924Z","iopub.execute_input":"2023-07-28T17:05:05.388219Z","iopub.status.idle":"2023-07-28T17:05:05.638005Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"first_id <- train$id[1]\nfirst_id","metadata":{"execution":{"iopub.status.busy":"2023-07-28T17:05:05.640569Z","iopub.execute_input":"2023-07-28T17:05:05.641972Z","iopub.status.idle":"2023-07-28T17:05:05.659213Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"#verify audio location\nsystem(paste(\"ls -lah /kaggle/input/bengaliai-speech/train_mp3s/*\", first_id, \"*\", sep=\"\"), intern = TRUE)","metadata":{"execution":{"iopub.status.busy":"2023-07-28T17:05:05.661697Z","iopub.execute_input":"2023-07-28T17:05:05.663014Z","iopub.status.idle":"2023-07-28T17:05:07.729024Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"library(tuneR)\n\naudio <- readMP3(\"/kaggle/input/bengaliai-speech/train_mp3s/000005f3362c.mp3\")\nstr(audio)","metadata":{"execution":{"iopub.status.busy":"2023-07-28T17:05:07.731501Z","iopub.execute_input":"2023-07-28T17:05:07.732878Z","iopub.status.idle":"2023-07-28T17:05:08.038234Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"paste(\"duration:\", length(audio@left) / audio@samp.rate, \"seconds\")","metadata":{"execution":{"iopub.status.busy":"2023-07-28T17:05:08.040866Z","iopub.execute_input":"2023-07-28T17:05:08.042580Z","iopub.status.idle":"2023-07-28T17:05:08.061875Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## Understanding the File Info\nIt is a mono audio file (left channel only) with a 32khz sample rate, encoded using 16-bit [PCM](https://en.wikipedia.org/wiki/Pulse-code_modulation) audio, and a duration of 1.08 seconds","metadata":{}},{"cell_type":"markdown","source":"## Analyze\nUsing some techniques from https://medium.com/@taposhdr/basics-of-audio-file-processing-in-r-81c31a387e8e","metadata":{}},{"cell_type":"code","source":"# normalize to -1 to 1\nnorm_audio <- audio@left / 2 ^ (audio@bit - 1)","metadata":{"execution":{"iopub.status.busy":"2023-07-28T17:05:08.065508Z","iopub.execute_input":"2023-07-28T17:05:08.068449Z","iopub.status.idle":"2023-07-28T17:05:08.085415Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"# Create time array based on audio length (x) and plot against norm_audio (y)\n\ntimeArray <- 0:(length(norm_audio) - 1) / audio@samp.rate\nplot(timeArray, norm_audio, type=\"l\", col=\"black\", xlab=\"Time (ms)\", ylab=\"Amplitude\")","metadata":{"execution":{"iopub.status.busy":"2023-07-28T17:05:08.088784Z","iopub.execute_input":"2023-07-28T17:05:08.090550Z","iopub.status.idle":"2023-07-28T17:05:08.666979Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"markdown","source":"## MFCCs\nhttps://medium.com/prathena/the-dummys-guide-to-mfcc-aceab2450fd","metadata":{}},{"cell_type":"code","source":"quiet(audio_mfcc <- melfcc(audio, sr = audio@samp.rate, numcep=9, usecmp=TRUE, modelorder=8, spec_out=TRUE, frames_in_rows=FALSE))\nstr(audio_mfcc)","metadata":{"execution":{"iopub.status.busy":"2023-07-28T17:07:47.884765Z","iopub.execute_input":"2023-07-28T17:07:47.887222Z","iopub.status.idle":"2023-07-28T17:07:48.167156Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"audio_mfcc$cepstra","metadata":{"execution":{"iopub.status.busy":"2023-07-28T17:07:52.807396Z","iopub.execute_input":"2023-07-28T17:07:52.809185Z","iopub.status.idle":"2023-07-28T17:07:52.842330Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"library(signal)\nspecgram(audio@left, Fs = audio@samp.rate)","metadata":{"execution":{"iopub.status.busy":"2023-07-28T17:17:34.184658Z","iopub.execute_input":"2023-07-28T17:17:34.186358Z","iopub.status.idle":"2023-07-28T17:17:34.422360Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"specgram(audio_mfcc$cepstra, Fs = audio@samp.rate)","metadata":{"execution":{"iopub.status.busy":"2023-07-28T17:18:20.450059Z","iopub.execute_input":"2023-07-28T17:18:20.451760Z","iopub.status.idle":"2023-07-28T17:18:20.538350Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"specgram(audio_mfcc$lpcas, Fs = audio@samp.rate)","metadata":{"execution":{"iopub.status.busy":"2023-07-28T17:18:49.822586Z","iopub.execute_input":"2023-07-28T17:18:49.824274Z","iopub.status.idle":"2023-07-28T17:18:49.930508Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"specgram(audio_mfcc$pspectrum, Fs = audio@samp.rate)","metadata":{"execution":{"iopub.status.busy":"2023-07-28T17:19:18.311791Z","iopub.execute_input":"2023-07-28T17:19:18.313644Z","iopub.status.idle":"2023-07-28T17:19:18.606512Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"specgram(audio_mfcc$aspectrum, Fs = audio@samp.rate)","metadata":{"execution":{"iopub.status.busy":"2023-07-28T17:19:26.145859Z","iopub.execute_input":"2023-07-28T17:19:26.147440Z","iopub.status.idle":"2023-07-28T17:19:26.241451Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}