такая же форма для файлов audio dataset .wav

#python #machine-learning #neural-network #dataset

#питон #машинное обучение #нейронная сеть #набор данных

Вопрос:

Итак, я создаю нейронную сеть типа ANN, которая может классифицировать, говорю я или нет, проблема в том, что я могу обучить ее из-за формы моих данных.

Данные X являются

 (262144,)  

данные y

 (261768,)  

Как я могу сделать данные моих аудиофайлов .wav одинаковой формы?

Вот мой полный код

 from sklearn.model_selection import train_test_split  from sklearn.preprocessing import StandardScaler  import tensorflow as tf  import numpy as np  from scipy.io import wavfile  from pathlib import Path  import os   ### DATASET   pathlist = Path(os.path.abspath('Voiceclassification/Data/me/')).rglob('*.wav')   # My voice data  for path in pathlist:  filename = str(path)   # convert audio to numpy array and then 2D to 1D np Array  samplerate, data = wavfile.read(filename)  #print(f"sample rate: {samplerate}")  data = data.flatten()  #print(f"data: {data}")   pathlist2 = Path(os.path.abspath('Voiceclassification/Data/other/')).rglob('*.wav')   # other voice data  for path2 in pathlist2:  filename2 = str(path2)   samplerate2, data2 = wavfile.read(filename2)  data2 = data2.flatten()  #print(data2)    ### ADAPTING THE DATA FOR THE MODEL  X = data # My voice  y = data2 # Other data  #print(X.shape)  #print(y.shape)   ### Trainig the model  x_train, x_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=0)   # Performing future scaling  sc = StandardScaler()   x_train = sc.fit_transform(x_train)  x_test = sc.transform(x_test)   ### Creating the ANN  ann = tf.keras.models.Sequential()   # First hidden layer of the ann  ann.add(tf.keras.layers.Dense(units=6, activation="relu"))  # Second one  ann.add(tf.keras.layers.Dense(units=6, activation="relu"))  # Output layer  ann.add(tf.keras.layers.Dense(units=6, activation="sigmoid"))   # Compile our neural network  ann.compile(optimizer="adam",  loss="binary_crossentropy",  metrics=['accuracy'])   # Fit ANN  ann.fit(x_train, y_train, batch_size=32, epochs=100)  ann.save('train_model.model')  

Любая идея, в общей сложности у меня есть 18 файлов .wav для каждого X или y

Ответ №1:

Вы можете использовать scipy.io для wav-файлов перепишите файл длиной всего 5 секунд, я создам этот небольшой код, который поможет вам

 def trim_wav( originalWavPath, newWavPath , start, new ):  sampleRate, waveData = wavfile.read( originalWavPath )  startSample = int( start * sampleRate )  endSample = int( new * sampleRate )  wavfile.write( newWavPath, sampleRate, waveData[startSample:endSample])  wp = "path of the wav file" trim_wav(wp, wp.replace(".wav", ".wav"), 0,5)  

Это позволит обрезать ваши аудиофайлы и избавиться от миллисекунд, которые не меняют форму ваших данных