├── tests └── requirements.txt ├── requirements.txt ├── LICENSE ├── .github └── workflows │ └── test.yml ├── .gitignore ├── README.md └── notebook.ipynb /tests/requirements.txt: -------------------------------------------------------------------------------- 1 | audiofile >=1.1.0 2 | nbmake 3 | pytest 4 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | audb 2 | audinterface 3 | audmetric 4 | audonnx 5 | audplot 6 | notebook 7 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2023 audEERING 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /.github/workflows/test.yml: -------------------------------------------------------------------------------- 1 | name: Test 2 | 3 | on: 4 | push: 5 | branches: [ master ] 6 | pull_request: 7 | branches: [ master ] 8 | 9 | jobs: 10 | build: 11 | 12 | runs-on: ${{ matrix.os }} 13 | strategy: 14 | matrix: 15 | os: [ ubuntu-20.04, windows-latest, macOS-latest ] 16 | python-version: [3.8] 17 | 18 | steps: 19 | - uses: actions/checkout@v2 20 | 21 | - name: Cache emodb 22 | uses: actions/cache@v2 23 | with: 24 | path: cache/emodb 25 | key: emodb-1.3.0 26 | 27 | - name: Cache model 28 | uses: actions/cache@v2 29 | with: 30 | path: cache/model.zip 31 | key: model-1.1.1 32 | 33 | - name: Cache predictions 34 | uses: actions/cache@v2 35 | with: 36 | path: cache/-1033597102444974303.pkl 37 | key: predictions-emodb-1.3.0-model-1.1.1 38 | 39 | - name: Set up Python ${{ matrix.python-version }} 40 | uses: actions/setup-python@v2 41 | with: 42 | python-version: ${{ matrix.python-version }} 43 | 44 | - name: Prepare Ubuntu 45 | run: | 46 | sudo apt-get update 47 | sudo apt-get install -y ffmpeg mediainfo 48 | if: matrix.os == 'ubuntu-latest' || matrix.os == 'ubuntu-20.04' 49 | 50 | - name: Prepare OSX 51 | run: brew install ffmpeg mediainfo 52 | if: matrix.os == 'macOS-latest' 53 | 54 | - name: Windows 55 | run: choco install ffmpeg mediainfo-cli 56 | if: matrix.os == 'windows-latest' 57 | 58 | - name: Install dependencies 59 | run: | 60 | python -V 61 | python -m pip install --upgrade pip 62 | pip install -r requirements.txt 63 | pip install -r tests/requirements.txt 64 | 65 | - name: Test with pytest 66 | run: | 67 | python -m pytest --nbmake --nbmake-timeout=3000 notebook.ipynb 68 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | build/ 12 | develop-eggs/ 13 | dist/ 14 | downloads/ 15 | eggs/ 16 | .eggs/ 17 | lib/ 18 | lib64/ 19 | parts/ 20 | sdist/ 21 | var/ 22 | wheels/ 23 | pip-wheel-metadata/ 24 | share/python-wheels/ 25 | *.egg-info/ 26 | .installed.cfg 27 | *.egg 28 | MANIFEST 29 | 30 | # PyInstaller 31 | # Usually these files are written by a python script from a template 32 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 33 | *.manifest 34 | *.spec 35 | 36 | # Installer logs 37 | pip-log.txt 38 | pip-delete-this-directory.txt 39 | 40 | # Unit test / coverage reports 41 | htmlcov/ 42 | .tox/ 43 | .nox/ 44 | .coverage 45 | .coverage.* 46 | .cache 47 | nosetests.xml 48 | coverage.xml 49 | *.cover 50 | *.py,cover 51 | .hypothesis/ 52 | .pytest_cache/ 53 | 54 | # Translations 55 | *.mo 56 | *.pot 57 | 58 | # Django stuff: 59 | *.log 60 | local_settings.py 61 | db.sqlite3 62 | db.sqlite3-journal 63 | 64 | # Flask stuff: 65 | instance/ 66 | .webassets-cache 67 | 68 | # Scrapy stuff: 69 | .scrapy 70 | 71 | # Sphinx documentation 72 | docs/_build/ 73 | 74 | # PyBuilder 75 | target/ 76 | 77 | # Jupyter Notebook 78 | .ipynb_checkpoints 79 | 80 | # IPython 81 | profile_default/ 82 | ipython_config.py 83 | 84 | # pyenv 85 | .python-version 86 | 87 | # pipenv 88 | # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. 89 | # However, in case of collaboration, if having platform-specific dependencies or dependencies 90 | # having no cross-platform support, pipenv may install dependencies that don't work, or not 91 | # install all needed dependencies. 92 | #Pipfile.lock 93 | 94 | # PEP 582; used by e.g. github.com/David-OConnor/pyflow 95 | __pypackages__/ 96 | 97 | # Celery stuff 98 | celerybeat-schedule 99 | celerybeat.pid 100 | 101 | # SageMath parsed files 102 | *.sage.py 103 | 104 | # Environments 105 | .env 106 | .venv 107 | env/ 108 | venv/ 109 | ENV/ 110 | env.bak/ 111 | venv.bak/ 112 | 113 | # Spyder project settings 114 | .spyderproject 115 | .spyproject 116 | 117 | # Rope project settings 118 | .ropeproject 119 | 120 | # mkdocs documentation 121 | /site 122 | 123 | # mypy 124 | .mypy_cache/ 125 | .dmypy.json 126 | dmypy.json 127 | 128 | # Pyre type checker 129 | .pyre/ 130 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # How to use our public age and gender model 2 | 3 | An introduction to our model for 4 | age and gender prediction based on 5 | [wav2vec 2.0](https://ai.facebook.com/blog/wav2vec-20-learning-the-structure-of-speech-from-raw-audio/). 6 | The model is available from 7 | [doi:10.5281/zenodo.7761387](https://doi.org/10.5281/zenodo.7761387) 8 | and released under 9 | [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/). 10 | The model was created 11 | by fine-tuning the pre-trained 12 | [wav2vec2-large-robust](https://huggingface.co/facebook/wav2vec2-large-robust) 13 | model on 14 | [aGender](https://paperswithcode.com/dataset/agender), 15 | [Mozilla Common Voice](https://commonvoice.mozilla.org/), 16 | [Timit](https://catalog.ldc.upenn.edu/LDC93s1) and 17 | [Voxceleb 2](https://www.robots.ox.ac.uk/~vgg/data/voxceleb/vox2.html). 18 | We provide two variants of the model: 19 | one with all 24 transformer layers and 20 | a stripped-down version with six transformer layers. 21 | The models were exported to 22 | [ONNX](https://onnx.ai/). 23 | The original 24 | [Torch](https://pytorch.org/) 25 | model is hosted at Hugging Face: 26 | [6 layers](https://huggingface.co/audeering/wav2vec2-large-robust-6-ft-age-gender) 27 | and 28 | [24 layers](https://huggingface.co/audeering/wav2vec2-large-robust-24-ft-age-gender). 29 | Further details are given in the associated 30 | [paper](https://arxiv.org/abs/2306.16962) 31 | and [notebook](./notebook.ipynb). 32 | 33 | ## License 34 | 35 | The model can be used for non-commercial purposes, 36 | see [CC BY-NC-SA 4.0](https://creativecommons.org/licenses/by-nc-sa/4.0/). 37 | For commercial usage, 38 | a license for 39 | [devAIce](https://www.audeering.com/devaice/) 40 | must be obtained. 41 | The source code in this GitHub repository 42 | is released under the following 43 | [license](./LICENSE). 44 | 45 | ## Quick start 46 | 47 | Create / activate Python virtual environment and install 48 | [audonnx](https://github.com/audeering/audonnx). 49 | 50 | ``` 51 | $ pip install audonnx 52 | ``` 53 | 54 | Load the model with six layers and test on random signal. 55 | 56 | ```python 57 | import audeer 58 | import audonnx 59 | import numpy as np 60 | 61 | 62 | url = 'https://zenodo.org/record/7761387/files/w2v2-L-robust-6-age-gender.25c844af-1.1.1.zip' 63 | cache_root = audeer.mkdir('cache') 64 | model_root = audeer.mkdir('model') 65 | 66 | archive_path = audeer.download_url(url, cache_root, verbose=True) 67 | audeer.extract_archive(archive_path, model_root) 68 | model = audonnx.load(model_root) 69 | 70 | sampling_rate = 16000 71 | signal = np.random.normal(size=sampling_rate).astype(np.float32) 72 | model(signal, sampling_rate) 73 | ``` 74 | ``` 75 | {'hidden_states': array([[ 0.02783544, 0.01402022, 0.03839185, ..., 0.00786646, 76 | -0.09332313, 0.0915948 ]], dtype=float32), 77 | 'logits_age': array([[0.3961048]], dtype=float32), 78 | 'logits_gender': array([[ 0.32810774, -0.56528044, 0.0317882 ]], dtype=float32)} 79 | ``` 80 | 81 | The 'hidden_states' are the pooled states of the last transformer layer, 82 | 'logits_age' provides scores for age in a range of approximately 0...1 (== 100 years) 83 | and 'logits_gender' expresses the confidence for being female, male or child. 84 | 85 | ## Tutorial 86 | 87 | For a detailed introduction, please check out the [notebook](./notebook.ipynb). 88 | 89 | ```bash 90 | $ pip install -r requirements.txt 91 | $ jupyter notebook notebook.ipynb 92 | ``` 93 | 94 | ## Citation 95 | 96 | If you use our model in your own work, please cite the following 97 | [paper](https://arxiv.org/abs/2306.16962): 98 | 99 | ``` bibtex 100 | @inproceedings{, 101 | author = {Felix Burkhardt and Johannes Wagner and Hagen Wierstorf and Florian Eyben and Björn Schuller}, 102 | editor = {Peter Jax and Sebastian Mölller}, 103 | journal = {15th ITG conference on Speech Communication}, 104 | title = {Speech-based Age and Gender Prediction with Transformers}, 105 | year = {2023}, 106 | } 107 | ``` 108 | -------------------------------------------------------------------------------- /notebook.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "markdown", 5 | "id": "fc82a8e4", 6 | "metadata": {}, 7 | "source": [ 8 | "# How to use our wav2vec 2.0 model to predict age and gender" 9 | ] 10 | }, 11 | { 12 | "cell_type": "markdown", 13 | "id": "23f9dd5c", 14 | "metadata": {}, 15 | "source": [ 16 | "In the following we present a hands-on to our model for age and gender prediction based on wav2vec 2.0. The model is publicly available for non-commercial usage from https://doi.org/10.5281/zenodo.7761387." 17 | ] 18 | }, 19 | { 20 | "cell_type": "markdown", 21 | "id": "313f2e2f", 22 | "metadata": { 23 | "hide_input": false 24 | }, 25 | "source": [ 26 | "## Load model" 27 | ] 28 | }, 29 | { 30 | "cell_type": "markdown", 31 | "id": "af91aa2a", 32 | "metadata": {}, 33 | "source": [ 34 | "We start by downloading and unpacking the model (we will use the six layer version). This will get us two files, a binary ONNX file containing the model weights and a YAML file with meta information about the model." 35 | ] 36 | }, 37 | { 38 | "cell_type": "code", 39 | "execution_count": 1, 40 | "id": "5fa18d66", 41 | "metadata": { 42 | "scrolled": true 43 | }, 44 | "outputs": [], 45 | "source": [ 46 | "import os\n", 47 | "\n", 48 | "import audeer\n", 49 | "\n", 50 | "\n", 51 | "model_root = 'model'\n", 52 | "cache_root = 'cache'\n", 53 | "\n", 54 | "\n", 55 | "audeer.mkdir(cache_root)\n", 56 | "def cache_path(file):\n", 57 | " return os.path.join(cache_root, file)\n", 58 | "\n", 59 | "\n", 60 | "url = 'https://zenodo.org/record/7761387/files/w2v2-L-robust-6-age-gender.25c844af-1.1.1.zip'\n", 61 | "dst_path = cache_path('model.zip')\n", 62 | "\n", 63 | "if not os.path.exists(dst_path):\n", 64 | " audeer.download_url(url, dst_path, verbose=True)\n", 65 | " \n", 66 | "if not os.path.exists(model_root):\n", 67 | " audeer.extract_archive(dst_path, model_root, verbose=True)" 68 | ] 69 | }, 70 | { 71 | "cell_type": "markdown", 72 | "id": "4b5c7928", 73 | "metadata": {}, 74 | "source": [ 75 | "The package [audonnx](https://github.com/audeering/audonnx) helps us to load the model. Printing the model lists the input and output nodes. Since the model operates on the raw audio stream, we have a single input node called 'signal', which expects a mono signal with a sampling rate of 16000 Hz. We also see that the model has two output nodes: 'hidden_states', which gives us access to the pooled states of the last transformer layer, 'logits_age', which provides scores for age in a range of approximately 0...1 (== 100 years) and 'logits_gender', which expresses the confidence for being female, male or child." 76 | ] 77 | }, 78 | { 79 | "cell_type": "code", 80 | "execution_count": 2, 81 | "id": "f0b1a074", 82 | "metadata": { 83 | "scrolled": true 84 | }, 85 | "outputs": [ 86 | { 87 | "data": { 88 | "text/plain": [ 89 | "Input:\n", 90 | " signal:\n", 91 | " shape: [1, -1]\n", 92 | " dtype: tensor(float)\n", 93 | " transform: None\n", 94 | "Output:\n", 95 | " hidden_states:\n", 96 | " shape: [1, 1024]\n", 97 | " dtype: tensor(float)\n", 98 | " labels: [hidden_states-0, hidden_states-1, hidden_states-2, (...), hidden_states-1021,\n", 99 | " hidden_states-1022, hidden_states-1023]\n", 100 | " logits_age:\n", 101 | " shape: [1, 1]\n", 102 | " dtype: tensor(float)\n", 103 | " labels: [age]\n", 104 | " logits_gender:\n", 105 | " shape: [1, 3]\n", 106 | " dtype: tensor(float)\n", 107 | " labels: [female, male, child]" 108 | ] 109 | }, 110 | "execution_count": 2, 111 | "metadata": {}, 112 | "output_type": "execute_result" 113 | } 114 | ], 115 | "source": [ 116 | "import audonnx\n", 117 | "\n", 118 | "\n", 119 | "model = audonnx.load(model_root)\n", 120 | "model" 121 | ] 122 | }, 123 | { 124 | "cell_type": "markdown", 125 | "id": "573cf22f", 126 | "metadata": {}, 127 | "source": [ 128 | "As a test, we call the model with some white noise. Note that we have to force the data type of the signal to 32-bit floating point precision. As result we get a dictionary with predictions for every output node." 129 | ] 130 | }, 131 | { 132 | "cell_type": "code", 133 | "execution_count": 3, 134 | "id": "9ef10804", 135 | "metadata": {}, 136 | "outputs": [ 137 | { 138 | "data": { 139 | "text/plain": [ 140 | "{'hidden_states': array([[ 0.02783544, 0.01402022, 0.03839185, ..., 0.00786646,\n", 141 | " -0.09332313, 0.0915948 ]], dtype=float32),\n", 142 | " 'logits_age': array([[0.3961048]], dtype=float32),\n", 143 | " 'logits_gender': array([[ 0.32810774, -0.56528044, 0.0317882 ]], dtype=float32)}" 144 | ] 145 | }, 146 | "execution_count": 3, 147 | "metadata": {}, 148 | "output_type": "execute_result" 149 | } 150 | ], 151 | "source": [ 152 | "import numpy as np\n", 153 | "\n", 154 | "\n", 155 | "np.random.seed(0)\n", 156 | "\n", 157 | "sampling_rate = 16000\n", 158 | "signal = np.random.normal(\n", 159 | " size=sampling_rate,\n", 160 | ").astype(np.float32)\n", 161 | "\n", 162 | "model(signal, sampling_rate)" 163 | ] 164 | }, 165 | { 166 | "cell_type": "markdown", 167 | "id": "c016311c", 168 | "metadata": {}, 169 | "source": [ 170 | "## Predict age and gender" 171 | ] 172 | }, 173 | { 174 | "cell_type": "markdown", 175 | "id": "f17622eb", 176 | "metadata": {}, 177 | "source": [ 178 | "A more advanced way of interfacing the model is offered by [audinterface](https://github.com/audeering/audinterface). Especially, the class [Feature](https://audeering.github.io/audinterface/api.html#feature) comes in handy, as it has the option to assign names to the output dimensions. To create the interface, we simply pass our callable model object as processing function. Since we are only interested in the scores for age and gender, we pass 'logits_age' and 'logits_gender' as an additional key word argument to `outputs`. To concatenate the outputs we set `concat` to `True`. And we enable automatic resampling in case the expected sampling rate of the model is not matched." 179 | ] 180 | }, 181 | { 182 | "cell_type": "code", 183 | "execution_count": 4, 184 | "id": "877be883", 185 | "metadata": {}, 186 | "outputs": [], 187 | "source": [ 188 | "import audinterface\n", 189 | "\n", 190 | "\n", 191 | "outputs = ['logits_age', 'logits_gender']\n", 192 | "interface = audinterface.Feature(\n", 193 | " model.labels(outputs),\n", 194 | " process_func=model,\n", 195 | " process_func_args={\n", 196 | " 'outputs': outputs,\n", 197 | " 'concat': True,\n", 198 | " },\n", 199 | " sampling_rate=sampling_rate,\n", 200 | " resample=True, \n", 201 | " verbose=True,\n", 202 | ")" 203 | ] 204 | }, 205 | { 206 | "cell_type": "markdown", 207 | "id": "9ead873c", 208 | "metadata": {}, 209 | "source": [ 210 | "When we pass the signal to the interface, we get as result a table with proper column labels." 211 | ] 212 | }, 213 | { 214 | "cell_type": "code", 215 | "execution_count": 5, 216 | "id": "6f001a87", 217 | "metadata": { 218 | "scrolled": true 219 | }, 220 | "outputs": [ 221 | { 222 | "data": { 223 | "text/html": [ 224 | "
\n", 225 | "\n", 238 | "\n", 239 | " \n", 240 | " \n", 241 | " \n", 242 | " \n", 243 | " \n", 244 | " \n", 245 | " \n", 246 | " \n", 247 | " \n", 248 | " \n", 249 | " \n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | "
agefemalemalechild
startend
0 days0 days 00:00:010.3961050.328108-0.565280.031788
\n", 268 | "
" 269 | ], 270 | "text/plain": [ 271 | " age female male child\n", 272 | "start end \n", 273 | "0 days 0 days 00:00:01 0.396105 0.328108 -0.56528 0.031788" 274 | ] 275 | }, 276 | "execution_count": 5, 277 | "metadata": {}, 278 | "output_type": "execute_result" 279 | } 280 | ], 281 | "source": [ 282 | "interface.process_signal(signal, sampling_rate)" 283 | ] 284 | }, 285 | { 286 | "cell_type": "markdown", 287 | "id": "c411a9ff", 288 | "metadata": {}, 289 | "source": [ 290 | "## Evaluate model on emodb" 291 | ] 292 | }, 293 | { 294 | "cell_type": "markdown", 295 | "id": "68188d94", 296 | "metadata": {}, 297 | "source": [ 298 | "The Berlin Database of Emotional Speech ([Emo-DB](emodb.bilderbar.info)) is a well known speech databases with emotional utterances by different actors. It contains information on speaker age and gender, and expressions of emotional and non-emotional sentences in German. It will allow us to investigate if a) the model works on languages other than English b) it still works for affective speech. To get the database we use [audb](https://github.com/audeering/audb), a package to manage annotated media files. When we load the data, audb takes care of caching and converting the files to the desired format. Annotations are organized as tables in [audformat](https://github.com/audeering/audformat). In the following experiment we use columns with speaker information and emotional labels." 299 | ] 300 | }, 301 | { 302 | "cell_type": "code", 303 | "execution_count": 6, 304 | "id": "4ef6e326", 305 | "metadata": { 306 | "scrolled": true 307 | }, 308 | "outputs": [ 309 | { 310 | "name": "stdout", 311 | "output_type": "stream", 312 | "text": [ 313 | "Get: emodb v1.3.0\n", 314 | "Cache: /media/jwagner/Data/Git/how-to/w2v2-age-gender-how-to/cache/emodb/1.3.0/fe182b91\n" 315 | ] 316 | }, 317 | { 318 | "name": "stderr", 319 | "output_type": "stream", 320 | "text": [ 321 | " \r" 322 | ] 323 | }, 324 | { 325 | "data": { 326 | "text/html": [ 327 | "
\n", 328 | "\n", 341 | "\n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | "
agegenderemotion
file
wav/03a01Fa.wav31malehappiness
wav/03a01Nc.wav31maleneutral
wav/03a01Wa.wav31maleanger
wav/03a02Fc.wav31malehappiness
wav/03a02Nc.wav31maleneutral
............
wav/16b10Lb.wav31femaleboredom
wav/16b10Tb.wav31femalesadness
wav/16b10Td.wav31femalesadness
wav/16b10Wa.wav31femaleanger
wav/16b10Wb.wav31femaleanger
\n", 425 | "

