from matplotlib import pyplot as plt import numpy as np from datasets import clean_digits import features (X_train, y_train), (X_test, y_test) = clean_digits.load_data() x = X_train[0] plt.figure() plt.plot(x, 'k') plt.axis('tight') plt.xticks(np.arange(0, len(x), 8000 / 10), np.arange(0, len(x) / 8000.0, 0.1)) plt.xlabel('time (s)') plt.ylabel('amplitude') plt.savefig('report/waveform.png') sg = features.spectrogram(x, 256, 32) plt.figure() plt.pcolormesh(sg, cmap='gray') plt.axis('tight') frames_per_second = 8000 / 32.0 plt.xlabel('time (s)') plt.xticks(np.arange(0, sg.shape[1], frames_per_second / 10), np.arange(0, sg.shape[1] / frames_per_second, 0.1)) plt.ylabel('frequency (Hz)') plt.yticks(np.arange(0, 128, 16), np.arange(0, 4000., 4000. * 16 / 128))
from keras.layers.convolutional import Convolution1D, MaxPooling1D from keras.utils import np_utils import crop from datasets import clean_digits import wav_utils # data params nb_classes = 11 # training params batch_size = 8 nb_epoch = 12 # the data, shuffled and split between tran and test sets (X_train_wav, y_train), (X_test_wav, y_test) = clean_digits.load_data() X_train_wav = crop.crop_list_arrays(X_train_wav, 1000, 0.05) X_test_wav = crop.crop_list_arrays(X_test_wav, 1000, 0.05) max_length = max([len(x) for x in X_train_wav] + [len(x) for x in X_test_wav]) X_train_wav = wav_utils.pad_middle(X_train_wav, max_length) X_test_wav = wav_utils.pad_middle(X_test_wav, max_length) def pack(X): result = np.zeros((len(X), len(X[0]), 1)) for i in range(X.shape[0]): result[i, :, 0] = X[i] return result