{ "cells": [ { "cell_type": "markdown", "id": "aerial-providence", "metadata": {}, "source": [ "# Realtime Classification\n", "\n", "Let say you want to cut your realtime recording audio by using VAD after that classify using classification models, you can do that with Malaya-Speech!" ] }, { "cell_type": "markdown", "id": "acknowledged-relative", "metadata": {}, "source": [ "
\n", "\n", "This tutorial is available as an IPython notebook at [malaya-speech/example/realtime-classification](https://github.com/huseinzol05/malaya-speech/tree/master/example/realtime-classification).\n", " \n", "
" ] }, { "cell_type": "markdown", "id": "responsible-aurora", "metadata": {}, "source": [ "
\n", "\n", "This module is language independent, so it save to use on different languages. Pretrained models trained on multilanguages.\n", " \n", "
" ] }, { "cell_type": "markdown", "id": "affecting-continent", "metadata": {}, "source": [ "
\n", "\n", "This is an application of malaya-speech Pipeline, read more about malaya-speech Pipeline at [malaya-speech/example/pipeline](https://github.com/huseinzol05/malaya-speech/tree/master/example/pipeline).\n", " \n", "
" ] }, { "cell_type": "code", "execution_count": 9, "id": "unlikely-patrick", "metadata": {}, "outputs": [], "source": [ "import malaya_speech\n", "from malaya_speech import Pipeline\n", "from malaya_speech.utils.astype import float_to_int" ] }, { "cell_type": "markdown", "id": "adjustable-saver", "metadata": {}, "source": [ "### Load VAD model\n", "\n", "Fastest and common model people use, is webrtc. Read more about VAD at https://malaya-speech.readthedocs.io/en/latest/load-vad.html" ] }, { "cell_type": "code", "execution_count": 2, "id": "starting-roller", "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAALEAAAD7CAYAAAAl6nXPAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nO2deVSTV97Hv0kgBBKSsO+CIKgIuAsqWlSkVqlVcENFW6cvo63t25l2tLWLXWzrHE9nfMfa0Tqn1WlpHXGtVhQVi8UNRURxYRXZd0KAkATI7/2Dk2dEUFFJHoLP55yc5Fl/3yTf5+bmPvfeH4+ICBwcJgyfbQEcHE8LZ2IOk4czMYfJY8a2AFOmpaUFCoUCCoUCKpUKSqUS7e3tAACtVovm5mZmXysrK1hYWAAABAIBpFIprKysIJPJIJfLYWVlxcp76A9wJu6GhoYG5OTkoKioCKWlpSgtLUV5eTlKSkpQXl6Ouro6NDQ0QKPR9FpMoVAIuVwOGxsbODs7w8PDAy4uLnBzc4ObmxsGDBgAPz8/yOXyXovZX+A9y60TNTU1yMjIwNWrV5GTk4OcnBxkZ2ejsrISAMDj8eDk5ARXV1fGTC4uLrC1tYVcLmdKUZlMBolEArFYDKFQCOC/pa2exsZGtLW1AfhvKd3c3AyFQoGGhgbmua6ujrlgysrKUFZWhsrKSuh0OgCAg4MDBg8eDD8/P/j5+WH48OEYNWoUHB0djfzp9R2eGRM3Nzfj3LlzOHfuHDIyMnDlyhUUFxcDANzc3DBkyBDGGHqTDBgwAObm5iwrB9ra2lBUVITc3FxkZ2czF9zt27c7vYeRI0di1KhRmDBhAiZOnAiJRMKycuPQb02sVquRkpLCPC5duoTW1lZ4e3tj9OjRGDVqFPOlOzg4sC33iamtrcWVK1dw5coVZGRkID09HXl5eTAzM8Po0aPx3HPP4bnnnkNYWFi/rXf3KxPX1NTg6NGjOHLkCI4fPw6lUglvb29MnDgRoaGheP755+Hp6cm2TINTWVmJM2fOIDU1FWfPnsWVK1dgYWGB0NBQREZGYt68eXBzc2NbZu9BJk59fT1t376dQkNDic/nk0gkolmzZtG2bduopKSEbXl9grKyMtqxYwfNnj2brKysiMfjUUhICG3dupVqa2vZlvfUmKSJdTodHTt2jBYtWkQikYgsLS0pJiaGDhw4QM3NzWzL69OoVCo6fPgwLV26lMRiMVlYWFB0dDT98ssv1N7ezra8J8KkTKxWq2nXrl00bNgwAkCjR4+mzZs3U01NDdvSTBKVSkV79uyhyMhIEggE5O3tTRs3biSFQsG2tMfCJEysVCpp/fr1ZG9vTyKRiF599VXKyspiW1a/Ijs7m1atWkVWVlZkY2ND69ato/r6erZl9Yg+bWKtVktbtmwhR0dHsrGxoY8//pgqKyvZltWvqampoc8//5zs7e3Jzs6OvvrqK1Kr1WzLeih91sQnTpygQYMGkUgkorfffrtf/AExJRQKBb333ntkZWVFXl5e9Ouvv7It6YH0ORMrlUr64x//SDwej6Kjo6mwsJBtSc80JSUltHjxYgJAL7/8cp+sYvQpE1+6dIk8PT3JwcGB/vOf/7Ath+MeDh48SM7OzuTm5kbnzp1jW04n+oyJ9+7dS1ZWVvT8889z9d4+Sk1NDb344oskEonoxx9/ZFsOQ58w8d///nfi8/n0+uuvU2trK9tyOB5Ce3s7vfPOO8Tj8WjDhg1syyGiPmDi77//nng8Hn311VdsS+F4DLZt20Y8Ho++/vprtqWQ4OOPP/6YrVveR48exeLFi/H+++9j3bp1Bo+XmpqKM2fO4Nq1a7h27RquX7+OyspKEBGsra0hEAiYfevr6zF69GhIJBKMGDGiV+K3tbXhwIEDePPNN1FfX4+QkBCDxTI0Y8aMgUgkwjvvvIOAgAD4+/uzpoW14Um1tbV4+eWXsWTJEnz66adGiTlx4kTY2dkhNjYWf/rTn1BeXo5z585h9uzZGDBgAJKSkph9zczMYGdn16vdGfV9hE+dOoXW1laDxjIGa9euxcqVK/Hqq6+ivLycPSFs/QS8/PLL5OLiwkqTjVQqpWHDhjHLtbW1NGjQIOLxeJSRkWHQ2DU1NQSANm3aZNA4xkKlUpGPjw8tWLCANQ2slMRZWVnYtWsXtm7dyspwG6FQCB6Pxyzb2tpi4cKFICLs3r3boLHNzPrXiDBLS0t888032LNnDy5evMiKBlZM/P3338PLywtz5sxhI3y36IcSlZSUAOjoVP/DDz90qmLk5+dj8+bNADrq1++//z527drFDB3So1QqsWPHDvz5z3/G119/jaamJmbbvRePnu5i5eXl4YMPPoBOp0Nubi4+//xz7Nixo1M15FGxjEVERASGDx+OnTt3Gj02AONXJ9ra2sjJyYnV5hl7e3sKCAjotG7EiBEEgL777ju6desWzZkzhwDQX//6VyIi2rJlC0kkEnJxcaH4+HgKDAwkS0tLAkDR0dHMeXJycujFF1+k48eP09WrVykgIIB8fHyYalNDQ0On6kR3sXbu3ElOTk4EgH755ReKioqiWbNmEQD68MMPexzLmPz9738nuVzOSj8Lo5v41q1bBIDS09ONHZrB3t6ePD096dKlS5SamkqLFi1ibqvqdDoiIiotLe1kLCKihQsXklgsZhr6y8rKaPz48QSAjh8/TkRE06dPpwMHDjDHJCYmdjLf/SZ+UKw1a9YQADp06BCzbsqUKeTn58csPyqWMbl9+zYBoMuXLxs9ttEraIWFhQAAX19fY4fuhEAgwN27d1FcXIyIiAi8++67GD58OLO9u5YCsVgMqVSKJUuWAABcXFzw5ZdfIiwsDCdOnEBgYCBOnDiBESNGMPXDpqYmjBkzBiqV6oFaHhQLAGbOnMmsCwgIYM5bXl7+RLEMhY+PD3g8HgoLCzF69Gijxja6idVqNQBAJBIZO3QnrKysEB0d/cDtfH73fxfur9OOHTsWAFBcXIzc3FwAwJo1a2Bvb99jLd3F6m6dWCxmhv0/aSxDYWZmBqFQyMoFZPQ/dvrWiPr6emOHNghCoRAWFhYYMGAAM+fElStXuuzX2NjY63GNFasnNDU1QaPRwNbW1uixjW7ioUOHAgCuXr1q7NAM1PFf4ImO1f+S6Dl37hw0Gg3GjRuHwYMHQyAQYP369dBqtcw+1dXViI+PfyrN92PMWD0hMzMTADBkyBCjxza6iZ2cnDB69Gjs2bPH2KEBdMy+U19fD6VS+dD99E1V986nBnRMcVVUVMQsHzt2DGPGjEF0dDRsbGywcuVKXLhwAc899xx++ukn7Ny5E0uWLEFMTMwDz9vdurq6OgAd873paWtrQ2trKzQaTY9iGZP//Oc/8PPzg7e3t9Fjs3LHbsuWLWRtbU2NjY1GjZuSkkJRUVEEgADQqlWrKC0trct+RUVFtGrVKgJA/v7+lJiYSEREK1asILFYTLNnz6atW7dSXFwchYaG0p07d5hjm5ubadmyZUwMqVTKtCCUlZV1Ou/Bgwe7jXXw4EHy8vIiAPS///u/VFBQQLt376aBAwcSAPrLX/5ClZWVD41lTNRqNdnb29PGjRuNHpuIpV5stbW1JJfLae3atWyEf2JWrFhBrq6upNFoKCMjgwoKCh64b3V1NaWnp5NKpTK4LmPG6o7PPvuMxGIxlZWVsRKftb4T//znP8nMzIzV9uLHRW9ijv+SnZ1NIpGI1a60rE1jpdPpEBYWhqqqKqSmpvaJZqJHERMTg8TERCgUCral9AkaGhowefJkCIVCXLhwoVNXVmPCWldMPp+Pffv2QafTYebMmazc8+8pra2t+Oabb5CSkoLGxkZ8+OGHTB+LZxWtVot58+ahpqYGe/fuZc3AQB+YUDAnJwehoaEYNmwY9u3bx0o7I8fjoVQqsWDBAly8eBFnzpxBYGAgq3pYz9nh5+eHU6dOoaCgAOPHj0dOTg7bkjgeQkFBASZMmIBr164hKSmJdQMDfcDEABAYGIiLFy/CxsYGISEh+Pnnn9mWxNEN+/btQ3BwMIRCIdLS0phb7qzD2l/KblCpVPTaa68Rj8ejuXPnUkVFBduSOKijCW/RokXE4/Ho1VdfpaamJrYldaJPmVhPcnIyDRw4kOzs7Gjz5s2k0WjYlvRMotVq6ZtvviFHR0fy8PCgY8eOsS2pW/qkiYmIGhsbae3atWRpaUkDBw6k+Ph4pq8vh2HR6XSUkJBAfn5+ZGFhQX/605/69HSvfdbEekpKSiguLo4EAgENGjSINm/ezE2kbSA0Gg3t2rWLAgMDicfj0fz58ykvL49tWY+kz5tYz40bN+gPf/gDWVhYkIODA3300UdUVFTEtqx+QVlZGW3YsIGcnZ1JKBRSbGwsZWZmsi2rx5iMifVUVFTQRx99RA4ODsTn82natGm0a9cuo3cmMnVUKhXFx8fTjBkzSCAQkK2tLb377rtUWlrKtrTHxuRMrEej0dCBAwdozpw5JBQKSSKR0MKFCyk+Pp7q6urYltcnUSgUtHv3blq8eDFJpVIyNzenyMhI2rNnD7W0tLAt74lh/Y5db1BbW4vdu3fj4MGDSElJAREx6a6mTp2KoKAgVm+LsoVOp0NWVhaSk5Nx5MgRnDlzBkSESZMmYc6cOVi0aFG/yETaL0x8Lw0NDTh27Bh++eUXHD9+HLW1tZDL5QgNDcVzzz2H0NBQjBgxgvUxfoZAo9EgMzMTqampSElJQWpqKurq6mBjY4OIiAjMnj0bL7zwAmxsbNiW2qv0OxPfi74k0mcVPXPmDKqrq2FmZgZ/f3+MGjWKySw6dOhQ2NnZsS25x9TV1eH27dtMit8rV67gxo0baG1thb29PUJDQxEWFobJkydj+PDhDxz42h/o1ya+HyJCbm5ulzSy+kGrtra28PX1ZXI7e3p6wt3dHS4uLvDw8DBqWlmVSoWSkhJUVFSguLgYd+/eZXI75+bmoqamBkDHwFt9el/9Y/Dgwd3ONNRfeaZM/CD0BtEn/tY/iouLOw3ClMlkcHNzg42NDeRyOWQyGfMsk8kgEAiY6bCADoPpzXTv6O7Gxka0tbVBqVSioaEBCoUCCoUCDQ0NqK+vR2lpaac+y0KhEO7u7vD19WUSqPv6+sLX1xcDBw40wifUt+FM/AgqKytRXl7OTMtaVlaG+vp6xnR6AzY2NkKr1TKDPXU6HRoaGpjzSKVS5s+llZUVLCwsIJFIIJfLmYdMJoONjQ1cXV3h5uYGNzc3uLi4wMnJ6ZkqWR8XzsQGJC8vD76+vkhPT8eoUaPYltNv6b+1fY5nBs7EHCYPZ2IOk4czMYfJw5mYw+ThTMxh8nAm5jB5OBNzmDyciTlMHs7EHCYPZ2IOk4czMYfJw5mYw+ThTMxh8nAm5jB5OBNzmDyciTlMHs7EHCYPZ2IOk4czMYfJw5mYw+ThTMxh8nAm5jB5OBNzmDyciTlMHs7EHCYPZ2IOk4czMYfJw5mYw+ThTMxh8nBTu/YSOp0O06dPR1VVFbNOq9UiPz8fAwcO7JQjRCaT4fTp0zA3N2dDar/DjG0B/QU+nw9PT0+cPn0a95cLeXl5zGsej4eoqCjOwL0IV53oRRYvXtzFwN2xdOlSI6h5duCqE72ITqeDs7MzqqurH7iPRCJBTU0NLCwsjKisf8OVxL0In8/H4sWLIRQKu91ubm6OBQsWcAbuZTgT9zIxMTGdMi7dS2trKxYvXmxkRf0frjphALy8vHD37t0u6+3s7FBZWflMpug1JFxJbABiY2O7tD4IhULExsZyBjYAnIkNwJIlS9Da2tppnVarRUxMDEuK+jdcdcJADBs2DLdu3WKa3Dw8PHD37l0uqaIB4EpiA7Fs2TKm6iAUCrF8+XLOwAaCK4kNRHFxMTw9PZmSOCsrC8OGDWNZVf+EK4kNhIeHB4KDgwEAQ4YM4QxsQDgTG5DY2FgAwPLly1lW0r/hqhMGpLq6Gm5ubsjNzYWnpyfbcvotnIkfg/b2diiVSjQ3N6OlpQVKpRIAoFAoOnX8ISIoFAoAwP79+xEVFQWgowsmn9/5x8/GxgYAIJVKIRKJIJFIYG1tDTMzroNhT3kmTazValFWVoaSkhLU1NSgtrYWtbW1zOu6ujpmXXNzM2PcB91ONgTm5uaMoSUSCWxtbWFnZwc7OzvY2trC3t6eWXZwcICbmxtcXV2fyX4Z/dLEVVVVyM/PR35+Pu7cucMYtrS0FGVlZaisrOy0v7W1Nezs7DoZQ28WiUQCqVQKsVgMkUgEmUwGKysriEQiyOVyAB090+6/Q3d/qXtv6aynra0NjY2NAICGhgao1WrmolGr1WhqakJjYyOampq6XFz6C07/a6DH0dERLi4u8PDwYIzt5eWFQYMGwcfHB05OTr32OfcVTNbEKpUKN2/exLVr15CTk8OYNj8/n/liLSws4OnpCVdXV3h4eMDV1RVubm5wd3eHq6sr3N3d4eDg8MBeZ6ZAa2srqqurUVJSgvLychQVFaG8vJy5aEtLS1FYWAiNRgOg44Lz8fGBj48PBg0aBF9fXwQFBWHYsGEQi8Usv5snwyRMXFhYiPT0dGRlZeH69eu4du0a8vPzodPpYGlpicGDBzNfjP7L8fHxgYeHR5c66LOITqdDSUkJc5Hn5eUxr7Ozs6FSqcDn8zFw4EAEBQUhICAAgYGBGDlyJAYNGsS2/EfS50zc2NiIzMxMpKen4+zZszhz5gzz8+/i4oLRo0dj2LBh8Pf3x+jRozFkyBCuU81TUlZWhvT0dNy8eRM3btxAeno6srOz0d7eDqlUisDAQISGhmLixIkYP3487O3t2ZbcCdZN3NDQgJSUFJw8eRLJycm4desWdDodBgwYgJCQEAQHByM4OBgjR46ElZUVm1KfKVpaWpCRkYGLFy8iLS0NFy5cQGFhIXg8HoYMGYKpU6di2rRpCAsLY1pY2MLoJm5vb8fZs2eRlJSEU6dO4fLly9DpdBg+fDimTZuG0NBQjBs3Di4uLsaUxdEDKisrkZaWhtTUVCQnJ+PKlSvg8XgYNWoUwsPDER4ejsmTJxu9edAoJlar1UhNTcXhw4exZ88eVFRUwNvbG+Hh4Zg4cSLCw8Ph6upqaBkcvUxTUxMuXLiAkydP4uTJk7hy5QrkcjnCw8MRGRmJqKgoSCQSwwshA9HW1kaHDx+mBQsWkLW1NfF4PAoODqaNGzdSdna2ocJysEheXh5t2rSJJkyYQHw+n8RiMUVHR9PBgwdJq9UaLG6vmzg3N5fWrVtHbm5uxOPxKCwsjLZu3UolJSW9HYqjD1NWVkbbtm2jadOmEZ/PJ2dnZ1qzZg3dvn2712P1mokTExNp6tSpxOPxyM3Njd5//33Ky8vrrdNzmDB37tyhjz76iAYMGEAAaPLkyfTLL7+QTqfrlfM/lYnb29tpz549NHLkSAJAM2bMoCNHjlBbW1uviOPoX7S3t1NiYiJFRkYSj8ejoKAg+umnn57aL09s4sOHD9PgwYOJz+fTvHnzKD09/amEcDxbZGZmUkxMDAkEAho0aBDt37//ic/12CYuKCig2bNnEwBauHChQeo4HM8Oubm5tHTpUuLxeDRjxgzKycl57HP02MQ6nY42bdpElpaWNHToUDp16tRjB+PgeBBnzpyhoKAgsrCwoM8++4za29t7fGyPTKxUKikqKorMzc3pyy+/NGhzCcezS2trK/3tb38jCwsLmjVrFtXV1fXouEeaOCcnh4YMGULOzs505syZpxbaX2ltbaW9e/fStGnTaPPmzQaPd+PGDXrzzTdpzJgxj3VcYWEhrVu3jjw9PQ0jrBe4cOECubu7k4+PD924ceOR+z+0i1dubi7CwsIglUqRnp6OSZMmGf7ui4lSUlKCsrIynDp1qsvEKYbgzp07OHbsGGpqah7ruIKCAvz2228oKSkxkLKnJzg4GOnp6XBxccGUKVNw8+bNh+7/QBM3NDQgMjIS7u7uOHHiBHdb+BF4eXkZdbLAWbNmYdSoUY993JQpUzBx4kQDKOpdHB0dcezYMfj6+iIyMhK1tbUP3PeBJn7jjTfQ2NiIgwcPQiqVGkRof8PYHV+edLZ5U5mlXiwW48CBA9DpdPjjH//4wP26/dQvXLiAH3/8Efv37+8TvckKCwvx/fff491330VlZSV27twJJycnxMTEQC6XIz8/HwkJCRAKhXjllVe6dA3Mzc3F0aNHoVAoMG7cOLzwwgvMtvz8fBw+fBhvvfUWUlNTkZiYCD8/P8TGxjId6uvq6rB582a88sorGDhw4AN1PmiGn4fFf5r3xuPxmJjHjh1DSkoKRo4ciQULFnSK39raigMHDiAjIwNhYWHQ6XSPpZFNHBwcsGPHDkRERCA5ORlTp07tulN3FeVFixZRcHBwr1fYn4Sff/6Z3N3dCQAlJCRQbGwsLVmyhAQCAUVFRVFKSgotWrSIlixZQmZmZjRz5sxOx7/xxhs0adIkqqmpoaSkJOLxeLRx40YiItqyZQtJJBJycXGh+Ph4CgwMJEtLSwJA0dHRzDn27NlDAOiLL754qNaGhgYCQJs2bepR/Kd9b8uWLSMvLy9at24dhYSEkJubGwGgpUuXMvsoFAqaNm0affzxx1RbW0u7du0ioVBIAoGgRxr7ClOmTKEXX3yx221dTNzW1kYymYy+/vprgwvrKZ988gkBoEOHDjHrXnvtNQJA//73v5l1H3zwAQGghoYGZp1MJqMNGzYwy/7+/hQSEsIsL1y4kMRiMf34449E1NFxZfz48QSAjh8/TkREWq2Wjhw5Qo2NjQ/V2Z2JHxX/ad7bsmXLyNramtLS0oiISK1WU3h4OAGgpKQk5lxz5szppDMyMrKTiR+lsS/w/fffk6WlJbW0tHTZ1qVOXFJSgoaGBowdO9YgPw9Pgr5P6uTJk5l1w4cPBwCEhoYy64YMGQIAKC0tZdb9+uuvWLVqFQAgLS0NRISWlhZmu1gshlQqxZIlSwB0DIH68ssvAQAnTpwA0FGHnDVr1hP1jX1U/Kd5bwBgb2/PfFcWFhaIi4sDACQlJaGqqor5Kb6XoKCgx9LYFxg7dixaWlqQn5/fZVsXE+uHkBulM3MP0ddN761zdje/gn7U8r1NXBMnTkRKSgpiY2ORk5MDLy+vLhmO7q/L6k1RXFz81NofFf9p3lt3REREwMzMDGVlZcjMzERrayucnZ077XP/++3JZ8Q2+sYFvT/vpcsfO/28BGVlZfD39zewNMOzZs0a3Lp1CwkJCRCJRNi3b98jjxEKhbCwsMCAAQNYif80yGQyWFpawtfXl/nCy8vL+5TGJ0Hfrt3dvBldSmIHBwf4+PggOTnZ8MoMTHp6OjZt2oTXX3+9U0bP+0sZtVrdafncuXPQaDQYN26cUeL3JhUVFWhsbMTkyZOZKkhiYmKX/fQtFGxofBJOnToFFxcXeHl5ddnWbTtxTEwMvvvuuz5TL2pqagIANDc3M+v0P6v3amxra+u0n3509MGDB9HW1oaTJ08iMzMT9fX1yM3NxZ07dwB03NgpKipiznPs2DGMGTMG0dHRADo+wJkzZyIlJeWxdPYk/pO+Nz0qlQoqlYpZ3rRpE15++WVMnToV/v7+mDFjBo4cOYKdO3cC6JjC6+rVqyAiFBcXM9WUR31GbKLRaLBjxw7ExMR034zZ3T/BiooKkslk9O677xrov2bPSUpKooCAAAJAK1eupOzsbDp69CiNHTuWaU66du0aJScnU2hoKAGgefPm0c2bN4mIKDY2lvh8Pjk5OdG2bdtow4YNxOfz6Z133iEiohUrVpBYLKbZs2fT1q1bKS4ujkJDQ+nOnTuMhpUrVxIAGjFixAN1lpWV0apVqwgA+fv708GDBx8Z/2nf29mzZykkJIQGDx5Mn3zyCb3yyiv05z//mVQqFaOroqKCJk2aRADIz8+PZs+eTUuXLiWJREKrV6+mkpKSR35GbPPpp5+SWCymoqKibrc/sAPQ9u3bic/n09GjRw0mzlhUVVV16nl3b++oFStWkKurK2k0GsrIyKCCgoIux7e0tNCNGzfopZde6vX4vUF5eTldunSJmpqaHrhPXl4eZWdnk06no4KCgk5NdcbQ+KQkJyeTmZkZ/e1vf3vgPg/txbZ8+XKSSCT0+++/97q4voLexI8iPT29z90A6O+kpaWRTCajhQsXPnQ83kNNrNVqKSoqiqysrJibAf2NRYsWkUwme+g+iYmJtG/fPiMp4iAiSkhIIIlEQrNmzSKNRvPQfR/Zn7itrY3Wrl1LPB6P4uLi+k2HeK1WS1u3biUXFxfi8/n0wQcfUHFxcbf7Ps4oA46no62tjdavX8/47VEGJnqM4Um7d+8msVhMY8aMYW5zcnD0JhkZGTRhwgQSiUS0a9euHh/X43lPFy5ciEuXLkEikSAkJARxcXEP7ePJwdFT6uvrsXr1aowZMwYAcPHiRSxbtqznJ3jcq0Wn09FPP/1Erq6uZGtrS59++mmf+SfLYVooFAr64osvyN7enpycnGjnzp1PNKHKE887oVQq6cMPPyQbGxuytramv/zlL1ReXv6kp+N4hqiqqqJ169aRTCYjmUxG7733HtXX1z/x+Z56GiulUkl//etfydnZmUQiES1dupROnz7da1MUcfQPdDod/f777/Tyyy+TlZUVOTg40Oeff04KheKpz91rc7G1tLTQt99+S+PGjSMA5OPjQ59//jk3keAzTnl5OW3cuJEGDx5MAGjUqFH0zTffUHNzc6/FMMjUrjdv3qS1a9eSg4MD8fl8Gj16NK1fv56b0vUZoaioiLZv306RkZFkbm5OMpmM4uLi6PLlywaJZ9BJtjUaDRITE7F//34cOXIE9fX1GDlyJObOnYsXXngBo0aN4hLD9AN0Oh0yMzORmJiIAwcOID09HVKpFLNmzcLcuXMRGRnZqYdcb2O0dAetra347bffcODAARw6dAhlZWWwtbVFWFgYpk2bhmnTpmHw4MHGkMLRC+Tm5iI5ORmnTp3C6dOnUVNTAycnJ7z00kuYO3cupk6darTUaqwkniEi3LhxA6dOncLJkyeRkpKCxsZGuLm5YdKkSRg3bhyCg4MxatQog17BHD1Do9EwSWguXryIs2fPoqioCBKJBCCRq3MAABQ+SURBVJMnT2YKoaCgoAeO+DYkrGdPAjr6yqalpeH06dM4f/480tLSUF1dDXNzc4wYMQLBwcEYM2YMAgMD4e/vzxnbgKjVaty8eRNZWVm4fPky0tLSkJGRAa1WC1tbWwQHByMkJARTp05FcHBwn5jDok+YuDvy8/OZK//ixYvIzMyEWq2GQCCAj48PkzQwICAAQ4cOhY+PzzOZ1/hJ0Wg0KCgowK1bt5CVlcUkuszNzUV7ezuEQiGCgoKYFGzBwcHw8/NjW3a39FkT3097ezvy8vJw/fp1XL9+HVlZWbh27RoKCgqg0+nA4/Hg4eHBZBTVZxX19vaGq6trv8xp/CiqqqpQXl6OgoIC5OXlMZlE8/LyUFxczHxu+kyiw4YNYwoHPz8/o89o9KSYjIkfhEqlQm5ubqd0r/pn/RcFdAz+dHFxgbu7O5O4W5/b+d6k5PrE5H2V+vp61NTUdEpWXl1djeLiYpSXlzP5nMvKyph8zjweD+7u7syFfe+zr6+vyeZ01mPyJn4YGo0Gd+/eRXl5OYqLi1FWVobS0lImmXdxcTFqamq6DBTl8/mMocViMeRyOUQiEaysrCCTySASiZj5KgQCAXg8HuRyeadzWFpadqq7azSaTmPhgI6xfTqdDjqdDg0NDVCpVFCr1VAoFGhpaYFarUZ9fT1UKhVj2Pb29k7nsLCwgL29PTw8PLq9SF1dXeHp6dmv/0f0axP3lObmZqZkq6mp6VTSNTc3Q6FQQK1WQ6VSdXlNRGhtbWUGfOppbGxkBncCgEAg6DIxo1gshlAoZC4CS0tLWFpaMq9FIhFsbGxgZWXV6ZfC3t6+00X2rMOZ2IDk5eXB19cX6enpTzQNK0fP4G6XcZg8nIk5TB7OxBwmD2diDpOHMzGHycOZmMPk4UzMYfJwJuYweTgTc5g8nIk5TB7OxBwmD2diDpOHMzGHycOZmMPk4UzMYfJwJuYweTgTc5g8nIk5TB7OxBwmD2diDpOHMzGHycOZmMPk4UzMYfJwJuYweTgTc5g8nIk5TB7OxBwmD2diDpOHMzGHycOZmMPk4aZ27SV0Oh2mT5+OqqoqZp1Wq0V+fj4GDhzYaZJrmUyG06dP94mkLf0B00jKYALw+Xx4enri9OnTuL9cyMvLY17zeDxERUVxBu5FuOpEL7J48eIuBu6OpUuXGkHNswNXnehFdDodnJ2dUV1d/cB9JBIJampquHRlvQhXEvcifD4fixcvfmA6WHNzcyxYsIAzcC/DmbiXiYmJgVar7XZba2srFi9ebGRF/R+uOmEAvLy8cPfu3S7r7ezsUFlZCYFAwIKq/gtXEhuA2NjYLq0PQqEQsbGxnIENAGdiA7BkyRK0trZ2WqfVahETE8OSov4NV50wEMOGDcOtW7eYJjcPDw/cvXsXPB6PZWX9D64kNhDLli1jqg5CoRDLly/nDGwguJLYQBQXF8PT05MpibOysjBs2DCWVfVPuJLYQHh4eCA4OBgAMGTIEM7ABoQzsQGJjY0FACxfvpxlJf0brjphQKqrq+Hm5obc3Fx4enqyLaffwpn4CVGr1VAqlVAqlWhoaIBWq0VzczOzvaWlBWq1Gvv370dUVBQsLCxgZWXFbLeysoKFhQVkMhmsra0hlUphaWnJxlsxeTgT34NSqUR+fj6Ki4tRUVGB8vJyVFVVoaysDFVVVaiqqoJCoYBSqXzgreWnwdzcHFKpFHK5HI6OjnB0dISrqyucnJzg7OwMFxcXuLu7w9vbG3K5vNfjmyrPnIm1Wi1u3bqFrKws3L59G/n5+SgoKEB+fj5qamqY/aRSKVxdXTsZydHRETY2NkzJKZVKYW1tDRsbGwgEAkilUuZ4oVAIsVjMLKtUKmg0GmZZqVSivb2duSgaGxuZ5/r6euaiKS0tRVVVFcrLy6FQKJjj7ezs4OPjA29vb/j4+GDw4MEICAiAv7//M9fBqF+buLGxERcvXsSlS5dw7do1ZGVlITs7G62trRAKhfDx8cGgQYMYI+ifPT09++RPu1qtxt27d5mL7t7nnJwcaLVamJmZwc/PDwEBAQgKCsLYsWMREhLS6QLrb/QrE9+5cwe///47zp8/j3PnzuHGjRtob2+Hp6cngoKCmC82ICAAgwcP7lejK9ra2pCTk4Pr16/j+vXryMrKQmZmJgoLC8Hn8+Hv74/x48djwoQJmDRpEnx8fNiW3GuYtIlVKhXOnTuHkydP4uTJk0hPT4eZmRmGDx+OiRMnYvTo0Zg8eTK8vLzYlsoalZWVSEtLQ3p6Os6ePYuzZ8+ipaUF3t7eCA8PZx42NjZsS31iTM7E1dXV2L9/PxISEnDmzBm0t7dj5MiRiIiIwPTp0zFhwoRnrk74OGi1Wly4cAFJSUlISkpCeno6+Hw+QkNDMW/ePERHR8PZ2ZltmY+FSZhYoVBgz549SEhIwOnTpyESiTBr1izMmTMH4eHhcHBwYFuiyVJbW4uTJ0/i0KFDOHz4MFpaWjBp0iTMnz8fixYtgq2tLdsSHw31YS5fvkxxcXEkFotJJBJRZGQk7dq1i5RKJdvS+iUtLS30yy+/UGxsLFlbW5OFhQXNnz+fTpw4QTqdjm15D6TPmVir1dJ3331Hw4cPJwA0fPhw+uabb6ihoYFtac8UjY2N9O2339Lo0aMJAA0bNoy+/fZb0mg0bEvrQp8xsUajoe3bt9PAgQPJ3Nycli9fThcuXGBbFgcRXbp0if7whz+QhYUFDRgwgLZu3UpqtZptWQysm1in01F8fDwNGDCAhEIhrVy5kgoLC9mWxdENxcXFtHr1ahKJROTm5kY7d+7sE9UMVk1848YNCgsLIz6fT//zP/9DRUVFbMrh6CGlpaX02muvkUAgoNDQUMrMzGRVDysmbmtro/Xr15O5uTmNGTOGLl68yIYMjqfkypUrNH78eDIzM6P33nuPWltbWdFhdBNXVlZSeHg4iUQi+sc//kHt7e3GlsDRi+h0Otq+fTtZWVnR5MmTqbS01OgajNpOnJGRgRdffBEWFhZISEjAqFGjjBWaw8Bcv34d8+fPh0KhwKFDh5hRLcbAaCM7MjIyMH36dAwdOhSXL1/mDNzPCAwMxKVLlzBmzBg8//zzuHjxovGCG6O4z8zMJDs7O4qIiCCVSmWMkM88hYWFtG7dOvL09DRqXI1GQ7NnzyaZTEZpaWlGiWlwEzc1NZGfnx9NmTKFM7ARSU5OpgkTJpBAIDB6bI1GQzNmzCAvLy9SKBQGj2fw6sTbb7+Nuro6xMfH98k+uv2VKVOmYOLEiazEFgqF+OGHH6DRaPDGG28YPJ5BTXz+/Hl8++23+Oc//wkXFxdDhuLoBjb7S9vb2+Nf//oXfvjhB5w6dcqgsQzaOjF37lxUV1cjNTXVUCEeSmFhIb7//nu8++67qKysxM6dO+Hk5ISYmBjI5XLk5+cjISEBQqEQr7zySpc+tbm5uTh69CgUCgXGjRuHF154gdmWn5+Pw4cP46233kJqaioSExPh5+eH2NhY8PkdZUNdXR02b96MV155BQMHDuxW46+//gqlUgmgIxXC3LlzYWFhgStXriA7OxsAMGvWLEil0ofqATqmjj1w4AAyMjIQFhaG3377DZs2bUJbW1uvfaaPy/Tp08Hn83H8+HHDBTFUPUWhUJBQKKR///vfhgrxUH7++Wdyd3cnAJSQkECxsbG0ZMkSEggEFBUVRSkpKbRo0SJasmQJmZmZ0cyZMzsd/8Ybb9CkSZOopqaGkpKSiMfj0caNG4mIaMuWLSSRSMjFxYXi4+MpMDCQLC0tCQBFR0cz59izZw8BoC+++OKBOsvLy5lONqmpqcx6nU5HM2fOpJ9//vmReog6Pu9p06bRxx9/TLW1tbRr1y4SCoWs1InvZe/evSQQCKiiosJgMQxm4uPHjxMAqqysNFSIR/LJJ58QADp06BCz7rXXXiMAnS6uDz74gAB06iknk8low4YNzLK/vz+FhIQwywsXLiSxWEw//vgjERGVlZXR+PHjCQAdP36ciDp65B05coQaGxsfqvPEiRMEgOLj45l1Go2GoqKieqzntddeozlz5nQ6b2RkJOsmViqVxOfzaf/+/QaLYbA6cUFBAezs7ODo6GioEI9EIpEAACZPnsysGz58OAAgNDSUWTdkyBAAQGlpKbPu119/xapVqwAAaWlpICK0tLQw28ViMaRSKZYsWQIAcHFxwZdffgkAOHHiBICOOumsWbMYHQ8iPDwcQ4cOxbZt25h1+/fvx/z583ukp6qqCjt27EBERESn8wYFBT00rjGwtraGu7s78vPzDRbDYCZWqVSst0bo66b3zkbZ3dAlfY6Ne+cUnjhxIlJSUhAbG4ucnBx4eXl1yYx0/yyXY8eOBdAxmeDjsnr1avz++++4du0aAODAgQOIiorqkZ7MzEy0trZ2GVbUV2bhFIvFUKlUBju/wUxsa2uLuro66HQ6Q4UwKGvWrMF3332HHTt2YOnSpT0atycUCmFhYYEBAwY8drxly5ZBKpXi66+/xq1bt+Dr69spgc3D9DQ2NgIAysvLHzuuMaiuroadnZ3Bzm8wEwcEBEClUuHWrVuGCmEw0tPTsWnTJrz++uudMoHeXxKr1epOy+fOnYNGo8G4ceMeO6ZEIsHy5csRHx+PTZs2IS4ursd69NWhxMTELudluxApLCxETU0NAgMDDRbDYCYeOXIknJycsH//fkOFeCRNTU0A0GmONH2V4d76rb4JSr+ffs60gwcPoq2tDSdPnkRmZibq6+uRm5uLO3fuAAAaGhpQVFTEnOfYsWMYM2YMoqOjAQCnTp3CzJkzkZKS0iO9r7/+OlpaWlBbW9upNH+UHktLS8yYMQNHjhzBzp07AXSMar569SqICMXFxaw1s+3duxdyudywHYIM9peRiNasWUPOzs6s3G5OSkqigIAAAkArV66k7OxsOnr0KI0dO5YA0NKlS+natWuUnJxMoaGhBIDmzZtHN2/eJCKi2NhY4vP55OTkRNu2baMNGzYQn8+nd955h4iIVqxYQWKxmGbPnk1bt26luLg4Cg0NpTt37jAaVq5cSQBoxIgRPdYdERFBx44d67L+UXoqKipo0qRJBID8/Pxo9uzZtHTpUpJIJLR69WoqKSl5ik/zydBoNOTp6UmrV682aByDmriiooLkcjm9+eabhgxjMKqqqkir1TLLdXV1zOsVK1aQq6sraTQaysjIoIKCgi7Ht7S00I0bN+ill17qccyioqIHDvl5mB49eXl5lJ2dTTqdjgoKClgdYPvee++RRCIx+Igdg3cA2rt3L/F4PDp69KihQxkVvYkfRXp6eqebEs8KqampJBAI6F//+pfBYxmlK+bixYvJzs6Orl69aoxwRmHRokUkk8keuk9iYiLt27fPSIr6Djdv3iRnZ+cuN18MhVFMrFKpKDw8nGxsbOjy5cvGCGkwtFotbd26lVxcXIjP59MHH3xAxcXF3e77LA69ys7OJldXV5owYYLRJrkx2hi75uZmmjp1KtnZ2VFiYqKxwnIYkeTkZHJ0dKSJEycadZYmow4UbW5uZv5lf/jhh9TW1mbM8BwGor29nTZs2EACgYDmz59v9GnGWBmyv337dhKJRDRp0iS6fv06GxI4eonbt2/T1KlTSSgU0j/+8Q9WNLA2ecrVq1dp7NixZG5uTm+//TY3SaCJ0dzcTO+99x4JhUIaOXIkXbp0iTUtrM4A1N7eTtu2bSNbW1tydXWl//u//+PG4fVx1Go1bd26lTw8PEgul9OWLVtYrxayPhcbUUcj/ltvvUVWVlbk7OxMX331FTU1NbEti+MeVCoVbd68mdzc3EgkEtHq1asN2tH9cegTJtZTVVVF69evJ6lUSjKZjOLi4ujatWtsy3qmyc3NpbVr15KDgwNZWFhQXFwcK7ewH0afMrGe6upq+vLLL8nb25sA0HPPPUc//vjjI0dIcPQOzc3NtHv3bpo2bRrxeDzy9PSkzz77rM+UvPfTJ02sp729nY4dO0Zz584lMzMzsrS0pKioKPr55585Q/cyzc3NlJCQQAsWLCCxWEwCgYBefPFFOnLkSJ+/aWMSOTuAjtwSBw4cQEJCApKTk2Fubo7w8HA8//zziIiIgK+vL9sSTY78/HwmAc2JEyegVqsRFhaG+fPnY+7cuawOLXscTMbE91JTU4ODBw/i119/RXJyMpRKJQYOHIiIiAiEhYVhwoQJTzS6or9TUlKC8+fP4/Tp00hKSkJ+fj6sra0xZcoUzJw5E1FRUSaZxMckTXwvbW1tXVJatbW1wc3NDePHj8f48eMRHByMoKAgWFtbsy3XaDQ1NeH69eu4ePEik5yypKQEAoGASZkWERGBCRMmmHxSSpM38f00Nzfj8uXLOH/+PM6fP48LFy6gqqoKPB4PXl5eCAwMRGBgIIKCgjB06FD4+PgwIydMkZaWFuTn5+PWrVtMNtHr16+joKAARAR7e3uEhIQgJCQEEyZMwNixYx85+trU6Hcm7o7CwkImt3NmZiauX7+O3NxcZsiOs7MzvL29O+V2dnJy6pSYXCAQGF23TqdDVVUVKisrmUTl9+d21g8OFQgEGDRoEIKCgjpdqN7e3kbXbWyeCRN3h1qtRl5eXidD6B9FRUWdhpjz+Xw4OjrC0dERcrkc1tbWkEqlkEqlkMvlkEqlEAgEEIvFzAhlPp8PmUzGnEOpVKK9vR1Axzi/pqYm6HQ6NDQ0QKFQoLGxEUqlEkqlEg0NDaiqqkJVVRVzDABYWlrCw8ODSaZ+78PX15f1KRLY4pk18aNoampiSr/y8nJUVFSgqqoKDQ0NjNn0hlMoFCCiTkZta2tjhtIDHaOZ9XVPvcF5PB7kcjlkMlmnC0Mmk8HR0ZH5NXB0dISrqyukUikrn0VfhzMxh8ljtHQHHByGgjMxh8nDmZjD5DEDkMC2CA6Op+H/AekKnrLsmsQwAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "webrtc = malaya_speech.vad.webrtc()\n", "p_vad = Pipeline()\n", "pipeline = (\n", " p_vad.map(lambda x: float_to_int(x, divide_max_abs=False))\n", " .map(webrtc)\n", ")\n", "p_vad.visualize()" ] }, { "cell_type": "markdown", "id": "80b52e75", "metadata": {}, "source": [ "Starting malaya-speech 1.4.0, streaming always returned a float32 array between -1 and +1 values." ] }, { "cell_type": "markdown", "id": "massive-abortion", "metadata": {}, "source": [ "### Streaming interface\n", "\n", "```python\n", "def stream(\n", " vad_model=None,\n", " asr_model=None,\n", " classification_model=None,\n", " sample_rate: int = 16000,\n", " segment_length: int = 2560,\n", " num_padding_frames: int = 20,\n", " ratio: float = 0.75,\n", " min_length: float = 0.1,\n", " max_length: float = 10.0,\n", " realtime_print: bool = True,\n", " **kwargs,\n", "):\n", " \"\"\"\n", " Stream an audio using pyaudio library.\n", "\n", " Parameters\n", " ----------\n", " vad_model: object, optional (default=None)\n", " vad model / pipeline.\n", " asr_model: object, optional (default=None)\n", " ASR model / pipeline, will transcribe each subsamples realtime.\n", " classification_model: object, optional (default=None)\n", " classification pipeline, will classify each subsamples realtime.\n", " device: None, optional (default=None)\n", " `device` parameter for pyaudio, check available devices from `sounddevice.query_devices()`.\n", " sample_rate: int, optional (default = 16000)\n", " output sample rate.\n", " segment_length: int, optional (default=2560)\n", " usually derived from asr_model.segment_length * asr_model.hop_length,\n", " size of audio chunks, actual size in term of second is `segment_length` / `sample_rate`.\n", " ratio: float, optional (default = 0.75)\n", " if 75% of the queue is positive, assumed it is a voice activity.\n", " min_length: float, optional (default=0.1)\n", " minimum length (second) to accept a subsample.\n", " max_length: float, optional (default=10.0)\n", " maximum length (second) to accept a subsample.\n", " realtime_print: bool, optional (default=True)\n", " Will print results for ASR.\n", " **kwargs: vector argument\n", " vector argument pass to malaya_speech.streaming.pyaudio.Audio interface.\n", "\n", " Returns\n", " -------\n", " result : List[dict]\n", " \"\"\"\n", "```" ] }, { "cell_type": "markdown", "id": "atlantic-automation", "metadata": {}, "source": [ "### Check available devices" ] }, { "cell_type": "code", "execution_count": 3, "id": "received-finland", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "> 0 MacBook Air Microphone, Core Audio (1 in, 0 out)\n", "< 1 MacBook Air Speakers, Core Audio (0 in, 2 out)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import sounddevice\n", "\n", "sounddevice.query_devices()" ] }, { "cell_type": "markdown", "id": "beneficial-russian", "metadata": {}, "source": [ "By default it will use `0` index." ] }, { "cell_type": "markdown", "id": "efficient-syria", "metadata": {}, "source": [ "### Load Classification models\n", "\n", "In this example, I am going to use 3 different modules, gender detection, language detection and age detection." ] }, { "cell_type": "code", "execution_count": 4, "id": "appropriate-springfield", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/Users/huseinzolkepli/Documents/dev/malaya-speech/malaya_speech/utils/featurization.py:38: FutureWarning: Pass sr=16000, n_fft=512 as keyword args. From version 0.10 passing these as positional arguments will result in an error\n", " self.mel_basis = librosa.filters.mel(\n" ] } ], "source": [ "gender_model = malaya_speech.gender.deep_model(model = 'vggvox-v2')\n", "language_detection_model = malaya_speech.language_detection.deep_model(model = 'vggvox-v2')\n", "age_model = malaya_speech.age_detection.deep_model(model = 'vggvox-v2')" ] }, { "cell_type": "markdown", "id": "declared-intelligence", "metadata": {}, "source": [ "### Classification Pipeline\n", "\n", "In this example, I just keep it simple. **And needs to end with `classification` map or else the streaming interface will throw an error**." ] }, { "cell_type": "code", "execution_count": 5, "id": "nonprofit-boundary", "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p_classification = Pipeline()\n", "to_float = p_classification\n", "gender = to_float.map(gender_model)\n", "language_detection = to_float.map(language_detection_model)\n", "age_detection = to_float.map(age_model)\n", "combined = gender.zip(language_detection).zip(age_detection).flatten()\n", "combined.map(lambda x: x, name = 'classification')\n", "\n", "p_classification.visualize()" ] }, { "cell_type": "markdown", "id": "ambient-boring", "metadata": {}, "source": [ "**Again, once you start to run the code below, it will straight away recording your voice**. \n", "\n", "If you run in jupyter notebook, press button stop up there to stop recording, if in terminal, press `CTRL + c`." ] }, { "cell_type": "code", "execution_count": 11, "id": "systematic-toddler", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(['male', 'others', 'teens']) (['male', 'others', 'teens']) (['male', 'others', 'teens']) (['female', 'english', 'teens']) (['male', 'others', 'teens']) (['male', 'others', 'teens']) " ] } ], "source": [ "samples = malaya_speech.streaming.pyaudio.stream(p_vad, classification_model = p_classification,\n", " segment_length = 320)" ] }, { "cell_type": "code", "execution_count": 12, "id": "386fbc95", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'wav_data': array([-0.00345457, -0.0032946 , -0.00301315, ..., 0.00223406,\n", " 0.00202652, 0.00163344], dtype=float32),\n", " 'timestamp': datetime.datetime(2023, 2, 16, 16, 29, 28, 534089),\n", " 'classification_model': ['male', 'others', 'teens']},\n", " {'wav_data': array([-0.00067088, -0.00044385, -0.0005716 , ..., -0.00282512,\n", " -0.00334047, -0.00384063], dtype=float32),\n", " 'timestamp': datetime.datetime(2023, 2, 16, 16, 29, 32, 193274),\n", " 'classification_model': ['male', 'others', 'teens']},\n", " {'wav_data': array([-0.00188409, -0.00239474, -0.00268455, ..., 0.00144703,\n", " 0.00123731, 0.00090965], dtype=float32),\n", " 'timestamp': datetime.datetime(2023, 2, 16, 16, 29, 34, 113255),\n", " 'classification_model': ['male', 'others', 'teens']},\n", " {'wav_data': array([-0.00127463, -0.00137094, -0.00147386, ..., 0.00097433,\n", " 0.00168371, 0.00204899], dtype=float32),\n", " 'timestamp': datetime.datetime(2023, 2, 16, 16, 29, 35, 693264),\n", " 'classification_model': ['female', 'english', 'teens']},\n", " {'wav_data': array([-0.00277163, -0.00187815, -0.00119719, ..., -0.00251485,\n", " -0.00233406, -0.00204219], dtype=float32),\n", " 'timestamp': datetime.datetime(2023, 2, 16, 16, 29, 37, 133163),\n", " 'classification_model': ['male', 'others', 'teens']},\n", " {'wav_data': array([-0.00120222, 0.00019605, 0.00202936, ..., 0.00489668,\n", " 0.00582111, 0.00645903], dtype=float32),\n", " 'timestamp': datetime.datetime(2023, 2, 16, 16, 29, 39, 313719),\n", " 'classification_model': ['male', 'others', 'teens']}]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "samples" ] }, { "cell_type": "code", "execution_count": 13, "id": "functioning-incident", "metadata": {}, "outputs": [], "source": [ "import IPython.display as ipd\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": 14, "id": "cognitive-intellectual", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ipd.Audio(samples[-1]['wav_data'], rate = 16000)" ] }, { "cell_type": "code", "execution_count": 15, "id": "isolated-regression", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ipd.Audio(np.concatenate([s['wav_data'] for s in samples]), rate = 16000)" ] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.10" }, "varInspector": { "cols": { "lenName": 16, "lenType": 16, "lenVar": 40 }, "kernels_config": { "python": { "delete_cmd_postfix": "", "delete_cmd_prefix": "del ", "library": "var_list.py", "varRefreshCmd": "print(var_dic_list())" }, "r": { "delete_cmd_postfix": ") ", "delete_cmd_prefix": "rm(", "library": "var_list.r", "varRefreshCmd": "cat(var_dic_list()) " } }, "types_to_exclude": [ "module", "function", "builtin_function_or_method", "instance", "_Feature" ], "window_display": false } }, "nbformat": 4, "nbformat_minor": 5 }