535 rows × 3 columns

\n", 426 | "
" 427 | ], 428 | "text/plain": [ 429 | " age gender emotion\n", 430 | "file \n", 431 | "wav/03a01Fa.wav 31 male happiness\n", 432 | "wav/03a01Nc.wav 31 male neutral\n", 433 | "wav/03a01Wa.wav 31 male anger\n", 434 | "wav/03a02Fc.wav 31 male happiness\n", 435 | "wav/03a02Nc.wav 31 male neutral\n", 436 | "... ... ... ...\n", 437 | "wav/16b10Lb.wav 31 female boredom\n", 438 | "wav/16b10Tb.wav 31 female sadness\n", 439 | "wav/16b10Td.wav 31 female sadness\n", 440 | "wav/16b10Wa.wav 31 female anger\n", 441 | "wav/16b10Wb.wav 31 female anger\n", 442 | "\n", 443 | "[535 rows x 3 columns]" 444 | ] 445 | }, 446 | "execution_count": 6, 447 | "metadata": {}, 448 | "output_type": "execute_result" 449 | } 450 | ], 451 | "source": [ 452 | "import audb\n", 453 | "import audformat\n", 454 | "\n", 455 | "\n", 456 | "db = audb.load(\n", 457 | " 'emodb',\n", 458 | " version='1.3.0',\n", 459 | " format='wav',\n", 460 | " mixdown=True,\n", 461 | " sampling_rate=16000,\n", 462 | " full_path=False, \n", 463 | " cache_root=cache_root,\n", 464 | " verbose=True,\n", 465 | ")\n", 466 | "age = db['files']['speaker'].get(map='age')\n", 467 | "gender = db['files']['speaker'].get(map='gender')\n", 468 | "emotion = db['emotion']['emotion'].get()\n", 469 | "\n", 470 | "df = audformat.utils.concat([age, gender, emotion])\n", 471 | "df" 472 | ] 473 | }, 474 | { 475 | "cell_type": "markdown", 476 | "id": "04a2c177", 477 | "metadata": {}, 478 | "source": [ 479 | "The interface we created earlier offers us a convenient way to run the model directly on the index of a table. Note that we cache the feature once extracted to avoid re-calculation." 480 | ] 481 | }, 482 | { 483 | "cell_type": "code", 484 | "execution_count": 7, 485 | "id": "f7bca356", 486 | "metadata": {}, 487 | "outputs": [ 488 | { 489 | "data": { 490 | "text/html": [ 491 | "
\n", 492 | "\n", 505 | "\n", 506 | " \n", 507 | " \n", 508 | " \n", 509 | " \n", 510 | " \n", 511 | " \n", 512 | " \n", 513 | " \n", 514 | " \n", 515 | " \n", 516 | " \n", 517 | " \n", 518 | " \n", 519 | " \n", 520 | " \n", 521 | " \n", 522 | " \n", 523 | " \n", 524 | " \n", 525 | " \n", 526 | " \n", 527 | " \n", 528 | " \n", 529 | " \n", 530 | " \n", 531 | " \n", 532 | " \n", 533 | " \n", 534 | " \n", 535 | " \n", 536 | " \n", 537 | " \n", 538 | " \n", 539 | " \n", 540 | " \n", 541 | " \n", 542 | " \n", 543 | " \n", 544 | " \n", 545 | " \n", 546 | " \n", 547 | " \n", 548 | " \n", 549 | " \n", 550 | " \n", 551 | " \n", 552 | " \n", 553 | " \n", 554 | " \n", 555 | " \n", 556 | " \n", 557 | " \n", 558 | " \n", 559 | " \n", 560 | " \n", 561 | " \n", 562 | " \n", 563 | " \n", 564 | " \n", 565 | " \n", 566 | " \n", 567 | " \n", 568 | " \n", 569 | " \n", 570 | " \n", 571 | " \n", 572 | " \n", 573 | " \n", 574 | " \n", 575 | " \n", 576 | " \n", 577 | " \n", 578 | " \n", 579 | " \n", 580 | " \n", 581 | " \n", 582 | " \n", 583 | " \n", 584 | " \n", 585 | " \n", 586 | " \n", 587 | " \n", 588 | " \n", 589 | " \n", 590 | " \n", 591 | " \n", 592 | " \n", 593 | " \n", 594 | " \n", 595 | " \n", 596 | " \n", 597 | " \n", 598 | " \n", 599 | " \n", 600 | " \n", 601 | " \n", 602 | " \n", 603 | " \n", 604 | " \n", 605 | " \n", 606 | " \n", 607 | " \n", 608 | " \n", 609 | " \n", 610 | " \n", 611 | " \n", 612 | " \n", 613 | " \n", 614 | " \n", 615 | " \n", 616 | " \n", 617 | " \n", 618 | " \n", 619 | " \n", 620 | " \n", 621 | " \n", 622 | " \n", 623 | " \n", 624 | " \n", 625 | " \n", 626 | " \n", 627 | "
agefemalemalechild
filestartend
wav/03a01Fa.wav0 days0 days 00:00:01.8982500.4405411.4648814.078879-4.503115
wav/03a01Nc.wav0 days0 days 00:00:01.6112500.262211-1.3949646.082706-3.376553
wav/03a01Wa.wav0 days0 days 00:00:01.8778125000.4178280.1943855.651813-4.512995
wav/03a02Fc.wav0 days0 days 00:00:02.0062500.3111201.9071801.848307-3.264290
wav/03a02Nc.wav0 days0 days 00:00:01.4398125000.287216-1.3020276.188240-3.562538
.....................
wav/16b10Lb.wav0 days0 days 00:00:03.4426875000.3998406.157269-1.738880-4.453460
wav/16b10Tb.wav0 days0 days 00:00:03.5006250.3918745.663276-0.568825-4.939527
wav/16b10Td.wav0 days0 days 00:00:03.9341875000.3541475.773487-1.090130-4.626004
wav/16b10Wa.wav0 days0 days 00:00:02.4141250.4144064.1733812.015708-5.470536
wav/16b10Wb.wav0 days0 days 00:00:02.5224999990.3885603.8740071.189142-4.586453
\n", 628 | "

