├── 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 | " age \n",
244 | " female \n",
245 | " male \n",
246 | " child \n",
247 | " \n",
248 | " \n",
249 | " start \n",
250 | " end \n",
251 | " \n",
252 | " \n",
253 | " \n",
254 | " \n",
255 | " \n",
256 | " \n",
257 | " \n",
258 | " \n",
259 | " 0 days \n",
260 | " 0 days 00:00:01 \n",
261 | " 0.396105 \n",
262 | " 0.328108 \n",
263 | " -0.56528 \n",
264 | " 0.031788 \n",
265 | " \n",
266 | " \n",
267 | "
\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 | " age \n",
346 | " gender \n",
347 | " emotion \n",
348 | " \n",
349 | " \n",
350 | " file \n",
351 | " \n",
352 | " \n",
353 | " \n",
354 | " \n",
355 | " \n",
356 | " \n",
357 | " \n",
358 | " wav/03a01Fa.wav \n",
359 | " 31 \n",
360 | " male \n",
361 | " happiness \n",
362 | " \n",
363 | " \n",
364 | " wav/03a01Nc.wav \n",
365 | " 31 \n",
366 | " male \n",
367 | " neutral \n",
368 | " \n",
369 | " \n",
370 | " wav/03a01Wa.wav \n",
371 | " 31 \n",
372 | " male \n",
373 | " anger \n",
374 | " \n",
375 | " \n",
376 | " wav/03a02Fc.wav \n",
377 | " 31 \n",
378 | " male \n",
379 | " happiness \n",
380 | " \n",
381 | " \n",
382 | " wav/03a02Nc.wav \n",
383 | " 31 \n",
384 | " male \n",
385 | " neutral \n",
386 | " \n",
387 | " \n",
388 | " ... \n",
389 | " ... \n",
390 | " ... \n",
391 | " ... \n",
392 | " \n",
393 | " \n",
394 | " wav/16b10Lb.wav \n",
395 | " 31 \n",
396 | " female \n",
397 | " boredom \n",
398 | " \n",
399 | " \n",
400 | " wav/16b10Tb.wav \n",
401 | " 31 \n",
402 | " female \n",
403 | " sadness \n",
404 | " \n",
405 | " \n",
406 | " wav/16b10Td.wav \n",
407 | " 31 \n",
408 | " female \n",
409 | " sadness \n",
410 | " \n",
411 | " \n",
412 | " wav/16b10Wa.wav \n",
413 | " 31 \n",
414 | " female \n",
415 | " anger \n",
416 | " \n",
417 | " \n",
418 | " wav/16b10Wb.wav \n",
419 | " 31 \n",
420 | " female \n",
421 | " anger \n",
422 | " \n",
423 | " \n",
424 | "
\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 | " age \n",
512 | " female \n",
513 | " male \n",
514 | " child \n",
515 | " \n",
516 | " \n",
517 | " file \n",
518 | " start \n",
519 | " end \n",
520 | " \n",
521 | " \n",
522 | " \n",
523 | " \n",
524 | " \n",
525 | " \n",
526 | " \n",
527 | " \n",
528 | " wav/03a01Fa.wav \n",
529 | " 0 days \n",
530 | " 0 days 00:00:01.898250 \n",
531 | " 0.440541 \n",
532 | " 1.464881 \n",
533 | " 4.078879 \n",
534 | " -4.503115 \n",
535 | " \n",
536 | " \n",
537 | " wav/03a01Nc.wav \n",
538 | " 0 days \n",
539 | " 0 days 00:00:01.611250 \n",
540 | " 0.262211 \n",
541 | " -1.394964 \n",
542 | " 6.082706 \n",
543 | " -3.376553 \n",
544 | " \n",
545 | " \n",
546 | " wav/03a01Wa.wav \n",
547 | " 0 days \n",
548 | " 0 days 00:00:01.877812500 \n",
549 | " 0.417828 \n",
550 | " 0.194385 \n",
551 | " 5.651813 \n",
552 | " -4.512995 \n",
553 | " \n",
554 | " \n",
555 | " wav/03a02Fc.wav \n",
556 | " 0 days \n",
557 | " 0 days 00:00:02.006250 \n",
558 | " 0.311120 \n",
559 | " 1.907180 \n",
560 | " 1.848307 \n",
561 | " -3.264290 \n",
562 | " \n",
563 | " \n",
564 | " wav/03a02Nc.wav \n",
565 | " 0 days \n",
566 | " 0 days 00:00:01.439812500 \n",
567 | " 0.287216 \n",
568 | " -1.302027 \n",
569 | " 6.188240 \n",
570 | " -3.562538 \n",
571 | " \n",
572 | " \n",
573 | " ... \n",
574 | " ... \n",
575 | " ... \n",
576 | " ... \n",
577 | " ... \n",
578 | " ... \n",
579 | " ... \n",
580 | " \n",
581 | " \n",
582 | " wav/16b10Lb.wav \n",
583 | " 0 days \n",
584 | " 0 days 00:00:03.442687500 \n",
585 | " 0.399840 \n",
586 | " 6.157269 \n",
587 | " -1.738880 \n",
588 | " -4.453460 \n",
589 | " \n",
590 | " \n",
591 | " wav/16b10Tb.wav \n",
592 | " 0 days \n",
593 | " 0 days 00:00:03.500625 \n",
594 | " 0.391874 \n",
595 | " 5.663276 \n",
596 | " -0.568825 \n",
597 | " -4.939527 \n",
598 | " \n",
599 | " \n",
600 | " wav/16b10Td.wav \n",
601 | " 0 days \n",
602 | " 0 days 00:00:03.934187500 \n",
603 | " 0.354147 \n",
604 | " 5.773487 \n",
605 | " -1.090130 \n",
606 | " -4.626004 \n",
607 | " \n",
608 | " \n",
609 | " wav/16b10Wa.wav \n",
610 | " 0 days \n",
611 | " 0 days 00:00:02.414125 \n",
612 | " 0.414406 \n",
613 | " 4.173381 \n",
614 | " 2.015708 \n",
615 | " -5.470536 \n",
616 | " \n",
617 | " \n",
618 | " wav/16b10Wb.wav \n",
619 | " 0 days \n",
620 | " 0 days 00:00:02.522499999 \n",
621 | " 0.388560 \n",
622 | " 3.874007 \n",
623 | " 1.189142 \n",
624 | " -4.586453 \n",
625 | " \n",
626 | " \n",
627 | "
\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 |
--------------------------------------------------------------------------------