{ "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": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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24fP5yOVSnH66aezb98+nnvuOd7+9rczOjpKNBrls5/97BxLhUcffZS3vOUtpFIpNm7cyBe+8AW6u7u54oorOP/883nwwQeZmZnhC1/4Atu2bSOZTPLOd76Txx57jEKhwIc//GFuuOGGup/hS1/6Et///vcpFos8/vjjvOc97yGXy/GVr3yFcDjMnXfeSU9PD5/97Ge57bbbyOVybNq0ia985StEo1FuuOEGXv3qV/Mnf/InfOYzn+Gee+7ha1/72rz//PNV6dwhpVwlpQxLKZdLKV9afny4HOyRUu6TUp5X/jpbSvmP8z5ql4iGAqRyBZJl/tYJx3va1amKgdgAyXySmdxcz/Va9MVDjM42X7StUDruA76SdYK7gN8V7lp0lhaLHU899RS33347v//973n00Ufx+/187WtfI5lMcskll7Bz505e9KIX8dnPfpbOzk7OO+887r77bgB+9KMf8dKXvpRgMMgtt9zCrbfeyo4dO/j4xz/O2972tjn7+pM/+RP++Z//mV27dnHuuefykY98xHwumUxy33338clPfpI3velNAPzjP/4jV111FQ899BC/+c1veO9730symWz4WR5//HG+/vWv8+CDD/KhD32IaDTKI488wvOf/3z++7//G4BXvepVPPTQQ+zcuZMzzzyTz3/+8wDcdtttfPSjH+Xee+/lX//1X7n11ltb8vdd8p22YFykMxk1z9bFAHOPw19QWG2SnTLh/rKBWiToc914BUqlY3gpLWt35+0ihCAS8JHMFV0Zp530kkyHTHwh8Ktf/YodO3Zw0UUXAZBOp1m2bBmhUIjrrrsOgOc973ncddddANx8883cfvvtXHnllXzzm9/kbW97G4lEgvvuu6/KKz+bzVbtZ3p6mqmpKS6//HIA3vCGN1Rt//rXvx6AF73oRczMzDA1NcUvfvELfvjDH5qdvplMhueee44zzzyz7me58soraW9vp729nc7OTl7xilcAht//rl27AOOm8Dd/8zdMTU2RSCRMD6Hly5fz0Y9+lCuvvJI77riDnp7WnEunRMC3ZvU6KotEPkFboG3eczg92MMqzTyr135eaV88TK5YaqrxCow5xplcESkh1uf+/xoJ+knmikvWOG2xQErJG97wBv7pn/6p6vGPf/zjJu3n9/spFIwE7vrrr+cDH/gAExMT7Nixg6uuuopkMklXVxeP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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": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 3, "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": 5, "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": 6, "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": 7, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ ":1: WavFileWarning: Chunk (non-data) not understood, skipping it.\n", " signal1 = scipy.io.wavfile.read('.\\\\envelopes\\\\10_de_A_dn_1_nf.wav')\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "95512.0\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\\\\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": 8, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ ":1: WavFileWarning: Chunk (non-data) not understood, skipping it.\n", " signal1 = scipy.io.wavfile.read('.\\\\envelopes\\\\10_de_A_dn_1_nf.wav')\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "463237.0\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": 9, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ ":7: WavFileWarning: Chunk (non-data) not understood, skipping it.\n", " y1, signal1 = scipy.io.wavfile.read('.\\\\envelopes\\\\10_de_A_dn_1_nf.wav')\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 9, "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.astype(float), n_mfcc=12, hop_length=windowMFCC,n_fft = windowFFT)\n", "specshow(mfcc1)\n", "\n", "subplot(1, 2, 2)\n", "mfcc2 = librosa.feature.mfcc(signal2.astype(float), 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": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Normalized distance between the two sounds: 22113.282298493385\n" ] }, { "data": { "text/plain": [ "(-0.5, 110.5)" ] }, "execution_count": 10, "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.8.8" } }, "nbformat": 4, "nbformat_minor": 4 }