-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfeatures_train.py
More file actions
35 lines (33 loc) · 1.25 KB
/
Copy pathfeatures_train.py
File metadata and controls
35 lines (33 loc) · 1.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import librosa
from librosa import feature as ft
import matplotlib.pyplot as plt
import os
import numpy as np
import csv
import ntpath
# root path
root = os.path.dirname(os.path.realpath('__file__'))
path_name = r'train_full\audio'
direc_name = os.path.join(root,path_name)
train_path = r'train_full'
csv_file = os.path.join(train_path,'features_full.csv')
folders = os.listdir(path_name)
print(folders)
with open(csv_file, "w", newline= '') as output:
for folder in folders:
audio_class_folder = os.path.join(direc_name,folder)
files = os.listdir(audio_class_folder)
print(folder)
for file in files:
X, samp_rate = librosa.load(os.path.join(audio_class_folder,file))
stft = np.array(np.abs(librosa.stft(X)))
mfcc = np.array(np.mean(librosa.feature.mfcc(y=X, sr=samp_rate, n_mfcc=40).T,axis=0))
chroma = np.array(np.mean(librosa.feature.chroma_stft(S=stft, sr=samp_rate).T,axis=0))
contrast = np.array(np.mean(librosa.feature.spectral_contrast(S=stft, sr=samp_rate).T,axis=0))
features = np.append(mfcc,chroma)
features = np.append(features,contrast)
features_full = features.tolist()
features_full.append(folder)
writer = csv.writer(output, delimiter=',')
writer.writerow(features_full)
print('Yay!')