## 2 Materials and Methods
### Feature Extraction  
After the noise filtering, we proceeded with extracting features from the audio files and exporting useful information to a data frame.csv file. While loading the preprocessed audio files into memory, we resampled it at a target rate of 16 kHz, so we can ensure sampling rate consistency across all the audio files. The frequency range choice of 16 kHz was chosen because it is the target speech frequency. To extract meaningful information from the audio files, the first step is to extract Mel-frequency cepstral coefficients (MFCCs), which are widely used in speech and audio recognition, representing the spectral envelope of the audio. Utilizing Librosa's feature MFCC function, we calculated the mean and standard deviation of each MFCC. Besides MFCC information, pitch is also a crucial fundamental characteristic of speech. To extract the pitch of each audio chunk, **Librosa's** core method, pittrack, was utilized to estimate the pitch and calculate the mean and standard deviation of each audio. Furthermore, the method **extract_spectral_features** was used to extract spectral features, like the **bandwidth, contrast, flatness, and spectral centroid,** which are crucial to describe the frequency content. Finally, we extracted the temporal features, like the root-mean-square energy (RMS) and zero-crossing to describe the time-domain characteristics of the audio, using the **extract_temporal_features method**. After the completion of preprocessing, these pieces of information were stored in a.csv file named \"**audio_features.csv**\". The newly created data frame included the proper column names and the appropriate information for each audio file and consisted of 1210 entries for non-aggressive verbal interactions, as well as 1666 entries for aggressive (angry) verbal interactions.  
Before proceeding with the training, testing, and evaluation of our model, we split the **audio_features.csv** file into two new data frames. One will be used for training our model, and one will be used for testing our model as an external sample with data unseen by the model during training. This will provide a more robust and truer overview of the model generalization capabilities and will reduce potential overfitting problems during the evaluation. To create the **trainingDataset.csv** file, we randomly selected 10% of the entriesfrom each class in the **audio_features.csv** data frame, resulting in 121 non-aggressive verbal entries and 164 aggressive verbal entries. Because the imbalance of the training dataset is minor and the random forest classifier ensemble can handle small imbalances in the class, the data frame was left as is. For the testing dataset, the remaining 90% of the data that were not selected during the previous step were assigned to the **testingDataset.csv** file consisting of 1089 entries of non-aggressive verbal communication and 1484 of aggressive verbal communication correspondingly. The reason only 10% of the extracted data was used for training and a large portion of 90% of the data was used for testing was to avoid making the model learn patterns and make predictions based on them but to actually test the model's ability for good generalization for the data provided and to avoid overfitting.