{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# OBWIEDNIA\n", "Obwiednia sygnału jest pojęciem nieco trudnym do zdefiniowania, gdyż z jednej strony możemy mówić o funkcji czasu zmieniajacej się znacznie wolnej niż sygnał. Z drugiej strony, można również powiedzieć, że jest to ograniczenie pewnej krzywej." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Najbardziej naiwnym podejściem do tworzenia obwiedni jest branie wartości maksymalnych/minimalnych w zadanym oknie. O ile podejście takie nie jest używane w praktyce, może jednak w łatwy sposób pokazać ideę tworzenia obwiedni sygnału." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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k2KklGGNXa9PjK9ByTAmRwX2ODz77LP9PQSFokfcdjctgRbdtft2q0CINimmxRfEH5SGJk9VRYy5SfsOSqmkubmZ888/n6lTpzJp0iRWrFjB7Nmz2bhxIwDPPfcc48aNY/bs2Vx//fXcfPPNAFx77bXccsstnHrqqYwePZqVK1cC0NTUxJlnnsmJJ57I5MmTef311/vt3hSZi+YXo9dWQAiB02aJZuyanUC+DjsBUAZg6YApM/ZfvrmVbfsbUnrOicNyeeDC43vc569//SvDhg3j7bffBqC+vp6nn34agP379/PQQw+xadMm3G43Z5xxBlOnTo0ee+DAAT7++GN27NjB3LlzmTdvHi6Xi9WrV5Obm0tNTQ0zZ85k7ty5pteoFelFrF+M3kzaYbVEM/a6iJ2Abo3dV89x2cclMFJFX6Ey9hgmT57M2rVrueuuu1i/fj15eW0fkg0bNnD66adTWFiI3W7nsssua3fsxRdfjMViYeLEiRw6FO6EI6Xk3nvvZcqUKZx11ll8++230ecUilSRiF+M026NTp4a9WJXUoz5MWXGHi+z7i3GjRtHeXk577zzDvfccw9nn3129Lke3BIAcDrbOjFp+y5fvpzq6mrKy8ux2+2UlJSoBViKlJOIdW+7jF2TYnR0T5JSKmfHNEBl7DHs37+f7Oxsvv/973PHHXewadOm6HPTp09n3bp1HDlyhEAgwKpV8Zul1tfXU1xcjN1u54MPPuCbb77pzeErjlKiGbsR6157rBSj34u9JdBCQAZUVYzJMWXG3l98/vnn3HnnnVgsFux2O08//TR33HEHAMOHD+fee+9lxowZDBs2jIkTJ7aTarriqquu4sILL2TatGmUlZVRWmqOBS2KzELromSs2YY12mhD656kxytG+cSkByqwx3DOOedwzjnntNv24YcfRv/9ve99jwULFhAIBPjud78blWqWLFnS7hitPn3gwIH8/e9/7/JaqoZdkSoSkmJslmhrvPoWPy67BZc9fqmkWnWaHigpxgAPPvggZWVlTJo0iVGjRnHxxRf395AUioT7nnr94cnTuha//lJH5ROTFqiM3QCLFi3q7yEoFJ2wW+04rU6DnuwWmrxh07O6BJwdlRRjblTGrlBkAIb9YmyWNo1debFnHCqwKxQZgNFmG05bTB27R79lb4MvvHAw16E0djOjArtCkQEYzdhj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\n", "text/plain": [ "" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "signal = np.random.normal(0,1,60)\n", "envelope_window = 5\n", "df = pd.DataFrame(signal,columns=['signal'])\n", "df['envelope_max'] = df['signal'].rolling(envelope_window, 1, center=True).max()\n", "df['envelope_min'] = df['signal'].rolling(envelope_window, 1, center=True).min()\n", "df.plot()" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "signal = np.sin(np.linspace(0,180,60))\n", "envelope_window = 5\n", "df = pd.DataFrame(signal,columns=['signal'])\n", "df['envelope_max'] = df['signal'].rolling(envelope_window, 1, center=True).max()\n", "df['envelope_min'] = df['signal'].rolling(envelope_window, 1, center=True).min()\n", "df.plot()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Zastosowania obwiedni:\n", " - uogólnienie amplitudy\n", " - odtwarzanie sygnału bazowego" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Głównym elementem, który słyszymy, gdy ktos mówi, są FORMANTY, czyli pasma częstotliwości w dźwięku, w granicach którego wszystkie tony składowe ulegają szczególnemu wzmocnieniu. Formanty będą stanowić maksima obwiedni sygnału. Zbior formantów odpowiada za barwę dźwięku.\n", "Ilustracja: Spektrogram przedstawiający samogłoski (i, u, a) w amerykańskiej odmianie języka angielskiego i ich formanty F1 i F2 (żródło: https://pl.wikipedia.org/wiki/Formant_(akustyka) [dostęp: 09.12.2019])." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "![title](spectrogram.png)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Poniższy kod dotyczący tworzenia obwiedni pochodzi stąd: https://github.com/katejarne/Envelope_Code i jest autorstwa Cecilii Jarne. Dla zainteresowanych jej pełną pracą nad obwiedniami odsyłam do artykułu: \"Simple empirical algorithm to obtain signal envelope in three steps\"\n", "\n", "Względem oryginału w kodzie nastąpiły niewielkie zmiany, dotyczące przede wszystkim sposobu rysowania obwiedni. Dla naszych celów wystarczający będzie jeden sposób tworzenia obwiedni. Ponadto, przydatne moze okazać się również jej wypełnienie, co jest uzyskane z pomocą funkcji fill_between (w ogólności sposób jej uzycia zbliżony do funkcji plot())" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "./wavs\n", "[]\n", "['001_K.wav', '002_M.wav', '003_K.wav', '004_M.wav']\n", "./wavs\n", "002_M.wav\n", "-------------------------\n", "sound vector: \n", "vector size in Frames: 433218\n", "vector c:\n", " [[ 0.00000e+00 -2.90000e+01 -3.80000e+01]\n", " [ 1.00000e+00 -4.70000e+01 -4.10000e+01]\n", " [ 2.00000e+00 -3.30000e+01 -2.80000e+01]\n", " ...\n", " [ 2.16606e+05 2.99000e+02 2.80000e+02]\n", " [ 2.16607e+05 3.10000e+02 2.84000e+02]\n", " [ 2.16608e+05 2.97000e+02 2.71000e+02]]\n", "vector c1:\n", " [ 0. -29. -38.]\n", "First cc comp:\n", " [0.00000e+00 1.00000e+00 2.00000e+00 ... 2.16606e+05 2.16607e+05\n", " 2.16608e+05]\n", "Second cc comp:\n", " [-29. -47. -33. ... 299. 310. 297.]\n", "Third cc comp: \n", " [-29. -47. -33. ... 299. 310. 297.]\n", "[0]\n", "-------------------\n", "The step: 216609\n", "-------------------\n", "\n", "\n", ".---All rigth!!!----.\n" ] } ], "source": [ "######################################################################################################\n", "# # \n", "# 1)Reads wav 1 or 2 ch and plot signal. #\n", "# 2)Estimate envelope and sonogram #\n", "# 3)Make consecutive plots of \"step_time\" size in file with current wav name for each file in r_dir #\n", "# #\n", "# C. Jarne 05-01-2017 V1.0 # \n", "######################################################################################################\n", "\n", "# libraries \n", "import numpy as np\n", "import scipy\n", "import os\n", "import scipy.stats as stats\n", "\n", "from scipy.io import wavfile\n", "import wave, struct\n", "import matplotlib.pyplot as pp\n", "\n", "from pylab import *\n", "import scipy.signal.signaltools as sigtool\n", "import scipy.signal as signal\n", "from scipy.fftpack import fft\n", "\n", "# Here directory (put the name and path). Directory only with .wav files\n", "\n", "r_dir='./wavs'\n", "\n", "# Parameters\n", "\n", "Fmax = 10000 #maximum frequency for the sonogram [Hz]\n", "step_time = 1.2 #len for the time serie segment [Seconds]->>>>>>>>> Change it to zoom in the signal time!!\n", "w_cut = 300 #Frequency cut for our envelope implementation [Hz]\n", "w_cut_simple = 150 #Frecuency cut for the low-pass envelope [Hz]\n", "\n", "\n", "###################################\n", "#1) Function envelope with rms slide window (for the RMS-envelope implementation)\n", "\n", "def window_rms(inputSignal, window_size):\n", " a2 = np.power(inputSignal,2)\n", " window = np.ones(window_size)/float(window_size)\n", " return np.sqrt(np.convolve(a2, window, 'valid'))\n", "\n", "##################################\n", "\n", "#2) Filter is directly implemented in Abs(signal)\n", "\n", "##################################\n", "#3) our implementation !\n", "\n", "def getEnvelope(inputSignal):\n", "# Taking the absolute value\n", "\n", " absoluteSignal = []\n", " for sample in inputSignal:\n", " absoluteSignal.append (abs (sample))\n", "\n", " # Peak detection\n", "\n", " intervalLength = 35 # change this number depending on your Signal frequency content and time scale\n", " outputSignal = []\n", "\n", " for baseIndex in range (0, len (absoluteSignal)):\n", " maximum = 0\n", " for lookbackIndex in range (intervalLength):\n", " maximum = max (absoluteSignal [baseIndex - lookbackIndex], maximum)\n", " outputSignal.append (maximum)\n", "\n", " return outputSignal\n", "\n", "\n", "##################################\n", "#Loop over sound files in directory\n", "\n", "for root, sub, files in os.walk(r_dir):\n", " print(root)\n", " print(sub)\n", " print(files)\n", " files = sorted(files)\n", " for f in files[1:2]: \n", " w = scipy.io.wavfile.read(os.path.join(root, f))\n", " print (r_dir)\n", " base=os.path.basename(f)\n", " print (base)\n", " dir = os.path.dirname(base)\n", " if not os.path.exists(dir):\n", " os.mkdir(base) \n", " print('-------------------------')\n", " \n", " a=w[1]\n", " print('sound vector: ')#, w\n", "\n", " i=w[1].size\n", "\n", " print ('vector size in Frames: ',i)\n", "\n", " x = w[1]\n", " x_size= x.size\n", " tt = w[1]\n", "\n", " #Comment for stero or not \n", " v1 = np.arange(float (i)/float(2))# not stereo\n", " #v1 = np.arange(float (i))#/float(2)) #stereo\n", " c = np.c_[v1,x]\n", "\n", " print ('vector c:\\n' , c)\n", " print ('vector c1:\\n',c[0])\n", "\n", " cc=c.T #transpose\n", "\n", " x = cc[0]\n", " x1= cc[1]\n", " x2= cc[1]#2\n", "\n", " print ('First cc comp:\\n ', cc[0])\n", " print ('Second cc comp:\\n', cc[1])\n", " print ('Third cc comp: \\n', cc[1])# cc[2] if stereo\n", "\n", " \n", " #Low Pass Frequency for Filter definition (envelope case 2)\n", "\n", " W2 = float(w_cut_simple)/w[0] #filter parameter Cut frequency over the sample frequency\n", " (b2, a2) = signal.butter(1, W2, btype='lowpass') \n", "\n", " #Filter definition for our envelope (3) implementation\n", "\n", " W1 = float(w_cut)/w[0] #filter parameter Cut frequency over the sample frequency\n", " (b, a) = signal.butter(4, W1, btype='lowpass')\n", " aa = scipy.signal.medfilt(scipy.signal.detrend(x2, axis=-1, type='linear'))\n", " i = x.size\n", " p = np.arange(i)*float(1)/w[0] \n", " \n", "\n", " stop = i\n", " step = i#int(step_time*w[0])\n", " intervalos= np.arange(0, i,step)\n", "\n", " print( intervalos)\n", " print('-------------------')\n", " print('The step: ',step)\n", " print('-------------------')\n", "\n", " time1=x*float(1)/w[0]\n", "\n", " ##chop time serie##\n", " for delta_t in intervalos:\n", " \n", " aa_part = aa[delta_t:delta_t+step]\n", " x1_part = x2[delta_t:delta_t+step]#or x1\n", " x2_part = x2[delta_t:delta_t+step]\n", "\n", " #envelope implementations\n", " x1_part_rms = window_rms(aa,500)##envolvente Rms (second parameter is windows size)\n", " time_rms = np.arange(len(x1_part_rms))*float(1)/w[0]\n", "\n", " \n", " #envelope low pass\n", " filtered_aver_simple = signal.filtfilt(b2, a2, abs(aa_part))\n", " filtered_aver_vs_ped_simp = filtered_aver_simple\n", "\n", " # envelope our implementation\n", " aver = getEnvelope(aa_part)\n", " filtered_aver = signal.filtfilt(b, a, aver)\n", " filtered_aver_part = filtered_aver[delta_t:delta_t+step]\n", " \n", " aver_vs = getEnvelope(x2_part)\n", " filtered_aver_vs = signal.filtfilt(b, a, aver_vs)\n", " envelope_part = filtered_aver\n", " filtered_aver_vs_part = filtered_aver_vs[delta_t:delta_t+step]\n", "\n", " #time (to x axis in seconds) \n", "\n", " time_part = time1[delta_t:delta_t+step]\n", " time = time1[delta_t:delta_t+step]\n", " \n", "\n", " ###################################################\n", "\n", " #Figure definition\n", " pp.figure(figsize=(14,9.5*0.6))\n", " pp.title('Sound Signal')\n", " pp.subplot(2,1,1)\n", "\n", " #Uncoment what envelope you whant to plot\n", "\n", " grid(True)\n", "\n", " #Signal\n", " #label_S,= pp.plot(x*float(1)/w[0],x1, color='c',label='Time Signal')\n", "\n", " #Abs value of signal\n", " #pp.plot(x*float(1)/float(w[0]),abs(x1), color='y',label='Absolute value of Time Signal') \n", "\n", " \n", " # Low pass filter envelope #\n", " print(type(time_part))\n", " print(type(filtered_aver_vs_ped_simp))\n", " #envelope_1= pp.fill_between(time_part,0,filtered_aver_vs_ped_simp)#, linestyle='--',color='b',label='Low-pass Filter envelope',linewidth=3)\n", " \n", " # Rms envelope #\n", " #envelope_2,= pp.plot(time_rms+500/w[0],x1_part_rms, linestyle='-',color='k',label='RMS aproach envelope',linewidth=1)\n", " \n", " # Our implementation #\n", " #envelope_pre,=pp.plot(time_part,aver,color='k',label='Second step for envelope',linewidth=1)# Pre-envelope \n", " envelope_3= pp.fill_between(time_part,0,filtered_aver_vs, color='r',label='Final Peak aproach envelope',linewidth=2)\n", "\n", "\n", " pp.ylabel('Amplitude [Arbitrary units]') \n", " pp.xlim([delta_t*float(1)/w[0],(delta_t+step)*float(1)/w[0]+0.001])\n", " pp.xticks(np.arange(delta_t*float(1)/w[0],(delta_t+step)*float(1)/w[0]+0.001,0.1),fontsize = 12)\n", " #pp.yticks(np.arange(-15000,15000+5000,5000),fontsize = 12)\n", " pp.ylim(-20000,20000)\n", " pp.tick_params( axis='x', labelbottom='off')\n", " pp.tick_params( axis='y', labelleft='off')\n", " \n", " #pp.legend([label_S,envelope_1,envelope_2,envelope_3],['Time Signal', 'Low-pass Filter envelope','RMS aproach envelope','Final Peak aproach envelope'],fontsize= 'x-small',loc=4)\n", " \n", "\n", " ################################################\n", " #Sonogram \n", " pp.subplot(2,1,2)\n", "\n", " grid(True)\n", " nfft_=int(w[0]*0.010)\n", " \n", " pp.specgram(x1, NFFT=int(w[0]*0.01) , Fs=w[0], noverlap = int(w[0]*0.005),cmap='jet') \n", " #pp.specgram(x1, NFFT=int(w[0]*0.01) , window= scipy.signal.tukey(int(w[0]*0.01)), Fs=w[0], noverlap = int(w[0]*0.005),cmap='jet') #other window \n", " #pp.xticks(np.arange(0,8+0.001,0.1),fontsize = 12)\n", " #pp.xlim(0, step_time+0.001) \n", " pp.xlim([delta_t*float(1)/w[0],(delta_t+step)*float(1)/w[0]+0.001])\n", " pp.xticks(np.arange(delta_t*float(1)/w[0],(delta_t+step)*float(1)/w[0]+0.001,0.1),fontsize = 12)\n", " pp.yticks(np.arange(0,Fmax,1000),fontsize = 12) \n", " pp.ylim(0, Fmax)\n", " pp.xlabel('Time [Sec]')\n", " pp.ylabel('Frequency [Hz]')\n", " #pp.legend(\"legend\",fontsize= 'x-small') \n", " #pp.tick_params( axis='x', labelbottom='off')\n", " \n", " \n", " figname = \"%s.png\" %(str(base)+'/'+str(base)+'_signal_zoom_'+str(delta_t*float(1)/w[0])) \n", " #pp.savefig(os.path.join(base,figname),dpi=200)\n", " res=pp.savefig(figname,dpi=200)\n", " pp.close('all')\n", "\n", " ###############################################################\n", " #save in plot file txt with data if necesary\n", "\n", " #f_out = open('plots/%s.txt' %(str(base)+'_'+str(delta_t*float(1)/float(w[0]))), 'w') \n", " #xxx = np.c_[time_part,x2_part,filtered_aver,filtered_aver_vs]\n", " #np.savetxt(f_out,xxx,fmt='%f %f %f %f',delimiter='\\t',header=\"time #sound #sound-evelope #vS-envelope\") \n", " \n", " print ('.---All rigth!!!----.')\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# DTW" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Głównym zastosowaniem algorytmu Dynamic Time Warping jest badanie podobieństwa dwóch sygnałów o różnym czasie ich trwania." ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# źródło: https://github.com/pierre-rouanet/dtw\n", "\n", "import numpy as np\n", "\n", "# We define two sequences x, y as numpy array\n", "# where y is actually a sub-sequence from x\n", "x = np.array([2, 0, 1, 1, 2, 4, 2, 1, 2, 0]).reshape(-1, 1)\n", "y = np.array([1, 1, 2, 4, 2, 1, 2, 0]).reshape(-1, 1)\n", "\n", "from dtw import dtw\n", "\n", "euclidean_norm = lambda x, y: np.abs(x - y)\n", "\n", "d, cost_matrix, acc_cost_matrix, path = dtw(x, y, dist=euclidean_norm)\n", "\n", "# You can also visualise the accumulated cost and the shortest path\n", "import matplotlib.pyplot as plt\n", "\n", "plt.imshow(acc_cost_matrix.T, origin='lower', cmap='gray', interpolation='nearest')\n", "plt.plot(path[0], path[1], 'w')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Poniżej znajdują się dwa przykłady porównania dźwięków skrzypiec. Pliki zawierające 'A' w nazwie, przedstawiają dźwięk A, odpowiednio pliki z 'D' w nazwie, zawierają dźwięk D zagrany na skrzypcach. Porównaj wykresy dla pierwszego i drugiego przykładu. Wartość, która jest wypisywana to długość ścieżki \"różnicy dźwięków\", czyli tak naprawdę koszt, zatem chcemy go minimalizować." ] }, { "cell_type": "code", "execution_count": 64, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "38.2048\n" ] }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAMwAAAD8CAYAAAA7WEtfAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4xLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvAOZPmwAAIABJREFUeJztfXm0XVWZ5+977+ZlIhCSkJCEIQxZpUmJlmExadmKNiINYhMNAQsi0kt0IWKXDCoCVYWF0rYDWNURUBQEGQRKUi02RobFsiohkhgZDEKEGJGEEBMmw5t3/3HPd/Pd7+3pTPedm9zfWnfdc/fZw3fO3b/9DXuffcgYgw466CAOXaMtQAcdtBM6hOmggxToEKaDDlKgQ5gOOkiBDmE66CAFOoTpoIMU6BCmgw5SoEOYDjpIgQ5hOuggBWqjLYAP06ZNM3PmzPHmCa1UGI2VDLFt6nyh31nazXP9XNYm1/DwcOObiGCMwdDQEIaHhzE0NNQoQ0SNb1kf/5bpLhARiAhDQ0MA0GhzeHgYADA0NISurq5GOpeZNGkSnn322a3GmH0y3wSFShPmwAMPxH/8x3948/BNBNC4gfIPiOlEvjy+P1N3Clfbrvr1h+XnzuiSU37LfPJbdmhX2yEwAbhjDw8PY2BgAP39/RgYGEBfXx/6+/sb57Zv34433ngDr7/+OgYGBtDV1YWuri50d3fDGIOBgYFGvV1dzcaNvpfyN+d9/fXX0dXVhd7eXnR3dzdk6OvrQ09PD/r6+hr5u7u7ceyxx2Lx4sV/CF5oClSaMHyTfX+uJInuSLouXzuufLGdy1Wnq9Pq+l2E8ZFNH8t25GisIUlgk1nWIdMGBwcxODiI3t5eDA4OYmBgoFHX0NAQBgcHG2SS/8vw8DAGBwcb9Q0PDzdI1NXV1dSGlok1B9ddq9W7bH9/P4aGhhr9o7+/H8PDw02apr+/33nfs6LShBkeHg5eNP9hwMgRlxFLFq4vlCcGtpHfVqcmCn9zJwzVr80caabo65GmE//2Xd/g4GBTB+ZO29fX1+ik3d3djY7L5wcHB9Hd3d0wpfr7+xsdmtsdGhpqMp+kJmHN1NXVBSLCjh07GiQdGhpCd3d3Q7MNDAw0tA23yd+s0YpEpQkDxPkoNpMktg7f6K/rTwOftnOd1yZaSCbftWv/gI9dJqPLl5CayHd/XVqaSeC7z5I40oxjLeRqk8tp844JOH78eGebWVF5woQ6tByFtWkTg5gOnQZpfRhgpAmW1oexndNaCxipYULQzvXw8HCTRgfqnXVoaKhRJ2sO7vRSTtYYbIZJgtiOpQknNRKXl3Vweq1WQ3d3NwYHBzF//vyo60yDShPGGIPBwUFvHhthfD4Jp8lRczQJ4zPJYgijr4G/+b5JDcO/NYlcA4wOorAPA+z0b/g/GhwcbCKUvBb+j2wmJOeVJADQRBj+lvklmWSbLN/kyZNx2GGHWa8rD9qKMLaOl9fp9+XLShpZxtUZbRpGE8bVto0gunNLX0ZH8WT41Xd9msjsQ3CHHR4eRl9fHwYGBjAwMNBw/Jkg3OllGqfLbyYtaxjpvMs+IP2ywcHBpoAAXydfy6xZs6zXlBeVJgyAoPlQlNPvK5PGxIupW8vqio75NJ+WyWaKSXLo67ERRmpeWRd3WD2aM3H4I81JJoE24YDmSJh2+LmMvBe2OqS5aPPV9t577xH3rghUmjDafHBpGNdo6ysny7vajikfU85GRnnORpiQXDZC27SWLX8a7Sv9Bzkvw8ccHWNNImXh39KkYmJwtMsY09BE8nr0fZFahz+2e8KRvSxWQQwqT5hQaNA3cZlFs+i0osnCabpz2+ZefLLZtKqNiDHa0UcYJgbLKWWWYWSe0JTaiMtKLSD/Lxko0O3K+yFn8gGgt7e3ibwcsmaCEhFmzZoVHdxIg+BaMiK6gYi2ENETlnMXEJEhomnJbyKia4hoPRE9RkRvF3mXENEzyWdJGiFtnUKOxLJj2DpOqz629mJksMmetk1bedecks4TI5/rmqTzr8kgz+nyNmiTT9Yvr0VOZtsGn6GhIUyfPh3PPfdcmm4WhRgN8wMA/wLgJplIRPsD+K8ANorkDwCYm3yOBLAUwJFENAXA5QAOB2AArCaiZcaY7aHGY/0HVwdy5bUdh8756ompzyanzQzzdSzbOe2cu87HyK/P+TSfMXUTiGWXphena7DPotvSfoqMrGmZ2OqQgQ0ATc5/rVbL7Hv6ECSMMeZhIppjOfVNABcBuEeknQzgJlO/spVENJmIZgJ4N4DlxphtAEBEywEcD+DWiPajzpdBmFD7WeqXaT6t6CsbSs9imrrO2eSSk6AuDaI7KxNFk8XWDqfZnHn2pfhY5pkwYQIOPPBAzJ07F295y1uwbNky57VlRSYfhog+COBPxpjfqBswG8Afxe/nkzRXuhcus0Ln4W/bsS2vKy1Gu6TROi7y2Tq0q3PGHNsmKXX9EnLuhTue7To4n+1+Sq0oHXnXxOTYsWMbnbuvr6/h6Mu5FVv9vNSlp6cHf/nLX5pC0ESEnp4eDAwMoFar4ctf/jIOOOAAAMCaNWtwxx13jLiuvEhNGCKaAOASAMfZTlvSjCfdVv8nAHwCAGbOnBlcTxU7D8PpvrQY7ZJGzbvqc5llLpMsC/HkeSkzk8MWbtZtyMiYrJ9NLmmOyfN6opHPcV08h8KEkb6LbX0bn2Ni8DkmDQDMmDEDBxxwAFasWIF77rkHGzZsaCzULBJZajwEwEEAWLvsB2ANER2BuubYX+TdD8ALSfq7VfpDtsqNMdcBuA4A3vzmN5v+/n7vqK7DymlCynw+LZFC9YXKxxLGJ5fuULqcyzxyjeguyBXL0i/hCUs+L1cpywlO1j4cQXMRRl+rnPys1WqN9ri8JP7w8DDGjRsHALj//vuxbt26xrKcopGaMMaYxwFM599EtAHA4caYrUS0DMCnieg21J3+V4wxm4joPgBXEhHPJh0H4AsRbTVWxrrQionLLISRx65oFX9nmbi0aSvZjsuU0mVC1yE1PA9ePNrLORju0EweGQpmYsjlM3LuRcpjW+jJBOPV0Tz/Iyc7+/r6GvJKrVg0goQholtR1w7TiOh5AJcbY77nyH4vgBMArAewA8BZAGCM2UZEVwD4VZLvn0wSAPDBGIPe3l5vnhjCZJmLKJIwvk5rI4wr2qXL2trQZpgvtBwyyXRZnu/g5fzc4eVDZUwYYOeDYjKKxfXKeRVNFomurq7G3A4/IKbXmAHA/vvXDZve3l4MDAyUNnkZEyU7LXB+jjg2AM515LsBwA1phIsZCfWMbxpzw9dGmYTRHd6mbVyaUi/Tj/3Wiy9ty0piAixMGP6tl+8z6eXzMGxK2SYtpWzSJ5HH0vRjmTkPP3tz7LHHYvPmzXj88ccxZsyYhhYqGpWe6Q9Bd85YM8OX5vptK2ubT4gp58pv0ywhssk034JK33XFzNPY1pi5ftvqyDLrrs0ybotJKq979uzZ2LBhQ9OSmzJm+itPmNBF6+X/mjgxJIrxFWJhKxfq9PrpSJdp6Sovv7Uppp+f9/lTGjr07Jq918tgNAm12Sy1m609LZOe3GU/hs26OXPmYPr06bj99tutE8FFotKEkSOLC65nLeS3rV7bcczvGJlDhNWaRBLGdh0xx7ou2aFta7VssoW0q15MyY43+y9yEaacpNTLW1zmIh9LU4/Ls2nH7UoST5o0CQDw3HPPlWKGSVSaMEDYpHH5AjHmly0t1Nm1meIrHzJVtCZxzSm5ZJDn9FISX+AgNvSu76de56VJIM9rraY31HC1z0TQ95FJovMaYzBx4kQAwJYtW5pM091Sw4RMsiwaRiLUebLe9FCHl/LGaBj92yW3LUqmfZtYLSqDA/xbfmSbeuWx1C7a4ZcRMpkmy8g83B4f12q1Rh5JED5msu52Tn9ekyxvONn2O6a+GC1lI4zNH3PJaxtpXdrKlj/Ujky3hYWZBENDQ41JSWmSSQ0kf7NsWlOzvHwsNZLeL0D6TPqxad49pixUmjASMeqcf6cNK8fUmba+UAeN0SRZCRPStmk0jK9+tgB0e9IkkiSR68zYbHOZWdocHBwcRK1WAxFhzJgxjUlMab51dXVhzJgxjfZCg20WVJowxvgfINM2tE+zxNjpafL7ZHLl053AFtHSZX1y6fpcWibN9ek8TAodHeO5Fd6nTC5bAdC0mZ/+j7SJZpNJR9nk/NMbb7xhfQ5H9pdRm+kfbcQ80w+ECcN5XGlpOlTMOV9b2lyydSxXe7Z6uZzLpEszgGjIZ/YZcrKSJxU12eVAJ1ct8znto2hNoydV2czq7u5GX19fkwk3b948DA0NYdu2bU33oAzTrPKECUGPsjrdltdVPpQ3T32AfVWCrUxIltjf2kyS5pLvGlx1yWdapLbgc9zJefRnR16aYvo/sq1O1ud5eT+vKxwaGmo8ILbXXnvh/e9/P1avXo1XXnmliZy8ILNIVJowbLv6zpdlkpUVHZOy8m8dYYrVKDKPzSTzEVCv5/Jdj5yUBNDYKI//GxkMkP8JXxNPNsrggW15P0PKJX0eXt4vr+Hwww/HpEmTcPPNN4+Qfbeb6XcRRqtul28Q20ZIG8WaLzJvyA+JIUysBsviv8gO7oOMWEkTiicqZX1MHLlaWK5Qlml68SXLwRpKts/Qa9GGh4exzz71N1msX79+RJndeh7G9cfq0SnGNNNtVIUwoXkYX/22MHLo2qSp5oK8v/IZF/Zb9GJQDi3LpzB5fZe8Th1BA5r3SJYrBVykA4DDDjsM27Ztw7Zt25oWZboCC3lRacIA4c6aJRIU6syxbYfqdtXhaiOLXFqj+sjG6a66YoMlWjPFmI36yU059wLYNxS3yaHTp0yZgnXr1jVpKN8qh7yoPGFc8N2MWOKkKZP25scQxdbpYjVkmmtKM+j46tEz7zZfiT+ujTJ0nbYXK+kAhbQ0dHs9PT0jnu70BRLyovKEif0zbabMaGiY0FIbmcf1bTOlfJpAXq9ezmLTDi7ozmrr6DayyDzSvNKmlN43mb85/CuX7XO0y1Z+zJgxGBgYwKGHHoqDDz4Yv/zlLwGgMbHJ179bTlxm2QQjyzyM7zimHts5nxxaXr6WGML5RnYfmWLq1JC+gNzcgmXlpTBAs69hzM5HlV0TtK5voNkPYbJwsIDbOe20+rON//7v/w6g/kQoh5SNMSO0VxGoNGGAOKedv7N0+CI1jK3DuvKFOnsauWJIZWsbsL+sNVSvzcxytWcz3bhdDbl7f+hJ0AsvvBAnnnhiY4cYY+pPefJ7aUKvesyKXZIwNpPGV87VXpobnnbux2XS+MzJkMwuvyJNfbYOb+vATHDbWjJgpJPPkP6FfL+l3r3fdm1MplqthlNOOQXLly/HFVdc0YjA6RXSZaDShPF1fNvoY7O5Q53edmPz3OyQ/yHr57w6rOwqJ9Nspp8ttKzz2mSzTRrKsLCcwec8XA+bR/rey62WpJ8SugZ9nuuWG/gx2TZu3NgU2uZwtgwvF41Mm5ET0deI6Cmqbzj+b0Q0WZz7AtU3I/8dEb1fpB+fpK0nos/HCmgzAXw2vCuf77x0LGOCDKGPzhd7LWlkzyKX7qC267VFwjSpJDGZFDKPXOKvBweWgTu13pyD63JpCSLC1KlT0dXVha1bt46QR2q9MrRMDAV/gPo+yBLLAfy1MeYwAE8j2WOMiOYBWAxgflLm/xBRNxF1A/hX1DcrnwfgtCRvEK4/Xo9qWfO5TKky28yaV3Yq/UlbRl+v7/7rNoCRgQodPZPBAgmOfsmJSUkQG1G5TtYY++67LwDg5ZdfbrTFdWs5i0amzciNMT8XP1cC+HByfDKA24wxfQCeI6L1AI5Izq03xjwLAFTf6O9kAL+NaN97To/ErjKhcGradkPnQnXq0ddVNs0oKctLEybmGmzyugICMvzrmh/RZp584at+ojIknyRZd3c33va2twEAVq1a1RQkkGFk+VLaIlGED/NxALcnx7NRJxBDbjquNyM/MlSxT63qkc6VPzTSxDjraUYrF2FsJNBazrVZRShNmyQyr+tZ+thrsvknUiPoOm1+mO26ZDBBL3+SZJfagzF58mS8/vrr2LZtW1MbmiBlaJlchCGiSwAMAriFkyzZDOymn/VqSGxGPnny5BF/gIbtpbG+UV4jRLC0N91Hct2mNpli5Led0yO2HEz0EhTfdemQsl7Gz7/lHIwmB8sjOzoRNSYVjTFNW77KeyKdenmfWFuwX7Tvvvti27ZtMMagVqs1HkuWssjnb4pEZsJQ/S1iJwJ4r9kpqWszcnjSm2DEZuSzZ882rolL3enkcZpO77J3szqMMRpGy5lm8aVNNj3ixxAv9vq0PyHJwuf0sy5SUwBoPEqsAwGahFouJq005SjZtO+FF15o8oPkCgUuUxmTjIiOB3AxgP9ijNkhTi0D8CMi+gaAWai/iWwV6ppnLhEdBOBPqAcGTo9py2YjS+iR2UaAmMhXKC1W09g6qUsebVZqh9zVposQ2sQr4lqkbPzNT1nargNofkxBdnS9iYbUYjK/XkGt78+cOXOwdu1apza3mYZFIdNm5KhHxcYCWJ4wfKUx5pPGmCeJ6A7UnflBAOcaY4aSej4N4D4A3QBuMMY8GWrbGGM1uSRsnawIDaP/sCzwaRvtD8h2XMTX9dqIocmj23eZaDbowYiX6uu9juWko4343d3d6O3ttUbofNC78w8NDeHQQw9FT08PnnrqqUb/sEXktMlXFLJuRu7avR/GmH8G8M+W9HtR390/GrIzuZB3X7JQ/WlHqRgZtCaQv+V1hAIevva0Q22LbNmWp0hI+bguJgyfZ3NL1q3T+elM1/VIM8p2LLdwWrJkCQYGBrBq1aqGTPwUZnd3d2N5zPDwbrj4Esi2WtlWJma0CfkdEq7nNXxlGNrM1PZ7yCzzEcZWh6tOJoKrLZe2kuVkYECaUpJE2nTijs4+hqxL+zTyHs2ePRvve9/78POf/xx/+MMfRvgo0qdJq81i0faEkRombUjZVn9We1/mjyG5/Nhs/7R+lSskzZpGtx17LbJu6ejzR293xOfl6O6atZfaT2pDhl5fdvrpdbf32muvtVofst2Y/yELKk2Y0EXrm+bTMCF/QJ/P67e42tRk4bZsJpmrDt/1uSJlthE/FHaV2kr6JpJI+vl77U/Y2tCazXY9MrwMAIcccghOOOEEPPfcc3jmmWcaYWQZTpYkDZmbWVFpwgAj99rS0LF8INxpXeVtZcryYWS7+nmQNFE9l0kWM3hoH8UWHJBRLtYU8pl93oVS1yl3d9H+i17g6fJduPxBBx2E73//+xgaGsLFF1+MWq3WmGcZHBxET08P+vv7UavVGn7M8PBw8O11WVBpwsSo1TJNsrRkkfKE2pQdXY7coYCFiyyuzm8z42xaxwWpxaVpJbdIknsb2178qv8b2z3XczZMKmMMjjnmGOyxxx447rjjsHHjxsaeZAzbQFPGBhhAxQkDhDutbSSNsdNtHSovWWLmUKR8Lkc9hizyty8cHbrOGFl99evnYVge/ZYwPvaZSqxdNEm5/KZNm0aU54icb2AoEpUmjLTrXSgzrFwWaXQEJ61J5mrTNRmYpU5Zt23fNLntK3dq7dzLcLJNiwAjX3NhG/j05hZyjkXP9nM9rjV0eVFpwgDuDi0dT/6dpXMUbZL5TA9Zr5TX1iFd8AUBbPcq70jL8x9ywlOO8vptypyHHxHWcz46CCDJrsnCxD/llFOwdevWxgtgOS/7WDwvxP4S3wv2o4pE8avTCobsXDaTIG+dOk3+ziIbIxTd08e2CFksXOVCJpB29DlNfrS5yOn6xavymH0XaR10d3ejVqthzJgxqNVqDQedO7Vt4JozZw5+8Ytf4IADDsCdd97ZWB/mClpITVcWKq1hfB3Ipk1cIVUfytQw0rm2kdP2x4fa9WkYeU6vNJbpNjlkAEAuZNTXwWSJMXm4Drlimcnku17+PW/ePOy333647rrrcP311zdm8fkdmiwTR+3ktVZq8WUrkWWbpdBI7Rrhs8D1Z/uIrjuy9kE0pBMdEyb2pWuNo0nG37Z7yf4Ey+57eMzmT8py8nEEG/mGh4cb2ufHP/4xent7m5bsh0gX8n2zotKEiVGv+s9xkcXnT6RJjy3nMpGkLJo4Lh8kdM5FDE3ILJC+hSaLq1NquVgrSY0lfRCZV2L//etPhGzdurUp6qav03b9lXseplUI+QLyT/OFZUMjfmz+0PkY30UTmx3VNBOvMVrSRV7bknoXXPdXv7eSz8s8UjPKCCBrGBlM0LJPmTIFCxcuxLPPPosdO3aMcOC176cHFFudRaDShNGjie28yyxIa5Lp4yJMNB+ptIyaRDEkdk0A2swgOdra7qsteiWXp9jI7lojpuuXWlLK5CI6EeGaa67B1KlT8dGPftQrExPDpk12O8IAbh/BluYyyULkibmxvjpsK35j5LRNCEr5Y/9wV6eWdYTqsp3XJpccnPR6MduILlcjS5LYrm/ixImYOHEiAODUU0/FkUceicsvvxyPPfZY046YTNRardYkm9RYnL+MsHKlCSNVvy0ECriXyut6fG3EjOauOmwzz/Lb16Y2K2Jn/EP1x8oRgmxfPjHJx7It+TIlXZ6jWjYT7qqrrsKJJ56ICRMmNLX92GOP4Uc/+lEjn9RoHCnjc3LnS7laYLd8HibWRHGZAa46Xc5mjEnlyg/EP3dj0wahtkMk1A5wGU6vlkuGiWUedvJlBEyT5eCDD8aiRYuwevVqrFixAps3bwZQHwQffPDBhoaSdTBBuG0OHBhjmrZz2m1n+mO1Q+wMuz6O8WeywlWHy/TSplqa+l2dUg4OIbli6tdtSTPL5gP6BhR+aeu1116L5cuXNy2TcWlurtNm0jJ5XNddBNqaMIB/7VYWDWH709MghnQ2rZKGLC6ZY03StIOB7vzat/HNyTBsYfE3velNAIDXXnutKWzMsE2c2iA1TFr/Ly0qTZiYDuQzbWI6RhUWX+rQaJpBQsJG1rwdx6XFtc/F8kutIzu43jft4IMPxhe/+EVs3LgRa9asce4zoM0s9p/kszSDg4Oo1WpN/yURoaenJ9e12xCza8wNqO8/tsUY89dJ2hTUd7ucA2ADgEXGmO1Uv9qrAZwAYAeAjxlj1iRllgD4UlLtl40xN8YIGOvc2giTZ7QOpYXk8ZXXMvue6Ukrs2suBhj5/L2tXrksJsZk5A329N5qckWxdsCJCFdffTVqtRrOOOMM9Pf3Nxx2hg6Dc/1MDs7DKwL4W2qq0XL6fwDgXwDcJNI+D+B+Y8xXqb4T/+dR36fsA6jvRTYX9a1glwI4MiHY5QAOB2AArCaiZcaY7b6GYzqQnijT5UPwlcmiYdI8QKYjWXk1jCxbpGlii7gxqeSMv9YwWiYm6eWXX463vOUtuOqqq7Bhw4bGOf24s4Tei1n7MFymLFOMkWkzctQ3En93cnwjgIdQJ8zJAG4y9StYSUSTiWhmkne5MWYbABDRctR39781on3vOU0U7XyG6ogxb2IQS1Y5WvJvH+ldcF2jS8PFPF3pasdGFJsPYyMLl+EOv2TJEpx11llYuXIlbr311iaCuxx+Cf14s5ZJPkZQpXmYGcaYTQBgjNlERNOT9NkYuen4bE96ECHCuHyGLNohr8Mv68gScMg6geoii+t+aJNM16nXfMl8Pl9R+yyc/u53vxunnXYajj76aEyePBlPPPEEPvKRj4x4iEwuMLVtDsi/tUkmv9ksK0vbFE1B12bkrvSRFYjNyMePH+8dqfV31Zx+n/aymWSxcoe0YhnmmDzmZ1L0hCLnkevDLr30Upxzzjl49dVX8cADD2DDhg246667RjxFqTWvNk/l05YyP7elCcZarWhkJcyLRDQz0S4zAWxJ0l2bkT+PnSYcpz9kq9iIzcgnT55sQuaUbRRNQxhL+7nyxGoJW0fM2tHzXG8ILlmk36U1D5+fOHEiFi9ejKeeegqnnHIK/vKXvzRpFW3eSXLYTDU5T6MhAw02s60oZK1xGYAlyfESAPeI9DOpjqMAvJKYbvcBOI6I9iaivQEcl6R5wR3L9eE8ro+vLH985bN8QtejfRbdydL4MLbrtdVjky8kd+zAoTW7PL7kkkuw11574corr8SOHTtGPDHpas8mF4eWbe/KBOyPM4yKhiH7ZuRfBXAHEZ0NYCOAjyTZ70U9pLwe9bDyWQBgjNlGRFcA+FWS759MEgAIIdQRi46S5TVjbOVtctmI4/I5YtqQ53wax6XFXKuVuYxeCyZ3mLSR5oILLsCZZ56J66+/Hvfff3/jaUnbXI3rWqU2YVPP9j/La9DmWdGgMtR4Udhzzz3NUUcd5Tyv7V7bSBdC0WFlVxBCQtvnco4hBrperaXSlo/Na+vkvBcZHxMRlixZgiuvvBI/+tGPcOGFFzYcem1mSXNLQ0bM2JnnORg9FwPUNxTk52zkI9Fr165dbYw5PPqCA6j0TD8Q7gA2kqQZWYrWMLbR3UVKlyYI+SRpSGHrlGkHE9t+YYzu7m4MDAw02pg6dSouvPBCPP744/jCF77QmNjUMus9BPgjI2b86evra5CSd46RMvIsPy/4LCOczNilCBMzusfWn1Xzxkxcaln1fmRZSMsdT9ahJ/tCL2J1QU+sSkhTzRiDK6+8EmPHjsXFF1/c5CMyIVzQ52W0zaWJXNfD/91uufjSB5dWCY3QoTptx1nls0FHxXR6lnpt9yGv9owxnbT5O3PmTDzyyCP4zW9+4/RPOE2GlnU+2/Mzug7fYFcGWYA2JwwQJkqshgqlxcoQKu/zP7LIkYXgaX0Y3YbsjLbnXWwRLwlbZ5YaRmtLqaU4b+gayiJNpQkTct5dnT3NSJrHT/DVFyO3q4PF1K+Rh7QhsHnnG+11vTpNm1yulQYxnVwTyKYJy5qHqTRhgHSjZhERv6Kc/lBdktihIEAaGbMSLgQpq16X5kqztecyv+THptVc1+IiYVmo/FaxPhRBEEbRa4+ydOoY0ufRfGX4ZD6SxwwANqLZjn1t5PFZ06LyGiYGaXwWXaaMya0sKEIOm69RRCfy+QM6ihWraTS0rCHfyVdWlikabU8YH1nKHnFs9cd2fFs0qwzS6Hpts+A+W1/Lpn0PvdmqUKPCAAAgAElEQVTErFmzsHHjxqb8cn6FnXntwNuCITYiAmjaS1l+czmbrEWh8oQJObm2TpFHRZcRadJlXGHlrJDXKycbY5bpuNJc9evOKTu2MQZjx47Fn//8ZwAjHxPQkbA01yeDBy5knaBNg8oTJm+0Kmv+Muz9IhBbb5mmptbqNnNMayJXJIzzuvJrUgI7BwO53ZKsW276VzQqT5gQfJoly7qqNDfZN8scasvmrPo6lQ9F+2NyESNv0CflkpuSy44pI11SLi7DCzC5DSaBroevRRJR1mELJ3M6y+XzefKgrQnj6ux55mGKDCtr6Ik4n2kWE1bV9cbKZCOjXpai65WaQBJJriKeMGEC9tprL7z22mtWkvEbjvntZLbrcoWduXytVmu8cQxoXi1gk7VoVJowxoR3/nD9uVlNl7whyiyrlX1rtWLg0lCuawkRRk4CSpNIy6rvXU9PD7q6urBly5YRDjs7/TJ872pDQ5ZnGfTDZLaynYlLyzn9/EfasHKaMjGIiXhpDaM1jw82s01ei+7sugyX85HI1p7N3NUEnzJlilVG/uhFplpOm6wStnvqC53vlhrG9ryLhG1rnjzL+0PpIcRoKNfzMDpEm1XL+fwyV5QqpnPx4MQmmb5Hp512GgBg1apVI9qX75OJccg18XUZLS/nkz5SGag8YbKaZPI7pryt7SzIsrzfpmnyyKDLSvPIpsVCE5xy/oQ7Lh+z8z5hwgScc845WL58OR577LEm51w/9+8iq14iI5/DYdnlPeInOPnVF/IZmrJQacKMBkIOuESsytcjo8/PyUMSV9u+GXJfmiYaw6Yh9tlnH4wfPx7Lly9vqsumVVztyslNeSz9pZBDnya6mAVtTxib0267UTqfbfNrXU8IIf8qlG7zD/KYYS6/xSdLaLLPJa9OP+KIIwAATz31FICRM/g2c0qSwjYXo791Odu+ZEQ73/JcxlxU5QkT6pT6j0u7NKXod7rH+FGuVQp5ZAk5+hppZ9ylOSXJ0N3djRkzZuCkk04CADzzzDMAdpph0hexaQWXvPrhMv0qDB00kQOgbLto5CIMEf1PAP8DgAHwOOq7xMwEcBuAKQDWADjDGNNPRGNR3595AYA/AzjVGLMh1EYoaqJNBVmmKB8gDdJMlmqbPmQO+iJZvhHdVl5ODGaV91Of+hT+8R//sbFL/tKlS/HSSy+NIJacVJSyaJJLGeU5ub0Sb9PEBJGz/exPcdkqbRULIpoN4DMA5hlj3iCiOwAsRn2bpW8aY24jou8AOBv1TcnPBrDdGHMoES0GcBWAU31txGiMVsz0xyxUjJmE1I63ljNkRsWYgCGiS1liBgWttfhz6qmn4itf+QoefPBBPPTQQ1i5ciUeffTRRrlardZ0vXJBpN4a1jb5qPdOZhKwk1+r1Rrk6enpgTEGY8aMaUyOlrU0KC8FawDGE9EAgAkANgE4FsDpyfkbAfwD6oQ5OTkGgDsB/AsRkQn8ayHTRv6ZWVYru8wgV1neSsiVP2ZhJctdpEmm5YhBrIbR1zRr1ixcffXVWLVqFRYtWtS0a4x01PXEpZy8lES03VM9yMhlMXK7WK2p5D2Uu8sUhcyEMcb8iYj+N+ob+b0B4OcAVgN42RjDsWC56XhjQ3JjzCARvQJgKoCtWWVI6gLQ2tXKMSN9qHwRppirXt2JpP+gtZgv2mSTq1ar4ZprrsGYMWNw0UUXNbY3ApofZZY7VeqJWSkX0OzES3KxSaXXlUniSNOLtY7NBCwKeUyyvVHXGgcBeBnAj1F/P4wGSx21ITmJzcj5RTkuaK1S1MRlnhsd07ZLw+SdE9IEjPFn9DmdzrKOHz8e5557LhYuXIj58+fjvPPOw69//evGnmC6HP/WCyF1VEyGkfUcirwvcl5HkgVAk2knw/ZVWxrzPgDPGWNeAgAiuhvAMQAmE1Et0TK8GTmwc6Py54moBmAvACO2izViM/Jx48Z5LTbZ6YDs+3nFpOWpz5bHpmHStqs7qYsYLqc6Ji/L+cEPfhCXXXYZtm/fjs997nP44Q9/2Ajf2swnXY80qWwRMx3ml4STdWhSybeQcXkuWymTDHVT7CgimoC6SfZeAI8CeBDAh1GPlC1B80blSwCsSM4/EPJfgLAv4MqXtdPbOl+MSeRrP6Zjx7YpO4StzZCsMXlsWLhwIV5++WXMnz8fvb29Dade+yr8rR14dtT1En2Wia0F+eAbf/MqZf6WbUlzTEJvXF4U8vgwjxDRnaiHjgcB/Bp1zfBTALcR0ZeTtO8lRb4H4IdEtB51zbI4pp2QSeZ7e28MaWICBWn8mhgTT2uY2ChZ6Jys06dJZB7bsfzNsk2dOhW/+tWv8Prrrzt34Jdl5beG9Htscyqu+qT8IdKXMQcD5IySGWMuR303f4lnARxhyduLnbv8x9YfFSXTBMnjw+TVMLbO7/ILYn2YWLg6fwxs16jrkUTX16nLx5AGiNu+1kV6HTxg+PZQy4vKz/Sn0TAxIV2NtGFlDRsZQuVjCBMzgttkjiGLLY+LMIcccghOOukkHHDAAdi0aVMTYaTp5fJNJGQ4WQcFXLLIGX7+v10vVpLzOSFZsqKtCGNTzVIj2LSDawTU52PTXUhjDsY4/Xl9sDR5XCSbM2cOHn74YUyePBnbtm3D1772tRFaX0866hCx7rxSs2jI/8gWBZOOv2xLmnf6fNGoPGEk0jr2WTpgWao8to087fu0i3aybekS3d3duO2229Dd3Y1jjjkGTz75ZNNzPLItOSkpNY6eh7GB69IkY8LoKBhDry2TETRZtmi0FWFssJEiTadLq2FsWs737Srr0zAxZW3nuU5p9oTMNGMMjjnmGNxyyy2YOXPmiPOXXnop1q5dO8IvMKZ5u6U0sup8NtK6HPssEcsiUWnCyE4lYYsAZY1upS3jMvFiTTH+DplktrIxIWNffTbNcu655+LrX/86nn76aXz3u99tyv/EE09g2bJlzrkc2wSkJoG+X9J8YmgTSj+/r6Gfm9HapqwIGVBxwrjgIkpZGsY1AsbUW+afF1u/MfUFildffTVOP/30ps7V09ODFStWYOHChdi2bZsz2iV/686q020EAkb6JbbOrdNt/opM08tpbGWLRFsSxgZf6LGIurPWYysbImlMiNZ27HtD2Oc+9zl8/OMfxw9+8AO89NJLjfOvvvoqrr32Wrz22msjHPjY8LQ2wXwaCfCTRdbhayckR1moPGHyOshZo12+dN8f4zMNY/9QV4eR6WlJPHPmTGzZsgXnnHOO13eIgUuD+GRyLeWPmYfRbXO5vNeRBW1DmFBY2BVWjq3flx6jIWz+gq+cyz+zlQ8RJasGDBGzLOe5zA5eNnkqTxiGq5MWHaKNIUOshnGRLjY8HiKNTnOlp61XH/tgazMNynrQqyxUnjCxhIiJOtk6bWxYORQqDWkY23kXcWLMHFdHldelyeSSz0eUIvzAtBrRFWhI22YZ2qZtCBMyyeRxLAnS5In1YWLKxJAr5MNkTU9bhw1pNHfRZGtFmz5UnjCM0Kie1tkO2emhsq60LPXZyuU1lXYFlLkhX1ZUT6KUCPkxMo/8cHps/WVE2/Iib10x9200UUX/ptIaJo1TnzVK5qvTdy7k08h0l5aqEnl0Xa1w+NsRlSZMXhTh9KcxoVz1hepyoRVmWZU7exVNssoTJjTix4ZoQ+diyuTtWEVoQFudZZMnbxuh0HY7oXoUzghtkmXtlL6yaeot2uQqC7EadDTQ8WEyIGRWpdEoaUyyNDL56nGZY6EIX1GIcezLHunbUZO4UHnCaMSM/kVEqHxkyypfaImNjVwxZlLaycaqmENVkSMNcplkRDSZiO4koqeIaB0RHU1EU4hoORE9k3zvneQlIrqGiNYT0WNE9PaYNmzhYNv5ohBqJ28ELjYMniY9L8rWdrrOWFOrik5/XomuBvD/jDFvAvBWAOsAfB7A/caYuQDuT34D9V0x5yafT6C+33JqhAjky2vzc9LUF6rXFuZulblVBZ/Dhyr6I1mQmTBEtCeAdyHZd8wY02+MeRn17WNvTLLdCOBDyfHJAG4ydaxEfYfMkc/EZkSazh/TubIQSZZL216a+tsZRbx/dDSRR8McDOAlAN8nol8T0XeJaCKAGcaYTQCQfE9P8jc2I08gNyp3wjealzGKl2X6pSVRVu2RNZiRJpCRt952Rh7C1AC8HcBSY8zfAPgLdppfNti8uxF3k4g+QUSPEtGjaUaYkFlUFOHyaBCbfK46Q/XEtJ21s7bCV2pX5CHM8wCeN8Y8kvy+E3UCvcimVvK9ReTfX5SXG5U3YIy5zhhzuDHmcF524fMTbMiiDdL6IC6fKKb8aPge/JawdsIu5fQbYzYD+CMR/VWS9F4Av8XOTceBkZuRn5lEy44C8Aqbbhnajhqds3RGlwbJqkWyyqHL5a1z//33xwsv7Byfsppsu4KWyIO88zDnAbiFiHpQ31P5LNRJeAcRnY36Dv+8n/K9qL/Obz2AHUneIIyJXwgYa4dnffyWy4TmU1xly5pziKmbiLBjx47UdZYpdzsi72bkawEcbjn1XkteA+DcjO04021/aFkOta1MmgWRVR+dY4lXFuTbkKuKaksXiTI6YmxAwEW+NOXSyJQV48aNK7S+3RWVJ0xsNMsXCk7jl+T1YYoolwW+dg4//HC8853vxMMPP9wSWbKi6toFaPO1ZGkd4bydN6vZpctllcPVNqe7wvD7718PTt51112Z2vW1vbuh7QijEevopykfyp/F6S+i7aw48MADAQCbNjUHJW27s2jEBlx2F1ReB8b6Eq2EzdSL0W6jdQ1s6rz22mtN6TEaupUyV3EpjEZbaRjfHxwz/5HGLPKVjS2TNU+RqNJAsyugrQhjQ5pRMU+HTjsf0cr5izRtVXlepR2c/spLGBsly1t/nryheaKyUebcSSvJFXpTWRVQecJouAhURAQsDXHS1BMiWRbZYzsyEWH27Nl444030NfX11TO5/Rn2eFmd8AuZZLFdFQ5Mx9Tb9ptlnz1hR4bLgvjxo3D9u3bG++P2dV30SzzuipNmDwThlnO2c7blsFkRWxErUi088g/PDzceMVfVdB2JplEESZZmXM2HWRDle9zpTVMDGJMstCG4llIEwpRh0y6tO26kMfh3xXNsbJRecJkMa/S+he+OtLutu9KLwu7qh/CqNr1tbVJJlGUGrdF3/JGz0Zzlj+PP2fLGxMhLPJaq0QWoA01jI5yhUyyop5RiTXvYtuqsp1eBEZLM8h2y7jHlSeMRkynC920rE9cyvpiiFjlfYvbBR2TrCSk8Vtil8ikMT9ck6lVIMfcuXPxxhtvtLzdVl17K+9x5QmjZ/ZdHVUf523P1n6aOny/Y9v2lU0jzyGHHIKVK1dG528HhFY2l0WitjPJJNJOQgJ+Hyimvaw+jK2slCF2NXQW84SI0NfXV1r9o4XRkDe3hiGi7mTny/+b/D6IiB5JNiO/PdlRBkQ0Nvm9Pjk/J6Z+m1bhdJ1Pl/HVlxUuedKUdZ2zHcfW6/pdq9UwY8YMvPLKK1Fls8owGhgNchdhkp2P+ibkjKsAfNPUNyPfDuDsJP1sANuNMYcC+GaSLzV8fkORJlksKVxtx/hArUCtVkOtVsOWLVvCmS0oS852IKQNeV93sR+A/wbgu8lvAnAs6rtgAiM3I+dNyu8E8F4qeYjwdX6fX+SqJ02bvrJFdZYqhKlHs+OPRtt5Ncy3AFwEgD2wqQBeNsYMJr/lhuONzciT868k+Z3wOfxZo1N5tJCLWLE+TNq2iqing2KR53UXJwLYYoxZLZMtWU3EOVlvYzPykAy2jlvk6B0yqbJEz7LIlydCl7ZMjBmZ1YfbFZAnSvYOAB8kohMAjAOwJ+oaZzIR1RItIjcc583InyeiGoC9AGzTlRpjrgNwHQB0dXUZV6QrZpSPjZL5FlLy77QrBmLKFdHh2i2y1SqUdU/ybEb+BWPMfsaYOQAWA3jAGPNRAA8C+HCSbQmaNyNfkhx/OMmfqceERrq0JlnMiJkmwlW2b9Fqc61KmmS0ZSlj4vJiAH9PROtR91G+l6R/D8DUJP3v4X+XTCa0wkzI0kas9qsa2kHGVqOQiUtjzEMAHkqOnwVwhCVPL3bu5J+m7sz5fGZRyJQJmVRZSONa3xZjVmU1vXhP5d0tmlUW2n6mP2b0DplnZfgwafO4rsNHWN+z+bNmzcI73vEOHHbYYQCA559/PqreVqNKssSg8oRx3dAizZw0nT2NLK3sCFKGBQsW4Kc//SmmTZsGoL7j5SOPPOIq2jJkvSdZ/9cy7n/lCQNUS6XHmnLyOOsfl/Xx4ksvvRSTJk3Cu971Lmzfvh0vvvgitm/fnkmGIpF17+YqoS0I40JMZEuiiB30s5QtQ9v46nznO9+Ju+++GytWrLCezzrKZ/EFW42yZak8YWTnjN14IqYumRZDpLw+jK1jZSkTg1qths2bN6cqE/KJZL5Ww7bBYFdXV+O4lYStPGEkfM582RojrQ/jqyOPrxXqHLNnz8Yee+yBrVu35qonlNcWMHEhZMIW3eHLJFDlHyALIe0kZcy5UHu+36H0ImEj4EEHHQQAWLt2bWmDSCu1TJXMPaDiGsbWqWM2OPB16iL+gNi2W2nfa5kGBgZa0q6t7V0ZlSaMDXlHvrR+ThHbw1ZtlMyK0biWqt2/tjbJivBhWIv5JkFjidgK8yzWJCyi7jLaaEW9ZaLyhHF1aGm/t9JfSHsuTZ4iMGPGDADAjh07ctfVKpl97YxGJMyHXcokC+XJOw+TJTQcKl90mUmTJgEAXnjhhUDO4lDaUvocbyQrS6a2I4xEWvOkiBFThpeLiLKFkHWysJXmTjuaVllReZPMhTJt+Szttxq29vfee2988pOfxI4dO/Dyyy+PglS7PiqvYWwdo6glLqF2q2I3x2DWrFl44IEHcPDBB2PRokUjXjEeC9vKh3a6D2Wj8oSxoRWRIXkuTYfhDtbKjjZhwgTceOONOPTQQ3H88cfjF7/4RUvaDaGo64+th4ganyLbl2hbkwwYfbPIhVYTeunSpXjPe96DCy64oDJkyYMqa7S2JkwIRc2NVJWY3LGmTZuGp59+Gt/61rdGWaJdH21LmNAaMT1nk2V1cxHy5EXMszcTJ06sxPMuWZFXo7RSI1WeMKGZeJ03pq6scoTOFRW507Z4KO9RRx2FJ554wnrOVaZdEPsQXZ45mzTI7PQT0f4AbgKwL+o7X15njLmaiKYAuB3AHAAbACwyxmxPtoW9GsAJAHYA+JgxZk3adkfTxLJFkNKWCYHzvulNb8JnP/tZ9PT0ePOPHTsWtVoNjz/+eHQbRSPrk6GMLAES+VxMK5EnSjYI4HPGmDVENAnAaiJaDuBjAO43xnyViD6P+nZKFwP4AIC5yedIAEuT71yoqn/hQ61Wc/7RRISenh785Cc/wdy5c7Fhw4ZgfT/5yU9w/fXXj6jHVncepHn2pYi8tgfHgNaTRCIzYYwxmwBsSo5fI6J1qO+ffDKAdyfZbkR9+6WLk/SbTL2HrySiyUQ0M6lnl4XuDOeccw6+/e1vo1YL3/qzzjoLN910U3TdofQY6LKjab5VcQ6okHkYqr/r5W8APAJgBpPAGLOJiKYn2RqbkSfgjcrbijB5NNrcuXNx5ZVXoq+vD5dddpk376uvvopbbrklc1u7KrKYt0UiN2GIaA8AdwH4rDHmVY+Q0ZuRA/hETNtVNcfkPZg2bRpOOeUU7LXXXrjkkkuw55574oILLsA3vvENb7kyZcpyvsy2iyoXGyjJg1yEIaIxqJPlFmPM3Unyi2xqEdFMAPwmH96MnCE3Km/AiM3IiaiajLDANbu/dOlSLFy4EED9seFFixZh/fr11vJFyVF0/rQdMeu1yI0t8qIsPyfP6y4I9f2S1xlj5HApNx1fgubNyM+kOo4C8Eoe/6Vq2sUmz+LFi7Fw4ULcddddmD59OhYsWGAly64Cn/+jO3DVfJNY5H3dxRkAHieitUnaFwF8FcAdRHQ2gI3YuZ/yvaiHlNejHlY+K0fbow4iwsc+9jEccsgh2HfffbFgwYIReebPn4+HHnoIZ5xxBnp7ewtps8hyWc20IiNwacqNZnSMkSdK9kvY/RIAeK8lvwFwboZ2mn5XYWQaO3Ysvv71r+Pcc+uX09vbixUrVox48eqqVatw0UUXBclSVLQrtiMXGUVrVdmqoO1WK4+2KXb00UfjnnvuwT777IPbb78dixcvrmwYt4y5mCJkiCmTVpu06rpGX8dVHOPGjcNnPvMZrF69Gps3b8Z//ud/AgA+8pGP4KMf/Whbjbi7wgg/2mg7DdNqXH/99fi7v/s7/PGPf8Q999yD/v5+LF26FL/97W+b8mXpjK2emCujvd2NhLs1YQ488ECcf/75GD9+vPX82LFjcfrpp+Pmm2/GmWee2bLdadqhE7aDjGVgtyPMrFmzcOKJJ+KKK67A9OnT0dvb633+/Wc/+xnOOeecUfedOkiPSs70txPOOOOMxtqstWvX4pprrsGtt96KZ5991pqfJyNDKDKkWoUZ93bSHjZZyww/7zaE2WOPPfChD30IAHDiiSfi3nvvLWRbpqp2rjLkavU6rire212SMESEmTNnYv78+Xjzm9+Mk046Ce95z3vQ3d2Nu+66Cz/96U8La6cqGE1Z0radVwOM5rXuMoTh9zmeffbZ+PSnP4399tuvce7FF1/Ed77zHTz88MO4++67XVVEoUokYZQ9dzNacAVAjDFe0g0PD5dmlrUtYY455hj87d/+LebPn48FCxZg3rx5jXMrVqzAt7/9baxbtw5PPPEENm7ciKGhoei6y+40aWbkY/Ydzlq/Lz32fNq203RkLhe7Do0XiRa5iFOj7QgzduxYXHbZZfjiF78IoK49Nm/ejC996UvYvn07nn/+eSxbtsxaVnbAVjrXstOHOlQaufKGoEdDm6Qd/WXeKmi/tiFMV1cXLrjgApx33nnYb7/9cPPNN+Piiy9u6abbrYAkQRl7BmRBK54zyYNWLspsm6Ux11xzDa666ir86U9/wqJFi3DGGWekJovtdRllIO+rMVqFWFla9UqRdkDlNcy4ceOwcuVKvPWtb8V3vvMdfOpTnyqs7jJH5zx1t8tsfxZUYYl+HlRa+lqthgceeABvfetbcdNNN+G8884bbZFSIXZkLnuTwbzIapLZygwPDxch0qih0oTZZ599cPTRR2PNmjU4//zzMTg4WHgbHXOjgzSoNGFmzpyJ++67DwsWLCj9fSejTZx2JG1I69iuKWSSVd0UrbQPQ0TW3VXKRCgEXDVUUcasa9bShtdHwx+qNGGA0R15WzFnkxV5Jy2Lnr+x+TkyLfRkaajzu+ZjbPW72iwClSfMaKHVD1r5zudZZZyHLL6yeTplFQegWLRcpxHR8UT0OyJaT/W9lysBHg2LmKTTdYWWcujRsShZfCN+2rKutLR5syB2aU3WFRNp0FLCEFE3gH9FfWPyeQBOI6J5/lKly1TYzS2irio4/2Uut0n7/EoMCVqpsVptkh0BYL0x5lkAIKLbUN+k/LfeUg60WrW3YlVwmjaKGvFD51wDgcsvSdM+k0W2Ebt4shUaRaPVhLFtSJ76lRd5zIosKMJEKyJflvN5iCkJII+5Q3d1dTUda1OSzzO6u7utpNAmly0P1yPbtH30uaLRasLYrqDJBqHmzchfB/BnAFubCqRYA1UCpml5Rhkdefz4qyIrazVhghuSy83IAYCIHjXGHN4a8cLoyONHFeUpsr5WR8l+BWAuER1ERD0AFqO+SXkHHbQFWqphjDGDRPRpAPcB6AZwgzHmyVbK0EEHedDyiUtjzL2o7+Qfi+vCWVqKjjx+7NLyUBXi/h100C6o9GrlDjqoGipLmNFYQkNE+xPRg0S0joieJKLzk/R/IKI/EdHa5HOCKPOFRMbfEdH7S5BpAxE9nrT7aJI2hYiWE9EzyffeSToR0TWJPI8R0dtLkOevxH1YS0SvEtFnW3mPiOgGItpCRE+ItNT3hIiWJPmfIaIltrZGgJ8DqdIH9YDA7wEcDKAHwG8AzGtBuzMBvD05ngTgadSX8PwDgAss+eclso0FcFAic3fBMm0AME2l/S8An0+OPw/gquT4BAA/Q32+6ygAj7Tgf9oM4MBW3iMA7wLwdgBPZL0nAKYAeDb53js53jvUdlU1TGMJjTGmHwAvoSkVxphNxpg1yfFrANahvjrBhZMB3GaM6TPGPIf66wiPKFvOpN0bk+MbAXxIpN9k6lgJYDLVX8xbFt4L4PfGmD948hR+j4wxDwPYZmknzT15P4DlxphtxpjtAJYDOD7UdlUJY1tC4+u4hYOI5gD4GwCPJEmfTlT6Dazu0Ro5DYCfE9HqZBUEAMwwyQt1k+/pLZRHYjGAW8Xv0bpHQPp7kkmuqhImuISm1MaJ9kD9deqfNca8CmApgEMAvA3AJgBf56yW4kXL+Q5jzNtRX+F9LhG9y5O3ZfctmXj+IIAfJ0mjeY98cLWfSa6qEia4hKYsENEY1MlyizHmbgAwxrxojBkyxgwDuB47TYrS5TTGvJB8bwHwb0nbL7KplXxvaZU8Ah8AsMYY82Ii36jdowRp70kmuapKmFFZQkP15a3fA7DOGPMNkS79gP8OgKMzywAsJqKxRHQQgLkAVhUoz0QimsTHAI5L2l4GgKM6SwDcI+Q5M4kMHQXgFTZTSsBpEObYaN0jgbT35D4AxxHR3on5eFyS5keZUZSckZATUI9S/R7AJS1q852oq+XHAKxNPicA+CGAx5P0ZQBmijKXJDL+DsAHCpbnYNQjTL8B8CTfBwBTAdwP4Jnke0qSTqg/oPf7RN7DS7pPE1BfRb6XSGvZPUKdqJsADKCuKc7Ock8AfBz1IMR6AGfFtN2Z6e+ggxSoqknWQQeVRIcwHXSQAh3CdNBBCnQI00EHKdAhTAcdpECHMB10kAIdwnTQQQp0CNNBBynw/wFEeNImmm8AAAACSURBVPP/bmjgSQAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "signal1 = scipy.io.wavfile.read('.\\\\envelopes\\\\10_de_A_dn_1_nf.wav')\n", "signal2 = scipy.io.wavfile.read('.\\\\envelopes\\\\18_de_A_up_1_nf.wav')\n", "\n", "d, cost_matrix, acc_cost_matrix, path = dtw(signal1[1][:1000], signal2[1][:1500], dist=euclidean_norm)\n", "print(d)\n", "plt.imshow(acc_cost_matrix.T, origin='lower', cmap='gray', interpolation='nearest')\n", "plt.plot(path[0], path[1], 'w')\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 65, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "185.2948\n" ] }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "signal1 = scipy.io.wavfile.read('.\\\\envelopes\\\\10_de_A_dn_1_nf.wav')\n", "signal2 = scipy.io.wavfile.read('.\\\\envelopes\\\\10_de_D_dn_1_nf.wav')\n", "\n", "d, cost_matrix, acc_cost_matrix, path = dtw(signal1[1][:1000], signal2[1][:1500], dist=euclidean_norm)\n", "print(d)\n", "plt.imshow(acc_cost_matrix.T, origin='lower', cmap='gray', interpolation='nearest')\n", "plt.plot(path[0], path[1], 'w')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "TODO Spróbuj zrobić podobne porównanie na innych dźwiękach. W folderze \"digits\" znajdziesz cyfry wypowiadane przez różne osoby. Zobacz jak tutaj będzie wyglądało porównanie. Hint: ze względu na to, że tworzona jest macierz N x M, zgodnie z długościami poszczególnych dźwięków, może się okazać, że otrzymacie Memory Error, spróbujcie wówczas zadziałać nad jakimś fragmencie tego dźwięku." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# MFCC" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Mel-Frequency Cepstral Coefficients; W porównaniu do innych metod analizy widmowej sygnału ta technika pozwala na lepsze odwzorowanie ludzkiego systemu słyszenia, który opisany jest nieliniową krzywą." ] }, { "cell_type": "code", "execution_count": 94, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 94, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import librosa\n", "from librosa.display import specshow\n", "\n", "windowMFCC = 512\n", "windowFFT = 512\n", "\n", "y1, signal1 = scipy.io.wavfile.read('.\\\\envelopes\\\\10_de_A_dn_1_nf.wav')\n", "y2, signal2 = scipy.io.wavfile.read('.\\\\envelopes\\\\10_de_D_dn_1_nf.wav')\n", "\n", "subplot(1, 2, 1)\n", "mfcc1 = librosa.feature.mfcc(signal1, n_mfcc=12, hop_length=windowMFCC,n_fft = windowFFT)\n", "specshow(mfcc1)\n", "\n", "subplot(1, 2, 2)\n", "mfcc2 = librosa.feature.mfcc(signal2, n_mfcc=12, hop_length=windowMFCC,n_fft = windowFFT)\n", "specshow(mfcc2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Zastosowanie MFCC: np. rozpoznawanie rozmówcy ( http://www.kms.polsl.pl/mi/pelne_9/31.pdf )" ] }, { "cell_type": "code", "execution_count": 82, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Normalized distance between the two sounds: 96.56455150525325\n" ] }, { "data": { "text/plain": [ "(-0.5, 110.5)" ] }, "execution_count": 82, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "from numpy.linalg import norm\n", "dist, cost, acc_cost, path = dtw(mfcc1.T, mfcc2.T, dist=lambda x, y: norm(x - y, ord=1))\n", "print('Normalized distance between the two sounds:', dist)\n", "\n", "imshow(cost.T, origin='lower', cmap=cm.gray, interpolation='nearest')\n", "plot(path[0], path[1], 'w')\n", "xlim((-0.5, cost.shape[0]-0.5))\n", "ylim((-0.5, cost.shape[1]-0.5))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "TODO Podobnie jak wcześniej, spróbuj zrobić MFCC + DTW na innych dźwiękach i przeanalizuj otrzymane wyniki." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.2" } }, "nbformat": 4, "nbformat_minor": 2 }