{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "## Analysis of acoustic signals with giotto-time" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*Data:* Acoustic impulse responses come from the simulated and measured impulse responses used in the following publication:\n", "H. P. Tukuljac, V. Pulkki, H. Gamper, K. Godin, I. J. Tashev and N. Raghuvanshi, \"A Sparsity Measure for Echo Density Growth in General Environments,\" ICASSP 2019 - 2019 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), Brighton, United Kingdom, 2019, pp. 1-5.\n", "[paper](http://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=8682878&isnumber=8682151) and [code](https://github.com/microsoft/EchoDensity/)\n", "\n", "*Task:* Recognize the type of acoustic space from its impulse response. There are three types of acoustic space that we can distinguish: parallel walls, room without and room with a ceiling.\n", "\n", "*More information:* For more information about acoustics and acoustic data processing, please read: Helena Peic Tukuljac, “Sparse and parametric modeling with applications to acoustics and audio,” Lausanne, 2020, PhD Thesis, EPFL. [thesis](https://infoscience.epfl.ch/record/273930?ln=en)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### The task: Detection of the type of the acoustic environment" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "An acoustic impulse response (AIR) is a response of a certain environment to a Dirac sound as the input signal. AIR consists out of direct sound and numerous echoes that reach the sensor when the sound reflects on the walls. Reflections of walls are modeled with a so-called *image-source model*, which are located at the mirrored positions of the real source against the wall. Higher order virutal sources are determined recursively. Each image-source models the propagation delay of the arrival of an echo.\n", "\n", "Here we see the real source and its image sources for an example of one wall and a 2D case with 4 walls. Sound travels at speed $c\\approx340\\frac{m}{s}$ and depending on the position of the image source, the corresponding echo has a certain delay. We will be interested in characterizing the evolution of the density of early reflections. Late reflections are usually characterized as attenuated Gaussian noise." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this demo, the task is to detect the type of the acoustic environment based on the distribution of echoes over time. We will be able to distinguish the following 4 situations in a _domino box_ (sliding lid) scenario: closed, almost closed, almost open and open." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "import pandas as pd\n", "import h5py\n", "import os\n", "\n", "from collections import defaultdict" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from gtime.custom.sorted_density import SortedDensity\n", "from gtime.custom.crest_factor_detrending import CrestFactorDetrending\n", "from src.helpers import remove_direct_sound, curve_fitting_echo_density" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "with h5py.File(os.path.join('data', 'acoustic_responses.h5'), 'r') as hf:\n", " dataset_simulation_sliding_lid = list(hf['dataset_simulation_sliding_lid'])\n", " Fs = list(hf['Fs'])[0]\n", "labels = ['closed', 'almost_closed', 'almost_open', 'open']" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
closedalmost_closedalmost_openopen
00:00:000.000000e+000.000000e+000.000000e+000.000000e+00
00:00:00.0001704.443116e-074.372601e-074.443116e-074.456350e-07
00:00:00.0003401.300656e-051.283440e-051.300656e-051.303693e-05
00:00:00.0005104.364509e-054.311583e-054.364509e-054.377377e-05
00:00:00.0006801.987153e-051.957845e-051.987153e-051.991281e-05
\n", "
" ], "text/plain": [ " closed almost_closed almost_open open\n", "00:00:00 0.000000e+00 0.000000e+00 0.000000e+00 0.000000e+00\n", "00:00:00.000170 4.443116e-07 4.372601e-07 4.443116e-07 4.456350e-07\n", "00:00:00.000340 1.300656e-05 1.283440e-05 1.300656e-05 1.303693e-05\n", "00:00:00.000510 4.364509e-05 4.311583e-05 4.364509e-05 4.377377e-05\n", "00:00:00.000680 1.987153e-05 1.957845e-05 1.987153e-05 1.991281e-05" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "data = defaultdict()\n", "for i in range(len(labels)):\n", " data[labels[i]] = dataset_simulation_sliding_lid[i]\n", "time_index = pd.timedelta_range(start=pd.Timedelta(days=0), freq=str(round(1000/Fs, 5)) + 'ms',\n", " periods=len(dataset_simulation_sliding_lid[0]))\n", "data_simulation_sliding_lid = pd.DataFrame(data = data, index = time_index)\n", "data_simulation_sliding_lid.head()" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "t = np.array(range(data_simulation_sliding_lid.shape[0]))/Fs\n", "fig, ax = plt.subplots(1,4,figsize=(15,5))\n", "for i in range(len(labels)):\n", " ax[i].plot(t, data_simulation_sliding_lid[labels[i]])\n", " ax[i].set_title(labels[i])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Data preprocessing pipeline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since the simulated and measured impulse responses contain a lot of noise - simulated responses are bandimited and measured reponses suffer from white noise and other types of acoustical effects, such as scattering, we need to preprocess AIRs $h[n]$ before fitting any type of curve. There are multiple preprocessing steps:\n", "* direct path removal (since we want to characterize only the distribution of the echoes)\n", "* crest factor detrending (since we do not want to have an assumption of the exponential decay of the energy)\n", "* sorted density feature (since we want to be invariant to the effects of noise or bandlimited measurements)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "# ws stands for window size\n", "ws_detrending = int(0.025*Fs) # 25ms\n", "ws_sorted_density = int(0.2*Fs) # 200ms\n", "signal_length = 1\n", "gaussian_sd = 0.18" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "(1) The *direct path removal* is perceptually motivated and it just removes the $\\pm5ms$ around the highest peak, since the sounds that are less than $10ms$ apart get perceptually merged. This enables us to proceed with the characterization of the early reflections." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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cSFnjHEAk4CBQFtgmDGmbQHtngPmlnSfIpWRck2k9CnPRM4OnTARKTlvjMidB2y11m631mYAnwCX5dPubuBL4JAX9ilSGSnXREqf8kyklOmEiYh3eKOQawjsyTEd55mXzRjTELgCmOyF/YlUVso1kdKnPBMpfTphIuIF3ijkTD7zbJ7pV4Cx1lpnkRsz5jZjzEpjzMr4+HgvhCdSYXgt15RnIgVSnomUPq+eMFGuSWXl74VtxAGNc0w3AvbladMZ+MQYA1AbGGSMybLWfp13Y9baKcAUgM6dO+ftPEUqM6/lmvJMpEDKM5HSd1onTDy5ViDlmlRW3ijkVgAtjDFNgb3A9cANORtYa5ue/NsYMw34Lr8iTkQKVWa5pl5RKhH1aSKlz6uDACKVVYkLOWttljHmLtw3ojqAd621640xYzzLdQ+BiBeURa4Vfg5UpOJRnyZyVuiEiYgXeGNEDmvtbGB2nnn5dnbW2pHe2KdIZaRcEyl9yjOR0qUTJiLe4ZVCTkRERESkuHTCRKTkvPHUShERERERETmLVMiJiIiIiIj4GBVyIiIiIiIiPkaFnIiIiIiIiI9RISciIiIiIuJjVMiJiIiIiIj4GBVyIlIgW9YBiIiIiEi+VMiJSJFMWQcgIiIiIrmokBMREREREfExKuRERERERER8jAo5ERERERERH6NCTkRERERExMeokBMREREREfExKuRERERERER8jAo5ERERERERH6NCTkRERERExMeokBMREREREfExKuRERERERER8jAo5ERERERERH6NCTkRERERExMeokBMREREREfEx/mUdgIiIiIj4vlWrVtXx9/efCkRRRoMFzz//PBs3bsx32dtD6wMUuFykrAUHB9OoUSMCAgKK1V6FnIiIiIiUmL+//9R69eq1iYiIOOrn52fLIoYNGzac06ZNm3yXZcYlAtCmUfWzGZJIsVhrOXz4MHFxcTRt2rRY6+jSShERERHxhqiIiIhjZVXEifgyYwy1atUiLS2t2OuokBORIqlHFhGRYvBTESdy5owxp9VehZyIFOj0/jkRERERkbNFhZyIiIiIyBl65ZVXOHHiRPb0oEGDSExMLNa633zzDc8++2xphQbAggULuPTSS0t1H1I2VMiJiIiIiJyhvIXc7NmzqV69eA9UGTp0KA8++GBphVZqnE5nWYcgqJATERERkQri7rvvplOnTrRr144pU6Zkz58zZw7XDezJNf160KdPHwCOHDnC5ZdfTvv27enatStr164FYNy4cUyYMCF73aioKHbu3ElKSgqDBw8mJiaGqKgoPv30UyZOnMi+ffvo3bs3vXv3BiAyMpKEhAQAPvjgA9q3b09MTAw33njjKfFOmzaNu+66C4CRI0dyxx130Lt3b5o1a8bChQsZPXo0bdq0YeTIkdnrhIWF8c9//pOOHTvSp08f4uPjAejVqxcrV64EICEhgcjIyFP2t3DhQmJjY4mNjaVDhw4cP34cgBdeeIEuXbrQvn17Hn/88Xy/27CwMB577DHOP/98li1bxkcffcR5551HbGwst99+O06nE6fTyciRI4mKiiI6OpqXX345O7Z7772XCy64gKioKJYvX17kbzB69Gh69epFs2bNmDhxIkC+vwHAqlWr6NmzJ506daJ///7s378/389Q0ej1AyIiIiLiVQ98sabxnweOh3pzmy3rVT3xwtUxewpr89RTT3HBBReQmppKly5duOqqq3C5XNx666289el3NGpyDo1CXQA8/vjjdOjQga+//pqffvqJm266idWrVxe47Tlz5tCgQQNmzZoFQFJSEuHh4bz00kv8/PPP1K5dO1f79evX8/TTT7N06VJq167NkSNHivyMR48e5aeffuKbb75hyJAhLF26lKlTp9KlSxdWr15NbGwsKSkpdOzYkRdffJEnn3ySJ554gtdff73IbQNMmDCBSZMm0b17d5KTkwkODmbevHls2bKF5cuXY61l6NChLFq0iIsuuijXuikpKURFRfHkk0+yceNGnnvuOZYuXUpAQAB33nkn06dPp127duzdu5d169YB5LrENCUlhV9++YVFixYxevRo1q1bV+hvsGnTJn7++WeOHz9Oq1atuOOOO/L9DTIzM7n77ruZOXMmERERfPrppzzyyCO8++67xfpOfJlG5ESkQHr0mIiI+JLp06cTExND165d2bNnD1u2bOHXX3/loosuolGTcwCoWbMmAEuWLMkeJbv44os5fPgwSUlJBW47Ojqa+fPnM3bsWBYvXkx4eHihsfz0009cffXV2QXeyf0WZsiQIRhjiI6Opm7dukRHR+Pn50e7du3YuXMnAH5+flx33XUAjBgxgiVLlhS53ZO6d+/Offfdx8SJE0lMTMTf35958+Yxb948OnToQMeO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378fcL+4/OGHH6Znz568+uqrfPvtt5x//vl06NCBSy65hIMHD7Jz504mT57Myy+/TGxsLIsXL2bcuHFMmDABgNWrV9O1a1fat2/PFVdcwdGjR7O3PXbsWM477zxatmzJ4sWL8/1+Toc33iN3HrDVWrsdwBjzCXAZkD3Oa639JUf7X4FGXtivSGWjXBMpfcozEW/4+u+NObQhNL9FTpf1O9dp/UN+9WsK0CLL5WARLfD3yzjZplqO9tWBwHRnKFuiG3P5pD0F7fL3338P/v7771m6dCkBAQHceeedTJ8+nZtuuomnn36auBN+OJ1O/nHzVaxdu5b27dsDEBwczJIlSwCYM2cOABdffDF///vfiY+PJyIigvfee49Ro0blu9+T6yckJHDllVcyf/58qlSpwnPPPcdLL73EY489xpIlS7j00ku5+uqr2blzZ/a677zzDuHh4axYsYL09HS6d+9Ov3792LRpE19//TW//fYboaGhHDlyhJo1a/L6668zYcIEOnfunCuGffv2MXbsWFatWkWNGjXo168fX3/9NZdffjkpKSl07dqVp59+mn/961+8/fbbPProozz55JPMnTuXhg0bkpiYmO/n+uqrr6hWrRoJCQl07dqVoUOHArBlyxZmzJjB22+/zbXXXsuXX37JiBEjGDVqFK+99ho9e/bkgQceKOinYvny5axbt46mTZsyZcqUfL+D66+/nk8//ZRBgwaRkZHBjz/+yJtvvlngd5Z3uzt37mTz5s288847dO/endGjR/PGG2/wf//3f9x9993MnDmTiIgIPv30Ux555BHeffddABITE1m4cCEAR48e5ddff8UYw9SpU3n++ed58cUXGTNmDGFhYdx///2Au/A/6aabbsr+Dh577DGeeOIJXnnlFcBdWC5fvpzZs2fzxBNPMH/+/AK/o+LwRiHXEMiZVHHA+YW0/xvwvRf2K1LZKNdESp/yTKSUWfAz4Do57WeMy2mto6D2mU5XgMPPFHydm8ecOXOqbtiwgS5dugCQmppKnTp1APjss894ddKbOLOyOJpwiA0bNmQXctddd90p2zLGcOONN/LRRx8xatQoli1bVuA9UCfX//XXX9mwYQPdu3cHICMjg27duhUa87x581i7dm32fXlJSUls2bKF+fPnM2rUKEJD3bVwzZo1C93OihUr6NWrFxEREQAMHz6cRYsWcfnllxMYGMill14KQKdOnfjhhx8A6N69OyNHjuTaa6/Nd7TRWsvDDz/MokWL8PPzY+/evdmjeU2bNiU2NjZ7mzt37iQpKYnExER69uwJwI033sj33+f/z+N5551H06ZNC/0OBg4cyD333EN6ejpz5szhoosuIiQkpMD2gYGBubYL0Lhx4+zfY8SIEUycOJEBAwawbt06+vbtC7hHRevXr5+9Ts7/HuLi4rjuuuvYv38/GRkZubadn7zfwc0338w111yTvfzk93zyOyspbxRyJp95Nt+GxvTG3en1KHBjxtwG3AbQpEkTL4QnUmF4LXJgnzsAACAASURBVNeUZyIFUp6JeEMhI2dJCQk1kpKSqjVv3nwXwNFDh2qmpKRUadq06SnrJCYmVt2zZ0+T1q1brycgIN8bnw4cOFA7ISEhIikpyX/IkCG88847uZbv2LGDCRMmMO3r+VSrXp2XHr2XtLS07OVVqlTJN85Ro0YxZMgQgoODueaaa/D3z/+w+eT61lr69u3LjBkzCvrop7DW8tprr9G/f/9c8+fMmYMx+f1zVPB2ChIQEJC9LYfDkX3v1+TJk/ntt9+YNWsWsbGxrF69mlq1amWvN336dOLj41m1ahUBAQFERkZmf29BQUHZ7RwOB6mpqVhrix1zzu+8oO8A3Jcjzp07l08//ZRhw4YV2n7BggWn/JZ54zHGYK2lXbt2LFu2rMjY7r77bu677z6GDh3KggULGDduXLE+X0FOfm85f4eS8MbDTuKAxjmmGwH78jYyxrQHpgKXWWsPF7Qxa+0Ua21na23nk2cVRATwYq4pz0QKpDwTKWWBgYEZmZmZgSenMzIyAgMCAjLztktOTg7ZvXv3Oc2bN98aUEARB1CvXr2EqKiojddee+2W+fPnc+jQIQCOHDnCrl27OHbsGFWqVCGsWjUOxx8qcJQorwYNGtCgQQPGjx/PyJEji2zftWtXli5dytatWwE4ceIEf/75Z6Hr9O/fnzfffJPMTPfH//PPP0lJSaFfv368++672fd0HTlyBICqVaty/PjxU7Zz/vnns3DhQhISEnA6ncyYMSN7VKgg27Zt4/zzz+fJJ5+kdu3a7NmTu45OSkqiTp06BAQE8PPPP7Nr165Ct1e9enXCw8OzL1OdPn16oe2L+g4Arr/+et577z0WL16cXbgV1j6v3bt3ZxdsM2bMoEePHrRq1Yr4+Pjs+ZmZmaxfvz7f9ZOSkmjYsCEA77//fvb8gn6H8PBwatSokX3/24cffljk71AS3hiRWwG0MMY0BfYC1wM35GxgjGkC/Be40Vpb+H/RIlIQ5ZpI6VOeiZSysLCwlPT09ODU1NTAoKCgzMTExJpNmzbdnrNNWlpa4Pbt25tHRkbuCA0NTS/Odjt16pR2zz330K9fP1wuFwEBAUyaNImuXbvSoUMHruzTjUZNzsm+1K44hg8fTnx8fLGeDBkREcG0adMYNmwY6enukMePH0/Lli0LXOeWW25h586ddOzYEWstERERfP311wwYMIDVq1fTuXNnAgMDGTRoEP/5z38YOXIkY8aMISQkJNeIUv369XnmmWfo3bs31loGDRrEZZddVmi8DzzwAFu2bMFaS58+fYiJyf0A3uHDhzNkyBA6d+5MbGwsrVu3LvI7eO+99xg9ejShoaH5jrCdzncA0K9fP2666SaGDh1KYGBgke3zatOmDe+//z633347LVq04I477iAwMJAvvviCe+65h6SkJLKysrj33ntp167dKeuPGzeOa665hoYNG9K1a1d27NgBwJAhQ7j66quZOXMmr732Wq513n//fcaMGcOJEydo1qwZ7733XrG+hzNhChuKLfZGjBkEvAI4gHettU8bY8YAWGsnG2OmAlcBJ0v5LGtt5/y39pfOnTvbk0/iySvywVkA7Hx2cInjFzmbjDGrivPffwHrej3XCsuzh7/6g49/2834y6MY0bVYDwwTKRd8Kc9AfZr4prx5tmbNmp0xMTEJxVn3yJEj4XFxcY0BatasmdCoUaMDBw4ciACoV69e/LZt285JSkqqERgYePIBKDYqKmpjUdvdsGFDp4KKrrVx7gd6tG9UvTghAnDXXXfRoUMH/va3vxV7HZGS2LhxI23atMk1r6A+zRsjclhrZwOz88ybnOPvW4BbvLEvkcpMuSZS+pRnIqWvZs2aSTVr1kzKOa9evXrxJ//23D9X+LV8paxTp05UqVKFF198sSzDECmQVwo5EanYSj5uLyIi4ltWrVpV1iGIFMobDzsRkQqq+M/LEhERweVyudR1iJyh073lTYWciBRII3EiInIa1sXHx4ermBM5fdZaDh8+THBwcLHX0aWVIlIk9cgiIlKUrKysWw4cODD1wIEDUZTRYMHhw4cLfJfZwaOpAGw8HnI2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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import warnings\n", "warnings.simplefilter(action='ignore', category=FutureWarning)\n", "data_dir = defaultdict()\n", "fig, ax = plt.subplots(1,4,figsize=(15,5))\n", "for i in range(len(labels)):\n", " signal = data_simulation_sliding_lid[labels[i]]\n", " ax[i].plot(t[:len(signal)], signal, label='acoustic impulse response')\n", " data_dir[labels[i]] = remove_direct_sound(signal, Fs, signal_length)\n", " ax[i].plot(t[:len(data_dir[labels[i]])], data_dir[labels[i]], label='early reflections and reverberation')\n", " ax[i].set_title(labels[i])\n", "plt.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "(2) The *crest factor detrending* was built from the basis of the [crest factor](https://en.wikipedia.org/wiki/Crest_factor), which is a ratio of the value of the current sample and its surrounding. This ensures that the number of density estimates are not biased by the overall energy envelope of the response. We want to potentially remove the trend from the data without close inspection of the data.\n", "\n", "We normalize each sample value with the local mean of surrounding samples weighted with a Tukey window $w$ of length $N$:\n", "$$\\tilde{h}[n] = \\frac{h[n]}{\\sum_{i=n-N/2}^{n+N/2} h[n]\\ w[n] }$$\n", "\n", "The width of the window defines the temporal locality for normalization. We use $20ms$ window size with $5ms$ tapering parts, which are motivated by acoustical perceptual models. Input impulse response (left) is converted to an echogram (middle). Local energy normalization factors out the energy decay envelope (right)." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CrestFactorDetrending(is_causal=False, window_size=147)\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "detrending_feature = CrestFactorDetrending(window_size=ws_detrending, is_causal = False)\n", "print(detrending_feature)\n", "data_dtr = defaultdict()\n", "fig, ax = plt.subplots(1,4,figsize=(15,2))\n", "for i in range(len(labels)):\n", " ax[i].plot(t[:len(data_dir[labels[i]])], data_dir[labels[i]]/np.max(np.abs(data_dir[labels[i]])), alpha=1, label='signal before detrending')\n", " data_dtr[labels[i]] = detrending_feature.fit_transform(pd.DataFrame(data_dir[labels[i]]))\n", " ax[i].plot(t[:len(data_dtr[labels[i]])], data_dtr[labels[i]]/np.max(np.abs(data_dtr[labels[i]])), alpha=0.7, \n", " label='crest factor detrending')\n", "plt.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "(3) The *sorted density* was built from the insentives of the center of mass of a sorted sequence. It shows among what part of samples within an observed window is most of the energy concentrated on." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In order to have a measure of the distribution of the energy over an observation window, we couple the sorting of the samples in the window of length $M$, $s = \\textrm{sort}(\\tilde{h})$ with the computation of the first moment (the center of mass): \n", "$$\\mathcal{D}[s] \\equiv \\frac{1}{M}\\frac{\\sum_{i=1}^M i\\ s[i]}{\\sum_{i=1}^M s[i]}$$\n", "where $M$ is the number of samples in the observed window.\n", "The sorted density is a unitless measure with values ranging between 0 and 0.5 corresponding respectively to minimal echo density when $s$ contains a single non-zero sample, to maximum when all values are non-zero and equal. We normalize it with the sorted density measure of the Gaussian noise $\\mathcal{D}[g]=0.18$:\n", "$$N'_{sd}(t) = \\frac{\\mathcal{D}[ \\tilde{e}\\left(t\\in(t-0.5T_l,t+0.5T_l\\right) ]}{\\mathcal{D}[g]}.$$\n", "For this acoustic application the size of the observation window $T_l$ was $200ms$, but this can be changed and readjusted for the application at hand." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We need the Gaussian measure of detrended sorted density, since the reverberation of the room has close to Gaussian behavior. This constant will be used for the normalization before the curve fitting." ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "density_feature = SortedDensity(window_size=ws_sorted_density, is_causal = False)\n", "data_srt = defaultdict()\n", "fig, ax = plt.subplots(1,4,figsize=(15,2))\n", "for i in range(len(labels)):\n", " data_srt[labels[i]] = density_feature.fit_transform(pd.DataFrame(data_dtr[labels[i]])).to_numpy()\n", " data_srt[labels[i]] = data_srt[labels[i]]/gaussian_sd\n", " ax[i].plot(t[:len(data_srt[labels[i]])], data_srt[labels[i]], label = 'sorted density')\n", " ax[i].set_title(labels[i])\n", "plt.legend()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Theoretically based curve fitting for parameter extraction" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Here we observe what happens to the distribution of the image sources in the 3 target types of space. We are interested in the global trend of the acoustic echo build-up between moment $t$ and $t + \\Delta t$. Assuming that we are dealing with an omnidirectional source, we have the followiing echo density trends:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Since the general trend can be written as $Ct^n$, $n \\in \\{0,1,2\\}$ all this will be modelled with a parametrized curve fitting." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If we use $\\tau_{\\textrm{m}}$ to denote the mixing time, which is the point where the exponential and the constant behaviour meet, we design the following parametric curve:\n", "$$\n", "\\begin{split}\n", "N'(t; N'_0, \\alpha, n, \\tau_{\\textrm{m}}) = \n", "\\begin{cases}\n", "N'_0 + \\alpha t^n, t<\\tau_{\\textrm{m}} \\\\\n", "\\hfill N'_\\infty, t\\geq\\tau_{\\textrm{m}}\n", "\\end{cases}\n", "\\end{split},\n", "\\label{eq:TheModel}\n", "$$\n", "\n", "$$\n", "W(t;\\tau_{\\textrm{m}},\\sigma) = \\frac{1}{2}\\Big( 1 - \\tanh\\Big(\\frac{t - \\tau_{\\textrm{m}}}{\\sigma}\\Big)\\Big).\n", "$$\n", "\n", "The parameter $\\sigma$ controls width of the cross-fade, which we set to $\\sigma=20~\\textrm{ms}$. The resulting smoothed parametric model is:\n", "$$\n", "\\begin{aligned}\n", "\\log(N'(t; \\alpha, n, \\tau_{\\textrm{m}}) - N'_0) = W\\cdot(\\log\\alpha + n \\log t) + \\\\ (1 - W) \\cdot \\log (N'_\\infty - N'_0) .\n", "\\end{aligned}\n", "\\label{eq:ModelFitting}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "For the task at hand, we will be focusing on retrieving the correct parameter $n$. For cases of interest we have:" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "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": [ "fig, ax = plt.subplots(1,4,figsize=(15,2))\n", "for i in range(len(labels)):\n", " n, curve = curve_fitting_echo_density(data_srt[labels[i]], Fs)\n", " ax[i].plot(t[:len(data_srt[labels[i]])], data_srt[labels[i]], label = 'sorted density')\n", " ax[i].plot(t[:len(curve)], curve, label = 'fitted curve')\n", " ax[i].set_title(labels[i] + ', n=' + '{0:.2f}'.format(n))\n", "plt.legend()" ] } ], "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.7.0" } }, "nbformat": 4, "nbformat_minor": 2 }