- Neural Networks with Keras Cookbook
- V Kishore Ayyadevara
- 299字
- 2021-07-02 12:46:33
How to do it...
The strategy that we defined previously is coded as follows (Please refer to the Audio classification.ipynb file in GitHub while implementing the code):
- Import the dataset:
import pandas as pd
data = pd.read_csv('/content/train.csv')
- Extract features for each audio input:
ids = data['ID'].values
def extract_feature(file_name):
X, sample_rate = librosa.load(file_name)
stft = np.abs(librosa.stft(X))
mfccs = np.mean(librosa.feature.mfcc(y=X,sr=sample_rate, n_mfcc=40).T,axis=0)
return mfccs
In the preceding code, we defined a function that takes file_name as input, extracts the 40 MFCC corresponding to the audio file, and returns the same.
- Create the input and the output dataset:
x = []
y = []
for i in range(len(ids)):
try:
filename = '/content/Train/'+str(ids[i])+'.wav'
y.append(data[data['ID']==ids[i]]['Class'].values)
x.append(extract_feature(filename))
except:
continue
x = np.array(x)
In the preceding code, we loop through one audio file at a time, extracting its features and storing it in the input list. Similarly, we will be storing the output class in the output list. Additionally, we will convert the output list into a categorical value that is one-hot-encoded:
y2 = []
for i in range(len(y)):
y2.append(y[i][0])
y3 = np.array(pd.get_dummies(y2))
The pd.get_dummies method works very similar to the to_categorical method we used earlier; however, to_categorical does not work on text classes (it works on numeric values only, which get converted to one-hot-encoded values).
- Build the model and compile it:
model = Sequential()
model.add(Dense(1000, input_shape = (40,), activation = 'relu'))
model.add(Dense(10,activation='sigmoid'))
from keras.optimizers import Adam
adam = Adam(lr=0.0001)
model.compile(optimizer=adam, loss='categorical_crossentropy', metrics=['acc'])
The summary of the preceding model is as follows:

- Create the train and test datasets and then fit the model:
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(x, y3, test_size=0.30,random_state=10)
model.fit(X_train, y_train, epochs=100, batch_size=32, validation_data=(X_test, y_test), verbose = 1)
Once the model is fitted, you will notice that the model has 91% accuracy in classifying audio in the right class.
- 數據科學實戰手冊(R+Python)
- Vue 3移動Web開發與性能調優實戰
- ClickHouse性能之巔:從架構設計解讀性能之謎
- Java EE 6 企業級應用開發教程
- OpenShift開發指南(原書第2版)
- Docker進階與實戰
- Web交互界面設計與制作(微課版)
- Java 9 Programming Blueprints
- Scratch 3游戲與人工智能編程完全自學教程
- 小程序,巧運營:微信小程序運營招式大全
- 大模型RAG實戰:RAG原理、應用與系統構建
- 精通Linux(第2版)
- Mastering Backbone.js
- ASP.NET程序開發范例寶典
- CRYENGINE Game Development Blueprints