{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Principal Component for Speakers" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "\n", "This tutorial is available as an IPython notebook at [malaya-speech/example/pca-speaker](https://github.com/huseinzol05/malaya-speech/tree/master/example/pca-speaker).\n", " \n", "
" ] }, { "cell_type": "markdown", "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", "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": 1, "metadata": {}, "outputs": [], "source": [ "from malaya_speech import Pipeline\n", "import malaya_speech\n", "import numpy as np" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### List available deep model" ] }, { "cell_type": "code", "execution_count": 2, "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", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
Size (MB)Quantized Size (MB)Embedding SizeEER
deep-speaker96.724.40512.00.218700
vggvox-v170.817.701024.00.139440
vggvox-v243.27.92512.00.044600
speakernet35.08.887205.00.300028
conformer-base99.427.20512.00.069380
conformer-tiny20.36.21512.00.086870
\n", "
" ], "text/plain": [ " Size (MB) Quantized Size (MB) Embedding Size EER\n", "deep-speaker 96.7 24.40 512.0 0.218700\n", "vggvox-v1 70.8 17.70 1024.0 0.139440\n", "vggvox-v2 43.2 7.92 512.0 0.044600\n", "speakernet 35.0 8.88 7205.0 0.300028\n", "conformer-base 99.4 27.20 512.0 0.069380\n", "conformer-tiny 20.3 6.21 512.0 0.086870" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "malaya_speech.speaker_vector.available_model()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Smaller EER the better model is**." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Load deep model\n", "\n", "```python\n", "def deep_model(model: str = 'vggvox-v2', quantized: bool = False, **kwargs):\n", " \"\"\"\n", " Load Speaker2Vec model.\n", "\n", " Parameters\n", " ----------\n", " model : str, optional (default='speakernet')\n", " Model architecture supported. Allowed values:\n", "\n", " * ``'vggvox-v1'`` - VGGVox V1, embedding size 1024, exported from https://github.com/linhdvu14/vggvox-speaker-identification\n", " * ``'vggvox-v2'`` - VGGVox V2, embedding size 512, exported from https://github.com/WeidiXie/VGG-Speaker-Recognition\n", " * ``'deep-speaker'`` - Deep Speaker, embedding size 512, exported from https://github.com/philipperemy/deep-speaker\n", " * ``'speakernet'`` - SpeakerNet, embedding size 7205, exported from https://github.com/NVIDIA/NeMo/tree/main/examples/speaker_recognition\n", " * ``'conformer-base'`` - Conformer BASE size, embedding size 512.\n", " * ``'conformer-tiny'`` - Conformer TINY size, embedding size 512.\n", "\n", " quantized : bool, optional (default=False)\n", " if True, will load 8-bit quantized model.\n", " Quantized model not necessary faster, totally depends on the machine.\n", "\n", " Returns\n", " -------\n", " result : malaya_speech.supervised.classification.load function\n", " \"\"\"\n", "```" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "7bb9058eb6e34c1396fe8f926f310833", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(FloatProgress(value=0.0, description='Downloading', max=99435347.0, style=ProgressStyle(descrip…" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "d02db9df9f3044e3b40330c7e751784b", "version_major": 2, "version_minor": 0 }, "text/plain": [ "HBox(children=(FloatProgress(value=0.0, description='Downloading', max=43181008.0, style=ProgressStyle(descrip…" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "\n" ] } ], "source": [ "model = malaya_speech.speaker_vector.deep_model('conformer-base')\n", "model_vggvox = malaya_speech.speaker_vector.deep_model('vggvox-v2')" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['speech/example-speaker/haqkiem.wav',\n", " 'speech/example-speaker/husein-generated.wav',\n", " 'speech/example-speaker/khalil-nooh.wav',\n", " 'speech/example-speaker/muhyiddin-yassin.wav',\n", " 'speech/example-speaker/mas-aisyah.wav',\n", " 'speech/example-speaker/female.wav',\n", " 'speech/example-speaker/shafiqah-idayu.wav',\n", " 'speech/example-speaker/husein-zolkepli.wav']" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from glob import glob\n", "\n", "speakers = glob('speech/example-speaker/*.wav')\n", "speakers" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Pipeline for Conformer base" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "def load_wav(file):\n", " return malaya_speech.load(file)[0]\n", "\n", "p = Pipeline()\n", "frame = p.foreach_map(load_wav).map(model)" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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omvkcjlNmTKFvLy82j3vqN1waWxspNGjR5OrqytlZWVpvMielJSURAsWLCAA5OrqSnv27KG6ujoiIpLJZLR27VoaOnQo7d69m77//nuaM2cOFRUVERHR999/T87OzgSAFi9eTJcvX+ZeNyMjg7y9vQkAAaChQ4eq7UlYuXIlCQQCGjx4MG3bto0OHz5MBgYGNGXKFKqurqaSkhKaPn068Xg84vF4NHnyZG7344EDB8ja2poA0Ouvv04NDQ30888/k42NDQGgN954gwu/ziQmJnK7z1esWEF5eXkUExPDnWg6Z84cSk9Pp8TERBo7diw3nTk5OV2ahlWrVpGenh6tW7eO1q9fT0uXLqWwsDC1H07r3kZ9fX3ufb/f5cuXaebMmQSAAgIC6MyZM136fLpSY35+PgUFBREA8vDwoGXLllFYWBiFhITQd999162gJrq792v69Olq42JiYui///1vm8c+qLb7H5ucnNytWnSJRCKhsLAwsrCwUPsd3KvDw/9rampo7NixZG5urrZbsz+oq6ujhIQEKi4u7vZzCwoK1Oas97r3R0ZEakshrWpra9t80XRJZ9OwatUq0tfXJyKioqIiqq+vb/c1qqqq6OWXX1abs3fHgz6frrzPd+7c4eamYrH4oepoJZVK24zrKKS6UhsR6ex5bl2RlZVFw4cPJxsbG7Vjdu7XaX8ucrkcr732Gr777jssXLgQX375JZydnXtkXY3pnjVr1jzwMZGRkRg5cqTGali9ejV27dqF5ubmTh8XExODoqIitW0SukIX3se+Si6X4+OPP8Z///tfjBgxAlFRURg4cGCHj+/0uH5DQ0Ns3boVS5YswerVq+Ht7Y0XX3wRGzdu7Je7q3XZvcdudOT+Xd09TSqVQqlUorGxscMLsCuVSshkMp0MFkA33se+RqVS4ciRI3j77bchEonw5ptv4p133nnwlTm6uigkk8loy5YtZGdnR2ZmZvSPf/yjw9UDpv/Zt28fOTg4cBvK+0rXG8zDk0gk9O2335Knpyfp6+tTZGRktzYldLubS7FYjB07duDLL79EWVkZZs2ahRUrViAsLIz15t+P1dfX496viqGhIbfLlelfLl26hJ9++gm//PILmpqa8Nxzz+H111/v9uVIHroPXYVCgaNHj2L37t34448/YG5ujiVLliAiIqLTY0YYhtE9RUVFXP+52dnZ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\n", "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p.visualize()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Pipeline for VGGVox V2" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "p_vggvox = Pipeline()\n", "frame_vggvox = p_vggvox.foreach_map(load_wav).map(model_vggvox)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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omvkcjlNmTKFvLy82j3vqN1waWxspNGjR5OrqytlZWVpvMielJSURAsWLCAA5OrqSnv27KG6ujoiIpLJZLR27VoaOnQo7d69m77//nuaM2cOFRUVERHR999/T87OzgSAFi9eTJcvX+ZeNyMjg7y9vQkAAaChQ4eq7UlYuXIlCQQCGjx4MG3bto0OHz5MBgYGNGXKFKqurqaSkhKaPn068Xg84vF4NHnyZG7344EDB8ja2poA0Ouvv04NDQ30888/k42NDQGgN954gwu/ziQmJnK7z1esWEF5eXkUExPDnWg6Z84cSk9Pp8TERBo7diw3nTk5OV2ahlWrVpGenh6tW7eO1q9fT0uXLqWwsDC1H07r3kZ9fX3ufb/f5cuXaebMmQSAAgIC6MyZM136fLpSY35+PgUFBREA8vDwoGXLllFYWBiFhITQd999162gJrq792v69Olq42JiYui///1vm8c+qLb7H5ucnNytWnSJRCKhsLAwsrCwUPsd3KvDw/9rampo7NixZG5urrZbsz+oq6ujhIQEKi4u7vZzCwoK1Oas97r3R0ZEakshrWpra9t80XRJZ9OwatUq0tfXJyKioqIiqq+vb/c1qqqq6OWXX1abs3fHgz6frrzPd+7c4eamYrH4oepoJZVK24zrKKS6UhsR6ex5bl2RlZVFw4cPJxsbG7Vjdu7XaX8ucrkcr732Gr777jssXLgQX375JZydnXtkXY3pnjVr1jzwMZGRkRg5cqTGali9ejV27dqF5ubmTh8XExODoqIitW0SukIX3se+Si6X4+OPP8Z///tfjBgxAlFRURg4cGCHj+/0uH5DQ0Ns3boVS5YswerVq+Ht7Y0XX3wRGzdu7Je7q3XZvcdudOT+Xd09TSqVQqlUorGxscMLsCuVSshkMp0MFkA33se+RqVS4ciRI3j77bchEonw5ptv4p133nnwlTm6uigkk8loy5YtZGdnR2ZmZvSPf/yjw9UDpv/Zt28fOTg4cBvK+0rXG8zDk0gk9O2335Knpyfp6+tTZGRktzYldLubS7FYjB07duDLL79EWVkZZs2ahRUrViAsLIz15t+P1dfX496viqGhIbfLlelfLl26hJ9++gm//PILmpqa8Nxzz+H111/v9uVIHroPXYVCgaNHj2L37t34448/YG5ujiVLliAiIqLTY0YYhtE9RUVFXP+52dnZ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\n", "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "p_vggvox.visualize()" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 5.76 s, sys: 2.07 s, total: 7.83 s\n", "Wall time: 1.56 s\n" ] } ], "source": [ "%%time\n", "\n", "r = p(speakers)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "CPU times: user 28.7 s, sys: 7.72 s, total: 36.4 s\n", "Wall time: 17.9 s\n" ] } ], "source": [ "%%time\n", "\n", "r_vggvox = p_vggvox(speakers)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "((8, 512), (8, 512))" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "r['speaker-vector'].shape, r_vggvox['speaker-vector'].shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Component Analysis for SpeakerNet" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "from sklearn.decomposition import PCA\n", "\n", "pca = PCA(n_components = 2)\n", "components = pca.fit_transform(r['speaker-vector'])" ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "scrolled": true }, "outputs": [ { "data": { "image/png": "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mnC/Apap6gERKa2ticBEgGbNmp1bwMYYY8JWwJKhql5T3DEROSIiDVX1sIg0BM7e/gCSgV4i8iugHlBLRI6r6ln3F1V1NjAbnLVJK+YTGGOMCRehWoFmMTAemOH+edaWCao6rvC5iEwAknwlQmOMMaa8QnXPcAbQX0SygGvc14hIkoi8GKKYjDHGhCnbwskYY4xt4RTqAIypyrKzs4mNjS33eVavXs3QoUPPKl+8eDEzZswo9/mNMSWzXSuMqcSGDRvGsGHDQh2GMdWeXRkaU04FBQXccccdtG/fngEDBpCbm8sLL7xA586diY+PZ9SoUfz4448A7Nu3j+TkZOLi4njooYeoV6/eWedLTU0lMTGRPXv2kJKSwuTJkwHIyclh1KhRdO7cmc6dO7N27VoApk2bxvjx4+nVqxfNmzdnwYIF3HvvvcTFxTFo0CDy8vKC92UYU0VZMjSmnLKysrjrrrvIzMwkOjqad999l5EjR5KamsrmzZu58soreemllwCYMmUKkyZNYuvWrTRs2PCsc61bt44777yTRYsWcfnllxc5NmXKFH7729+SmprKu+++y+233+45tmfPHj7++GMWL17MzTffTN++fdm6dStRUVEsXbo0sF+AMdWAdZMaU0YL0w8yc/lODh3N5SI9xs8aNSUhIQGATp06kZ2dzbZt23jooYc4evQox48fZ+DAgQCsXbuWd999F4BbbrmF++67z3PeL7/8kokTJ7JixQoaNWp0VrsrV65k+/btntfff/89x48fB+Daa6+lZs2axMXFUVBQwKBBgwCIi4sjOzs7IN+DMdWJJUNjymBh+kEeWLCV3LwCAI58f5JvTyoL0w8yIrExkZGR5ObmMmHCBBYuXEh8fDwpKSmsXr3ac47iVlRq2LAhJ0+eJD093WcyPH36NOvXr6dOnTpnHatduzYAERER1KxZ09NGREQE+fn55f3YxlR71k1qTBnMXL7TkwgLqSozl+8sUvbDDz/QsGFD8vLymDt3rqe8R48evPXWWwBFygGio6NZunQpDzzwQJHkWWjAgAE89dRTntcZGRnl/TjGGJclQ2PK4NDRXL/Kp0+fTteuXenRowdt27b1lP/973/nmWeeIS4ujoMHD551nksvvZQlS5Zw11138cUXXxQ59uSTT5KWlkaHDh1o164dzz33XAV8ImMM2KR7Y8qkx4yPOegjITaOjmLt/VeX+Xz16tXz3PczJpRs0r0xxm9TB7YhqmZkkbKompFMHdgmRBEZYyqCDaAxpgxGJDYG8IwmbRQdxdSBbTzlZWVXhcZUDpYMjSmjEYmNzzn5GWMqJ+smNcYYE/YsGRpjjAl7lgyNMcaEPUuGxhhjwp4lQ2OMMWHPkqExxpiwZ8nQGGNM2Kt2y7GJSA6wP9RxlOAS4JtQB1EKi7FiVIUYoWrEaTFWjJJibK6qDYIZTGVS7ZJhZSciaZV9/T+LsWJUhRihasRpMVaMqhBjqFg3qTHGmLBnydAYY0zYs2QYfLNDHYAfLMaKURVihKoRp8VYMapCjCFh9wyNMcaEPbsyNMYYE/YsGQaYiFwkIh+KSJb754XF1GsmIitE5EsR2S4iMZUtRrfuBSJyQESeDlZ8/sYoIgki8rmIZIrIFhG5IUixDRKRnSKyW0Tu93G8tojMc49/Ecy/2zLE+L/uv7stIvKRiDQPdoz+xOlVb5SIqIgEfWSkPzGKyM/d7zNTRN6obDG6P29WiUi6+3c+ONgxVjqqao8APoC/APe7z+8Hniim3mqgv/u8HlC3ssXoHv878AbwdGX7HoHWQCv3eSPgMBAd4LgigT1AS6AWsBlod0adXwHPuc9vBOYF+bvzJ8a+hf/mgEnBjtHfON165wOfAuuBpMoWI9AKSAcudF//rBLGOBuY5D5vB2QH+++7sj3syjDwhgOvus9fBUacWUFE2gE1VPVDAFU9rqo/Bi/E0mMEEJFOwKXAiiDF5a3UGFV1l6pmuc8PAV8DgZ5E3AXYrap7VfUU8JYbqzfv2N8B+omIBDiuMsWoqqu8/s2tB5oEMb5C/nyXANOBJ4CTwQzO5U+MdwDPqOp/AFT160oYowIXuM/rA4eCGF+lZMkw8C5V1cPu83/jJJMztQaOisgCt9tipohEBi/E0mMUkQjg/4B7ghiXN3++Rw8R6YLzW/GeAMfVGPjK6/UBt8xnHVXNB44BFwc4Lp/tu3zF6O0XwPsBjci3UuMUkY5AU1VdGszAvPjzXbYGWovIWhFZLyKDghadw58YpwE3i8gBYBnw6+CEVnnVCHUA1YGIrAQu83HoQe8Xqqoi4mv4bg2gF5AI/AuYB0wAXqpEMf4KWKaqBwJ1UVMBMRaepyHwGjBeVU9XbJTVm4jcDCQBvUMdy5ncX8j+ivN/ozKrgdNV2gfnCvtTEYlT1aMhjaqosUCKqv6fiCQDr4lIbDj/f7FkWAFU9ZrijonIERFpqKqH3R/SvrpMDgAZqrrXfc9CoBsVmAwrIMZkoJeI/ArnnmYtETmuqsUOcghBjIjIBcBS4EFVXV9RsZXgINDU63UTt8xXnQMiUgOnW+rbIMR2ZvuFfMWIiFyD84tHb1X9KUixeSstzvOBWGC1+wvZZcBiERmmqmmVJEZw/j9/oap5wD4R2YWTHFODE6JfMf4CGASgqp+LSB2cdUuD3aVbaVg3aeAtBsa7z8cDi3zUSQWiRaTw/tbVwPYgxFao1BhVdZyqNlPVGJyu0jkVmQj9UGqMIlILeM+N7Z0gxZUKtBKRFm77N7qxevOOfTTwsbojFypLjCKSCDwPDAvBPa5CJcapqsdU9RJVjXH/Ha7HiTdYibDUGF0Lca4KEZFLcLpN91ayGP8F9HNjvBKoA+QEMcbKJ9QjeKr7A+fe0EdAFrASuMgtTwJe9KrXH9gCbAVSgFqVLUav+hMI/mjSUmMEbgbygAyvR0IQYhsM7MK5P/mgW/YYzg9qcH7QvA3sBjYALUPw77C0GFcCR7y+t8XBjtGfOM+ou5ogjyb187sUnO7c7e7/5xsrYYztgLU4I00zgAGh+PuuTA9bgcYYY0zYs25SY4wxYc+SoTHGmLBnydAYY0zYs2RojDEm7FkyNMYYE/YsGZpKRUQKRCRDRLaJyNsiUreYestEJPoczt9IRM55DqKIZLtzx84sryciz4vIHhHZKCKrRaTrubZTGYizC4jP3QxE5GJ314PjEuQdTIwJBEuGprLJVdUEVY0FTgF3eh8UR4SqDtZzWN5KVQ+p6uiKCtbLi8B3OLtmdAJuw1nRoypLwJmv5stJ4GFCt1atMRXKkqGpzD4DrhCRGHdvtjnANqBp4RWae+xLEXnB3TtuhYhEAYjIFSKyUkQ2i8gmEbncrb/NPT5BRBa5V3FZIvJIYcMistC9wssUkYklBSkilwNdgYfUXdtRVfepu5i0OHsFbnMfv3HLYkRkh4ikiMguEZkrIte4iztnuQuNIyLTROQ1cfZpzBKRO9xyEWdB920islXcvRtFpI/7ed5xzz9X3LXLRKSTiHzifq7l7rJ2uPWfEJENbiy93JVLHgNucK/Ui+wNqaonVHUNodk5wpiKF+pZ//awh/cDOO7+WQNnybVJQAxwGujmVS8b58orBsjHXWkGmA/c7D7/ArjefV4HqOvW3+aWTcDZ8/BiIAon0Sa5xwpXuCksv9i73TNiHga8V8zn6YSzCsl5OGu6ZuIsyF4YdxzOL6UbgZdxVi8ZDix03z8NZ5WQKPfzfoWzV+Mo4EOcvesuxVleqyHOMmDHcNajjAA+B3oCNYF1QAP3vDcAL7vPVwP/5z4fDKz0+n5KXGnInzr2sEdVeNhC3aayiRKRDPf5ZziLlTcC9mvxC2/vU9XC92wEYkTkfKCxqr4HoKonAeTsHTc+VNVv3WMLcBJHGnC3iFzv1mmKs9DyuSyu3RMnUZ7waqMXzlqR+1R1q1ueCXykqioiW3GSZaFFqpoL5IrIKpz96noCb6pqAXBERD4BOgPfAxtU9YB73gz3XEdxFrn+0P0OInF+ESi0wP1z4xltGxMWLBmayiZXVRO8C9wf3idKeI/3DgsFOFdR/jpzPUIVkT7ANUCyqv4oIqtxriyLkwnEi0ikm5z85R33aa/Xpyn6f/OsGMtw3gL3XAJkqmpyKe8prG9MWLF7hqZaUtUfcLZMGgEgIrWLGZnaX0Qucu8zjsBZvLg+8B83EbbF2U6rpLb24FxNPup1fy5GRIbgXN2OEJG6InIecL1bVhbDRaSOiFyM0w2a6p7jBhGJFGe3k6twFgEvzk6ggTh71yEiNUWkfSnt/oCzbZIx1Z4lQ1Od3YLT3bkF536Zr42DNwDv4uwY8q462wF9ANQQkS+BGThbBZXmdpx7d7vdATopwNequsl9vgHnHuaLqppexs+xBVjlxjFdVQ/hbFW1Bed+4sfAvar67+JOoKqncLaPekJECncq6F5Ku6uAdr4G0IAzzQR3s10ROSAi7cr4uYypNGzXChO2RGQCzoCZyaGOpTgiMg1nUNGsUMdiTHVmV4bGGGPCnl0ZGmOMCXt2ZWiMMSbsWTI0xhgT9iwZGmOMCXuWDI0xxoQ9S4bGGGPCniVDY4wxYe//A3rvo0Z/0fbXAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "fig, ax = plt.subplots()\n", "ax.scatter(components[:, 0], components[:, 1])\n", "\n", "for i, speaker in enumerate(speakers):\n", " speaker = speaker.split('/')[-1].replace('.wav', '')\n", " ax.annotate(speaker, (components[i, 0], components[i, 1]))\n", " \n", "plt.xlabel('Principal Component 1')\n", "plt.ylabel('Principal Component 2')\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Component Analysis for VGGVox V2" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "components = pca.fit_transform(r_vggvox['speaker-vector'])" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "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l0xEpMI0xVoVMnnpZjIeepcWo2dw4V8X8J0nFm1LSEigVq1aRe/37t3L7373O84++2xWrlzJtGnT2LNnDwBXXHEFU6dOpU6dOlxwwQW8++67PPXUU0W3Obds2VLmvuFGjx7Nc889R15eHhkZGaxatQqAIUOG8Morr/Diiy/yy1/+EoA//elPNGrUiGXLlpGVlcX3339fdJzCuAESExPZu3fv4b94IiIHSS3CKmLy0s3cMWkFefkFAHzxzR62frOHyUs3MyCtaan77Nixg6ZNQ9syMzOLytetW8fJJ5/MiBEj+Oyzz1i+fDm33HILN9100wH3Dbd27VqSk5NJTk5m0aJFrFq1qui5ZefOnTnppJNo06ZN0fGaNWtGQkICL730EgUFBYd6SUREokItwoOQlJTEtm3bKrTP5ZdfTvv27fnTn/7E3XffzaxZs4ptf2Tm6qIkWMjdeWTm6mJlmZmZ3H333QDcfvvt3HHHHaSlpRVrZU2YMIFTTjmFhg0bsnLlSoYMGVIi/mHDhpW6b7jHHnuMdu3a0b59e2rWrMn5558PQKNGjWjdujVXX311Ud0bb7yRl156iZSUFFatWsXRRx9doesjIhIr5tWsB196erpnZWVV6jmSkpLIysqiQYMGEdX/73//S/fu3fn000/LrNNi9AxK+5MwYP1DfYo+Z2ZmkpWVxZNPPlnBqH9Q0fj39+2335KcnMySJUuoV6/eQcchIlWHmS1297gcO6UW4QHs3r2bPn36kJKSQrt27Rg/fjwATzzxBB06dCA5Obno2VlZQxJ69erF5s2bSU1NZe7cuQwdOpSJE0NDI99++21atWrF1r/fwtez/saXE+8F4Lstq/n8779i68u3FDsWwJYtW+jduzctW7bk9ttvLzXu8GEQX331Fb169aJt27Zce+21xYYvDBgwgI4dO9K2bVueeeYZAF544QVuueWWojrPPvsst956K7m5ubRo0YLWrVtz88038+yzzzJmzJjDcZlFRGJGifAA3n77bZo0acKyZctYuXIlvXv3BqBBgwYsWbKEG264gbFjxwLQqlUr5s6dy9KlS7nvvvv47W9/C8DUqVM55ZRTyM7O5owzzig69p49e7juuuuYNm0af582G77dXrSt5onNaTH0//HKjDnFjgWQnZ3N+PHjWbFiBePHj2fjxo3lfod7772X7t27k5OTw8CB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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "ax.scatter(components[:, 0], components[:, 1])\n", "\n", "for i, speaker in enumerate(speakers):\n", " speaker = speaker.split('/')[-1].replace('.wav', '')\n", " ax.annotate(speaker, (components[i, 0], components[i, 1]))\n", " \n", "plt.xlabel('Principal Component 1')\n", "plt.ylabel('Principal Component 2')\n", "plt.show()" ] }, { "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.7.7" }, "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 }