535 rows × 4 columns

\n", 629 | "
" 630 | ], 631 | "text/plain": [ 632 | " age female \\\n", 633 | "file start end \n", 634 | "wav/03a01Fa.wav 0 days 0 days 00:00:01.898250 0.440541 1.464881 \n", 635 | "wav/03a01Nc.wav 0 days 0 days 00:00:01.611250 0.262211 -1.394964 \n", 636 | "wav/03a01Wa.wav 0 days 0 days 00:00:01.877812500 0.417828 0.194385 \n", 637 | "wav/03a02Fc.wav 0 days 0 days 00:00:02.006250 0.311120 1.907180 \n", 638 | "wav/03a02Nc.wav 0 days 0 days 00:00:01.439812500 0.287216 -1.302027 \n", 639 | "... ... ... \n", 640 | "wav/16b10Lb.wav 0 days 0 days 00:00:03.442687500 0.399840 6.157269 \n", 641 | "wav/16b10Tb.wav 0 days 0 days 00:00:03.500625 0.391874 5.663276 \n", 642 | "wav/16b10Td.wav 0 days 0 days 00:00:03.934187500 0.354147 5.773487 \n", 643 | "wav/16b10Wa.wav 0 days 0 days 00:00:02.414125 0.414406 4.173381 \n", 644 | "wav/16b10Wb.wav 0 days 0 days 00:00:02.522499999 0.388560 3.874007 \n", 645 | "\n", 646 | " male child \n", 647 | "file start end \n", 648 | "wav/03a01Fa.wav 0 days 0 days 00:00:01.898250 4.078879 -4.503115 \n", 649 | "wav/03a01Nc.wav 0 days 0 days 00:00:01.611250 6.082706 -3.376553 \n", 650 | "wav/03a01Wa.wav 0 days 0 days 00:00:01.877812500 5.651813 -4.512995 \n", 651 | "wav/03a02Fc.wav 0 days 0 days 00:00:02.006250 1.848307 -3.264290 \n", 652 | "wav/03a02Nc.wav 0 days 0 days 00:00:01.439812500 6.188240 -3.562538 \n", 653 | "... ... ... \n", 654 | "wav/16b10Lb.wav 0 days 0 days 00:00:03.442687500 -1.738880 -4.453460 \n", 655 | "wav/16b10Tb.wav 0 days 0 days 00:00:03.500625 -0.568825 -4.939527 \n", 656 | "wav/16b10Td.wav 0 days 0 days 00:00:03.934187500 -1.090130 -4.626004 \n", 657 | "wav/16b10Wa.wav 0 days 0 days 00:00:02.414125 2.015708 -5.470536 \n", 658 | "wav/16b10Wb.wav 0 days 0 days 00:00:02.522499999 1.189142 -4.586453 \n", 659 | "\n", 660 | "[535 rows x 4 columns]" 661 | ] 662 | }, 663 | "execution_count": 7, 664 | "metadata": {}, 665 | "output_type": "execute_result" 666 | } 667 | ], 668 | "source": [ 669 | "pred = interface.process_index(\n", 670 | " df.index,\n", 671 | " root=db.root,\n", 672 | " cache_root=cache_root,\n", 673 | ")\n", 674 | "pred" 675 | ] 676 | }, 677 | { 678 | "cell_type": "markdown", 679 | "id": "c2e66316", 680 | "metadata": {}, 681 | "source": [ 682 | "We multiply the normalized age predictions by 100." 683 | ] 684 | }, 685 | { 686 | "cell_type": "code", 687 | "execution_count": 8, 688 | "id": "8333fb54", 689 | "metadata": {}, 690 | "outputs": [], 691 | "source": [ 692 | "pred_age = pred.age * 100" 693 | ] 694 | }, 695 | { 696 | "cell_type": "markdown", 697 | "id": "35609542", 698 | "metadata": {}, 699 | "source": [ 700 | "And determine the winning gender class." 701 | ] 702 | }, 703 | { 704 | "cell_type": "code", 705 | "execution_count": 9, 706 | "id": "6e750778", 707 | "metadata": {}, 708 | "outputs": [], 709 | "source": [ 710 | "pred_gender = pred.drop('age', axis=1).idxmax(axis=1)" 711 | ] 712 | }, 713 | { 714 | "cell_type": "markdown", 715 | "id": "e0781912", 716 | "metadata": {}, 717 | "source": [ 718 | "We measure age performance by means of Mean Absolute Error (MAE), which we calculate with [audmetric](https://github.com/audeering/audmetric). In addition, we show a distribution plot that we create with [audplot](https://github.com/audeering/audplot)." 719 | ] 720 | }, 721 | { 722 | "cell_type": "code", 723 | "execution_count": 10, 724 | "id": "45640e3b", 725 | "metadata": { 726 | "scrolled": false 727 | }, 728 | "outputs": [ 729 | { 730 | "data": { 731 | "text/plain": [ 732 | "8.348510439150802" 733 | ] 734 | }, 735 | "execution_count": 10, 736 | "metadata": {}, 737 | "output_type": "execute_result" 738 | }, 739 | { 740 | "data": { 741 | "image/png": "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GxuBjssgHKmI6jMjIiJyOLvdTnp6um/BwsTExD7ty2Kapm9RSPWZ6SgY5WOaJo2NjZSXl5Oent7pSKYjoWRGREQiXl5eHkBIVmA2TRO3243dblcy04lglk96errv/7Y3lMyIiEjEMwyD/Px8cnJycLlcfXotj8dDaWkp+fn5UTHaK9SCVT6xsbG9rpHxUjIjIiJRw263B+0XYFe8c5/Ex8crmelEJJZPZEQhIiIi0kNKZkRERCSqKZkRERGRqKZkRkRERKKakhkRERGJakpmREREJKopmREREZGopmRGREREopqSGREREYlqSmZEREQkqimZERERkaimZEZERESimpIZERERiWpKZkRERCSqKZkRERGRqKZkRkRERKKakhkRERGJakpmREREJKopmREREZGopmRGREREopqSGREREYlqSmZEREQkqimZERERkaimZEZERESimpIZERERiWox4Q5ARCLfn5Zt6faYG08fG4JIREQ6Us2MiIiIRDUlMyIiIhLVlMyIiIhIVFMyIyIiIlFNyYyIiIhENSUzIiIiEtUiJpm54447MAyDBQsW+PaVlZXxgx/8gLy8PJKSkjjmmGN44YUXwhekiIiIRJyISGY+++wzHnroIaZOndpu/+WXX87mzZt55ZVX2LBhAxdeeCEXX3wxa9euDVOkIiIiEmnCnszU19dz6aWX8re//Y2MjIx2z3344Ydcf/31HHfccYwcOZJf/epXpKens2bNmjBFKyIiIpEm7DMAz58/n3PPPZfTTjuN3//+9+2eO/7443n22Wc599xzSU9P57nnnqO5uZlTTjmly/M5nU6cTqfvcW1tLQAejwePx9Mn76EnvPFEUkyRROXTDdM8uPkRtPLr5jpBvVYQ6P7xT+Xjn8rHv1CWj80WWJ1LWJOZZ555hs8//5zPPvus0+efe+45LrnkEjIzM4mJiSExMZGXXnqJ0aNHd3nOxYsXc9ttt3XYX1JSQkpKStBi7y3TNKmqqsIwDAzDCHc4EUfl41+Ku4Z4TxNggJ/iKS4uDtL1qrs9JljXCgbdP/6pfPxT+fgXyvIZPnx4QMeFLZkpKSnhhhtuYNmyZcTHx3d6zK9//Wuqq6t5++23ycrK4uWXX+biiy/m/fffZ8qUKZ2+ZtGiRSxcuND3uLa2loKCAgoKCkhNTe2T99ITHo8H0zQpKCgIOPMcSFQ+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\n", 742 | "text/plain": [ 743 | "
" 744 | ] 745 | }, 746 | "metadata": {}, 747 | "output_type": "display_data" 748 | } 749 | ], 750 | "source": [ 751 | "import audmetric\n", 752 | "import audplot\n", 753 | "\n", 754 | "\n", 755 | "audplot.distribution(age, pred_age)\n", 756 | "audmetric.mean_absolute_error( \n", 757 | " age,\n", 758 | " pred_age,\n", 759 | ")" 760 | ] 761 | }, 762 | { 763 | "cell_type": "markdown", 764 | "id": "d747718a", 765 | "metadata": {}, 766 | "source": [ 767 | "A mean average error of about 8 years is within the range we see for the datasets in the paper (tba). From the distribution we see that some of the samples are predicted too old.\n", 768 | "\n", 769 | "To evaluate our gender predictions we calculate Unweighted Average Recall (UAR) and show a confusion matrix." 770 | ] 771 | }, 772 | { 773 | "cell_type": "code", 774 | "execution_count": 11, 775 | "id": "7978496c", 776 | "metadata": { 777 | "scrolled": false 778 | }, 779 | "outputs": [ 780 | { 781 | "data": { 782 | "text/plain": [ 783 | "96.04496489781997" 784 | ] 785 | }, 786 | "execution_count": 11, 787 | "metadata": {}, 788 | "output_type": "execute_result" 789 | }, 790 | { 791 | "data": { 792 | "image/png": "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7L6WoAixAneYd99911qpUiWr1Wq1JicnW93c3Kw///yz3TJ9+/a1du/e3Wq1Wq1r1661SrKuWrXKNj8yMtIqyRodHW2b9uyzz1offPDBWz7v+fPnrZKsv/32m9VqtVqPHz9ulWTdvXu31Wq1WsePH29t3bq13TqnTp2ySrIePnzYeH8BWK3NmjWzNmnSxPY4LS3NWqJECWuvXr1s02JjY62SrFu2bMlyGwMHDrQ+9thjtse9e/e2tm/f3mq1Zu+1BEUP10Thjnb06FElJSXpgQcesJuempqq0NBQu2l16tSxfe/v7y83NzdVqVLFbtq2bdtsj6OiojR69Ght3bpV8fHxtiNQMTExCgkJyTSWvXv3au3atXJ3d880Lzo6WjVq1DDbSQCS7H+HHR0d5evrq9q1a9um+fv7S5LOnTsnSZo+fbo++ugjxcTE6Pr160pNTVW9evWy3PbtvJag6CCicEdLTEyUJC1btkzlypWzm/fXz8lydna2fW+xWOwe/zHtf0/VtWvXTpUqVdKcOXNUtmxZZWRkKCQkRKmpqbccS7t27TR58uRM8wICAm5vxwBkktXv7F9/r6Wb1zYtWrRIw4cP19tvv62wsDB5eHjozTff1NatW7Pc9u28lqDoIKJwRwsODparq6tiYmLUrFmzHNtuQkKCDh8+rDlz5qhp06aSpE2bNv3tOvXr19dXX32lypUry8mJX00gP23evFnh4eEaMGCAbdrfvTEkt15LULDxSo07moeHh4YPH66hQ4cqIyNDTZo00eXLl7V582aVLFlSvXv3Ntqut7e3fH19NXv2bAUEBCgmJkYvv/zy364zcOBAzZkzR927d9dLL70kHx8fHT16VIsWLdLcuXPl6OhoNBYAt6969epauHChVq5cqcDAQH388cfavn27AgMDs1w+t15LULARUbjjjR8/Xn5+foqMjNSxY8fk5eWl+vXr65VXXjHepoODgxYtWqQhQ4YoJCREQUFBmjZtmpo3b37LdcqWLavNmzdrxIgRat26tVJSUlSpUiW1adNGDg68kRbIS88++6x2796txx9/XBaLRd27d9eAAQNst0DISm68lqBgs1itVmt+DwIAAKCw4c9bAAAAA0QUAACAASIKAADAABEFAABggIgCAAAwQEQBAAAYIKIAAAAMEFEAAAAGiCgAuIWIiAh16NDB9rh58+Z64YUX/tE2c2IbAAoGIgpAoRMRESGLxSKLxSIXFxdVq1ZN48aNU1paWq4+79dff63x48dna9l169bJYrHo0qVLxtsAULDx2XkACqU2bdpo3rx5SklJ0fLlyzVw4EA5Oztr5MiRdsulpqbKxcUlR57Tx8enQGwDQMHAkSgAhZKrq6vKlCmjSpUqqX///mrVqpW+++472ym4iRMnqmzZsgoKCpIknTp1Sl27dpWXl5d8fHzUvn17nThxwra99PR0DRs2TF5eXvL19dVLL72kv3606F9PxaWkpGjEiBGqUKGCXF1dVa1aNX344Yc6ceKEWrRoIUny9vaWxWJRREREltu4ePGinnzySXl7e8vNzU0PPfSQoqKibPPnz58vLy8vrVy5UrVq1ZK7u7vatGmj2NjYnP2BArhtRBSAIqF48eJKTU2VJK1evVqHDx/WTz/9pKVLl+rGjRt68MEH5eHhoY0bN2rz5s22GPljnbffflvz58/XRx99pE2bNunChQv65ptv/vY5n3zySf3nP//RtGnTdPDgQc2aNUvu7u6qUKGCvvrqK0nS4cOHFRsbq6lTp2a5jYiICO3YsUPfffedtmzZIqvVqocfflg3btywLZOUlKS33npLH3/8sTZs2KCYmBgNHz48J35sAP4BTucBKNSsVqtWr16tlStXavDgwTp//rxKlCihuXPn2k7jffLJJ8rIyNDcuXNlsVgkSfPmzZOXl5fWrVun1q1ba8qUKRo5cqQ6deokSZo5c6ZWrlx5y+c9cuSIFi9erJ9++kmtWrWSJFWpUsU2/4/TdqVLl5aXl1eW24iKitJ3332nzZs3Kzw8XJL06aefqkKFClqyZIm6dOkiSbpx44ZmzpypqlWrSpIGDRqkcePGmf7IAOQQIgpAobR06VK5u7vrxo0bysjIUI8ePTRmzBgNHDhQtWvXtrsOau/evTp69Kg8PDzstpGcnKzo6GhdvnxZsbGxatiwoW2ek5OT7r777kyn9P6wZ88eOTo6qlmzZsb7cPDgQTk5Odk9r6+vr4KCgnTw4EHbNDc3N1tASVJAQIDOnTtn/LwAcgYRBaBQatGihWbMmCEXFxeVLVtWTk5/vpyVKFHCbtnExEQ1aNBAn376aabt+Pn5GT1/8eLFjdYz4ezsbPfYYrHcMu4A5B2uiQJQKJUoUULVqlVTxYoV7QIqK/Xr11dUVJRKly6tatWq2X15enrK09NTAQEB2rp1q22dtLQ07dy585bbrF27tjIyMrR+/fos5/9xJCw9Pf2W26hVq5bS0tLsnjchIUGHDx9WcHDw3+4TgPxHRAEo8p544gmVKlVK7du318aNG3X8+HGtW7dOQ4YM0enTpyVJzz//vF5//XUtWbJEhw4d0oABAzLd4+l/Va5cWb1799ZTTz2lJUuW2La5ePFiSVKlSpVksVi0dOlSnT9/XomJiZm2Ub16dbVv3179+vXTpk2btHfvXvXs2VPlypVT+/btc+VnASDnEFEAijw3Nzdt2LBBFStWVKdOnVSrVi317dtXycnJKlmypCTpxRdfVK9evdS7d2+FhYXJw8NDHTt2/NvtzpgxQ507d9aAAQNUs2ZN9evXT9euXZMklStXTmPHjtXLL78sf39/DRo0KMttzJs3Tw0aNFDbtm0VFhYmq9Wq5cuXZzqFB6DgsVg5sQ4AAHDbOBIFAABggIgCAAAwQEQBAAAYIKIAAAAMEFEAAAAGiCgAAAADRBQAAIABIgoAAMAAEQUAAGCAiAIAADBARAEAABj4P5ImpIzylX5yAAAAAElFTkSuQmCC\n", 793 | "text/plain": [ 794 | "
" 795 | ] 796 | }, 797 | "metadata": {}, 798 | "output_type": "display_data" 799 | } 800 | ], 801 | "source": [ 802 | "audplot.confusion_matrix(\n", 803 | " gender, \n", 804 | " pred_gender,\n", 805 | " percentage=True,\n", 806 | " show_both=True,\n", 807 | ")\n", 808 | "audmetric.unweighted_average_recall(\n", 809 | " gender, \n", 810 | " pred_gender,\n", 811 | ") * 100" 812 | ] 813 | }, 814 | { 815 | "cell_type": "markdown", 816 | "id": "830ec788", 817 | "metadata": {}, 818 | "source": [ 819 | "The confusion matrix tells us that almost all male samples are correctly labeled, but some of the female samples are mis-classified. A likely assumption is that the model has mainly issues with the affective speech. To prove this, we repeat the evaluation on the neutral samples." 820 | ] 821 | }, 822 | { 823 | "cell_type": "code", 824 | "execution_count": 12, 825 | "id": "25a7b833", 826 | "metadata": { 827 | "scrolled": false 828 | }, 829 | "outputs": [ 830 | { 831 | "data": { 832 | "text/plain": [ 833 | "5.940903651563427" 834 | ] 835 | }, 836 | "execution_count": 12, 837 | "metadata": {}, 838 | "output_type": "execute_result" 839 | }, 840 | { 841 | "data": { 842 | "image/png": "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\n", 843 | "text/plain": [ 844 | "
" 845 | ] 846 | }, 847 | "metadata": {}, 848 | "output_type": "display_data" 849 | } 850 | ], 851 | "source": [ 852 | "mask = (emotion == 'neutral').values\n", 853 | "\n", 854 | "audplot.distribution(age[mask], pred_age[mask])\n", 855 | "audmetric.mean_absolute_error( \n", 856 | " age[mask],\n", 857 | " pred_age[mask],\n", 858 | ")" 859 | ] 860 | }, 861 | { 862 | "cell_type": "markdown", 863 | "id": "4f595ad0", 864 | "metadata": {}, 865 | "source": [ 866 | "And indeed, the error of the age prediction decreases by 2 years. And we get a perfect prediction of gender." 867 | ] 868 | }, 869 | { 870 | "cell_type": "code", 871 | "execution_count": 13, 872 | "id": "1f3375bb", 873 | "metadata": { 874 | "scrolled": false 875 | }, 876 | "outputs": [ 877 | { 878 | "data": { 879 | "text/plain": [ 880 | "100.0" 881 | ] 882 | }, 883 | "execution_count": 13, 884 | "metadata": {}, 885 | "output_type": "execute_result" 886 | }, 887 | { 888 | "data": { 889 | "image/png": "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5O7ubutLSUlRZGSkqlWrlukFAgAA5ETpDlE7d+6UdPtK1N69e+Xi4mLrc3FxUdWqVTVgwIDMrxAAACAHSneI+uMTet26ddPEiRPl5eWVZUUBAADkdBn+2peZM2dmRR0AAAC5SoZDVOPGje/bv2rVKuNiAAAAcosMh6iqVavabd+8eVO7du3Svn371LVr10wr7GFwYevk7C4BQBbxeaJ3dpcAIItc35m+f78zHKLGjx+fZvu7776rK1euZHQ6AACAXCnD60TdS+fOnfX5559n1nQAAAA5WqaFqM2bN7PYJgAAeGRk+HZemzZt7LatVqtiY2O1bds2DRs2LNMKAwAAyMkyHKK8vb3tth0cHFSuXDmNHDlSwcHBmVYYAABATpahEJWSkqJu3bqpcuXK8vHxyaqaAAAAcrwMPRPl6Oio4OBgXbx4MYvKAQAAyB0y/GB5pUqVdPTo0ayoBQAAINfIcIh67733NGDAAC1evFixsbFKTEy0+wEAAHgUWKxWqzU9A0eOHKm33npLnp6ed3a2WGx/t1qtslgsSklJyfwqc6mkW9ldAYCsworlwMMrvSuWpztEOTo6KjY2VgcPHrzvuAYNGqTrwI8CQhTw8CJEAQ+vTP/alz+yFiEJAAAgg89E/fn2HQAAwKMsQ+tElS1b9m+D1Pnz5/+nggAAAHKDDIWoESNG3LViOQAAwKMoQyHqxRdfVMGCBbOqFgAAgFwj3c9E8TwUAADAHekOUelcCQEAAOCRkO7beampqVlZBwAAQK6S4a99AQAAACEKAADACCEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEKAADAACEK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wIDMeNkA/A+4nQcgV7NarVq5cqWWL1+uPn36KC4uTnnz5tWMGTNst/G++uorpaamasaMGbJYLJKkmTNnKl++fFqzZo2Cg4M1YcIEDRkyRG3atJEkRUREaPny5fc87q+//qq5c+fq559/1jPPPCNJKlmypK3/j9t2BQsWVL58+dKc48iRI1q0aJE2btyoOnXqSJK+/vprFS1aVAsXLlT79u0lSTdv3lRERIRKlSolSerdu7dGjhxp+pIByCSEKAC50uLFi+Xh4aGbN28qNTVVnTp10rvvvqvQ0FBVrlzZ7jmo3bt3KyoqSp6ennZzJCUlKTo6WpcuXVJsbKxq1apl63NyctLjjz9+1y29P+zatUuOjo5q0KCB8TkcPHhQTk5Odsf18/NTuXLldPDgQVubu7u7LUBJUkBAgM6dO2d8XACZgxAFIFdq1KiRPv30U7m4uKhQoUJycrrzdpY3b167sVeuXFHNmjX19ddf3zVPgQIFjI7v5uZmtJ8JZ2dnu22LxXLPcAfgweGZKAC5Ut68eVW6dGkFBgbaBai01KhRQ0eOHFHBggVVunRpux9vb295e3srICBAkZGRtn1u3bql7du333POypUrKzU1VWvXrk2z/48rYSkpKfeco0KFCrp165bdcRMSEnT48GEFBQXd95wAZD9CFICH3ksvvaT8+fOrZcuWWr9+vY4dO6Y1a9aob9++OnnypCTpjTfe0Pvvv6+FCxfq0KFD6tWr111rPP1Z8eLF1bVrV73yyitauHChbc65c+dKkooVKyaLxaLFixcrLi5OV65cuWuOMmXKqGXLlnrttde0YcMG7d69W507d1bhwoXVsmXLLHktAGQeQhSAh567u7vWrVunwMBAtWnTRhUqVFD37t2VlJQkLy8vSdJbb72lLl26qGvXrqpdu7Y8PT3VunXr+8776aefql27durVq5fKly+v1157TVevXpUkFS5cWCNGjNDgwYPl7++v3r17pznHzJkzVbNmTTVv3ly1a9eW1WrVTz/9dNctPAA5j8XKjXUAAIAM40oUAACAAUIUAACAAUIUAACAAUIUAACAAUIUAACAAUIUAACAAUIUAACAAUIUAACAAUIUAACAAUIUAACAAUIUAACAgf8HdIr+bAjkm3EAAAAASUVORK5CYII=\n", 890 | "text/plain": [ 891 | "
" 892 | ] 893 | }, 894 | "metadata": {}, 895 | "output_type": "display_data" 896 | } 897 | ], 898 | "source": [ 899 | "audplot.confusion_matrix(\n", 900 | " gender[mask], \n", 901 | " pred_gender[mask],\n", 902 | " percentage=True,\n", 903 | " show_both=True,\n", 904 | ")\n", 905 | "audmetric.unweighted_average_recall(\n", 906 | " gender[mask], \n", 907 | " pred_gender[mask],\n", 908 | ") * 100" 909 | ] 910 | } 911 | ], 912 | "metadata": { 913 | "kernelspec": { 914 | "display_name": "Python 3 (ipykernel)", 915 | "language": "python", 916 | "name": "python3" 917 | }, 918 | "language_info": { 919 | "codemirror_mode": { 920 | "name": "ipython", 921 | "version": 3 922 | }, 923 | "file_extension": ".py", 924 | "mimetype": "text/x-python", 925 | "name": "python", 926 | "nbconvert_exporter": "python", 927 | "pygments_lexer": "ipython3", 928 | "version": "3.8.16" 929 | }, 930 | "toc": { 931 | "base_numbering": 1, 932 | "nav_menu": {}, 933 | "number_sections": true, 934 | "sideBar": true, 935 | "skip_h1_title": false, 936 | "title_cell": "Table of Contents", 937 | "title_sidebar": "Contents", 938 | "toc_cell": false, 939 | "toc_position": {}, 940 | "toc_section_display": true, 941 | "toc_window_display": false 942 | } 943 | }, 944 | "nbformat": 4, 945 | "nbformat_minor": 5 946 | } 947 | --------------------------------------------------------------------------------