Files
pyannote-audio-legacy/tutorials/adapting_pretrained_pipeline.ipynb
2024-02-25 20:37:47 +01:00

745 lines
65 KiB
Plaintext

{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"colab_type": "text",
"id": "view-in-github"
},
"source": [
"<a href=\"https://colab.research.google.com/github/pyannote/pyannote-audio/blob/develop/tutorials/adapting_pretrained_pipeline.ipynb\" target=\"_parent\"><img src=\"https://colab.research.google.com/assets/colab-badge.svg\" alt=\"Open In Colab\"/></a>"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "npzkG4poB2BH"
},
"source": [
"# Adapting pyannote.audio 2.1 pretrained speaker diarization pipeline to your own data\n",
"\n",
"> \"How I reached 1st place at Ego4D 2022, 1st place at Albayzin 2022, and 6th place at VoxSRC 2022 speaker diarization challenges\"\n",
"\n",
"[pyannote.audio](https://github.com/pyannote/pyannote-audio) is an open-source toolkit written in Python for speaker diarization. \n",
"\n",
"Version 2.1 introduces a major overhaul of the default speaker diarization pipeline, made of three main stages: speaker segmentation applied to a short sliding window, neural speaker embedding of each (local) speakers, and (global) agglomerative clustering.\n",
"\n",
"Despite its decent out-of-the-box performance, the default pipeline may suffer from the domain mismatch problem (common to most machine learning models) and not perform well on your own data. This tutorial will guide you through two recipes to adapt it to your own data and (hopefully) get better performance. Depending on the number and duration of labeled conversations, you may either focus on optimizing hyper-parameters or additionally fine-tune the internal speaker segmentation model."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "pnaQ4JSLF8Ms"
},
"source": [
"⚠ Make sure that you switch to a GPU runtime (Runtime > Change runtime type). \n",
"If you don't, everything will be extremely slow."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "CZjbjOBBDrdm"
},
"source": [
"## Installation\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "_kYxY82Jzz3s"
},
"outputs": [],
"source": [
"!pip install -qq pyannote.audio==2.1.1\n",
"!pip install -qq rich"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "ndQ10VIf2W1c"
},
"source": [
"⚠ Restart the runtime (Runtime > Restart session). \n",
"If you don't, `pyannote.database` will throw an error below."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "lz-b8j6RD7H6"
},
"source": [
"## Data preparation\n",
"\n",
"First things first: we need data... Annotated data! Ideally, lots of annotated data! \n",
"\n",
"For the purpose of this tutorial, we will rely on the AMI-SDM (single distance microphone) corpus. \n"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "uSQVKFDC0cOe"
},
"outputs": [],
"source": [
"# download AMI-SDM mini corpus\n",
"%cd /content/\n",
"!git clone https://github.com/pyannote/AMI-diarization-setup\n",
"%cd /content/AMI-diarization-setup/pyannote/\n",
"!bash download_ami_sdm_mini.sh"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "wTKkOeMr2QUL",
"outputId": "d9cc39fd-4cc2-44fe-a922-533370221d31"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\u001b[92m\u001b[1m\u001b[4mtrain\u001b[0m\n",
" 28 files\n",
" 8h46m annotated\n",
" 6h11m of speech (71%)\n",
" 112 speakers\n",
"\u001b[92m\u001b[1m\u001b[4mdevelopment\u001b[0m\n",
" 3 files\n",
" 0h56m annotated\n",
" 0h40m of speech (72%)\n",
" 12 speakers\n",
"\u001b[92m\u001b[1m\u001b[4mtest\u001b[0m\n",
" 3 files\n",
" 0h56m annotated\n",
" 0h39m of speech (70%)\n",
" 12 speakers\n"
]
}
],
"source": [
"!PYANNOTE_DATABASE_CONFIG=\"/content/AMI-diarization-setup/pyannote/database.yml\" pyannote-database info AMI-SDM.SpeakerDiarization.mini"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "09LrQFIfp0zC"
},
"source": [
"Note that we use a \"mini\" version of AMI-SDM so that the tutorial can be run in half an hour but the full version is also available for you to get better results. \n",
"\n",
"If you want to try it, replace `download_ami_sdm_mini.sh` by `download_ami_sdm.sh` and `AMI-SDM.SpeakerDiarization.mini` by `AMI-SDM.SpeakerDiarization.only_words` and you are good to go! "
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"id": "l6V8Exw41XBp"
},
"outputs": [],
"source": [
"from pyannote.database import registry, FileFinder\n",
"\n",
"registry.load_database(\"AMI-diarization-setup/pyannote/database.yml\")\n",
"dataset = registry.get_protocol(\"AMI-SDM.SpeakerDiarization.mini\", {\"audio\": FileFinder()})"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "HivpZEgZEVAu"
},
"source": [
"## Pretrained pipeline\n",
"\n",
"Let's start by running the pretrained pipeline on the test set and evaluate its performance.\n",
"\n",
"Official [pyannote.audio](https://github.com/pyannote/pyannote-audio) pipelines (i.e. those under the [`pyannote` organization](https://hf.co/pyannote) umbrella) are open-source, but gated. It means that you have to first accept users conditions on their respective Huggingface page to access the pretrained weights and hyper-parameters. \n",
"\n",
"To load the speaker diarization pipeline used in this tutorial, you have to \n",
"* visit [hf.co/pyannote/speaker-diarization](https://hf.co/pyannote/speaker-diarization) and accept the terms\n",
"* visit [hf.co/pyannote/segmentation](https://hf.co/pyannote/segmentation) (used internally by the speaker diarization pipeline)and accept the terms\n",
"* log in using `notebook_login`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "FbXEQUGXscTQ"
},
"outputs": [],
"source": [
"from huggingface_hub import notebook_login\n",
"notebook_login()"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"id": "l7eN_Y792Cxt"
},
"outputs": [],
"source": [
"from pyannote.audio import Pipeline\n",
"pretrained_pipeline = Pipeline.from_pretrained(\"pyannote/speaker-diarization\", use_auth_token=True) "
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "lDIIp7iaICUC",
"outputId": "b4880a85-692b-470d-f133-d95128bdecd9"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The pretrained pipeline reaches a Diarization Error Rate (DER) of 32.5% on AMI-SDM.SpeakerDiarization.mini test set.\n"
]
}
],
"source": [
"# this takes approximately 2min to run on Google Colab GPU\n",
"from pyannote.metrics.diarization import DiarizationErrorRate\n",
"metric = DiarizationErrorRate()\n",
"\n",
"for file in dataset.test():\n",
" # apply pretrained pipeline\n",
" file[\"pretrained pipeline\"] = pretrained_pipeline(file)\n",
"\n",
" # evaluate its performance\n",
" metric(file[\"annotation\"], file[\"pretrained pipeline\"], uem=file[\"annotated\"])\n",
"\n",
"print(f\"The pretrained pipeline reaches a Diarization Error Rate (DER) of {100 * abs(metric):.1f}% on {dataset.name} test set.\")"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 147
},
"id": "r4UydYQkKsxW",
"outputId": "7069d8e5-7dc7-4701-bcd5-1663998cfd1d"
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<pyannote.core.annotation.Annotation at 0x7f51bdcefb50>"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"file[\"annotation\"]"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 147
},
"id": "s4C7xMQlKwVX",
"outputId": "930c571f-069b-44ad-f87e-ce8d471176a6"
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<pyannote.core.annotation.Annotation at 0x7f51bdbad1c0>"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"file[\"pretrained pipeline\"]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "qrYuCLLUKALA"
},
"source": [
"## Fine-tuning the segmentation model\n",
"\n",
"When a sufficiently large training set of labeled conversations is available, fine-tuning the internal speaker segmentation model may lead to significant performance boost. \n",
"\n",
"Starting from the pretrained model..."
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {
"id": "jeUDgr4f55v6"
},
"outputs": [],
"source": [
"from pyannote.audio import Model\n",
"model = Model.from_pretrained(\"pyannote/segmentation\", use_auth_token=True)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "SAyCf7ontua_"
},
"source": [
"... we prepare it for fine-tuning on the training dataset:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "Kk_a7ABQ6PPH"
},
"outputs": [],
"source": [
"from pyannote.audio.tasks import Segmentation\n",
"task = Segmentation(\n",
" dataset, \n",
" duration=model.specifications.duration, \n",
" max_num_speakers=len(model.specifications.classes), \n",
" batch_size=32,\n",
" num_workers=2, \n",
" loss=\"bce\", \n",
" vad_loss=\"bce\")\n",
"model.task = task\n",
"model.prepare_data()\n",
"model.setup()"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "TgobhVTKt9sH"
},
"source": [
"The actual training is done with [`lightning`](https://github.com/Lightning-AI/lightning):"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "f_bVYrNo6TmI"
},
"outputs": [],
"source": [
"# this takes approximately 15min to run on Google Colab GPU\n",
"from types import MethodType\n",
"from torch.optim import Adam\n",
"from pytorch_lightning.callbacks import (\n",
" EarlyStopping,\n",
" ModelCheckpoint,\n",
" RichProgressBar,\n",
")\n",
"\n",
"# we use Adam optimizer with 1e-4 learning rate\n",
"def configure_optimizers(self):\n",
" return Adam(self.parameters(), lr=1e-4)\n",
"\n",
"model.configure_optimizers = MethodType(configure_optimizers, model)\n",
"\n",
"# we monitor diarization error rate on the validation set\n",
"# and use to keep the best checkpoint and stop early\n",
"monitor, direction = task.val_monitor\n",
"checkpoint = ModelCheckpoint(\n",
" monitor=monitor,\n",
" mode=direction,\n",
" save_top_k=1,\n",
" every_n_epochs=1,\n",
" save_last=False,\n",
" save_weights_only=False,\n",
" filename=\"{epoch}\",\n",
" verbose=False,\n",
")\n",
"early_stopping = EarlyStopping(\n",
" monitor=monitor,\n",
" mode=direction,\n",
" min_delta=0.0,\n",
" patience=10,\n",
" strict=True,\n",
" verbose=False,\n",
")\n",
"\n",
"callbacks = [RichProgressBar(), checkpoint, early_stopping]\n",
"\n",
"# we train for at most 20 epochs (might be shorter in case of early stopping)\n",
"from pytorch_lightning import Trainer\n",
"trainer = Trainer(accelerator=\"gpu\", \n",
" callbacks=callbacks, \n",
" max_epochs=20,\n",
" gradient_clip_val=0.5)\n",
"trainer.fit(model)"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"id": "830LvZfdd3Rn"
},
"outputs": [],
"source": [
"# save path to the best checkpoint for later use\n",
"finetuned_model = checkpoint.best_model_path\n",
"\n",
"# uncomment to download the checkpoint\n",
"#from google.colab import files\n",
"#files.download(finetuned_model)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "2NVGAIMd-uPI"
},
"source": [
"## Optimizing the pipeline hyper-parameters\n",
"\n",
"The pretrained `pyannote/speaker-diarization` pipeline relies on its own set of hyper-parameters adapted to the internal `pyannote/segmentation` pretrained model:"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "8OUIBHP7-xk_",
"outputId": "20b3af76-d2d3-4bf9-eb58-2589f8e86939"
},
"outputs": [
{
"data": {
"text/plain": [
"{'segmentation': {'min_duration_off': 0.5817029604921046,\n",
" 'threshold': 0.4442333667381752},\n",
" 'clustering': {'method': 'centroid',\n",
" 'min_cluster_size': 15,\n",
" 'threshold': 0.7153814381597874}}"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pretrained_hyperparameters = pretrained_pipeline.parameters(instantiated=True)\n",
"pretrained_hyperparameters"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "y1rRE4NqJmb5"
},
"source": [
"There is no reason the above hyper-parameters are optimal for the newly finetuned speaker segmentation model. Let's optimize them:\n",
"\n",
"* `segmentation.threshold` ($\\theta$ in the [technical report](https://huggingface.co/pyannote/speaker-diarization/resolve/main/technical_report_2.1.pdf), between 0 and 1) controls the aggressiveness of speaker activity detection (i.e. a higher value will result in less detected speech); \n",
"* `clustering.threshold` ($\\delta$ in the report, between 0 and 2) controls the number of speakers (i.e. a higher value will result in less speakers).\n",
"* `segmentation.min_duration_off` ($\\Delta$ in the report, in seconds) controls whether intra-speaker pauses are filled. This usually depends on the downstream application so it is better to first force it to zero (i.e. never fill intra-speaker pauses) during optimization.\n",
"* `clustering.centroid` is the linkage used by the agglomerative clustering step. `centroid` has been found to be slightly better than `average`. \n",
"* `clustering.min_cluster_size` controls what to do with small speaker clusters. Clusters smaller than that are assigned to the most similar large cluster. `15` is a good default value.\n",
"\n",
"We start by optimizing `segmentation.threshold` by assuming that the subsequent clustering step is perfect (cf. `OracleClustering`)."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "FSWW7bIphgAI"
},
"outputs": [],
"source": [
"# this takes approximately 5min to run on Google Colab GPU\n",
"from pyannote.audio.pipelines import SpeakerDiarization\n",
"from pyannote.pipeline import Optimizer\n",
"\n",
"pipeline = SpeakerDiarization(\n",
" segmentation=finetuned_model,\n",
" clustering=\"OracleClustering\", \n",
")\n",
"# as reported in the technical report, min_duration_off can safely be set to 0.0\n",
"pipeline.freeze({\"segmentation\": {\"min_duration_off\": 0.0}})\n",
"\n",
"optimizer = Optimizer(pipeline)\n",
"dev_set = list(dataset.development())\n",
"\n",
"iterations = optimizer.tune_iter(dev_set, show_progress=False)\n",
"best_loss = 1.0\n",
"for i, iteration in enumerate(iterations):\n",
" print(f\"Best segmentation threshold so far: {iteration['params']['segmentation']['threshold']}\")\n",
" if i > 20: break # 50 iterations should give slightly better results"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "pAUx-1Pw3Uc9"
},
"source": [
"Then, we use the optimized value of `segmentation.threshold` and optimize `clustering.threshold`."
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {
"id": "CSzOWLL5Q29-"
},
"outputs": [],
"source": [
"best_segmentation_threshold = optimizer.best_params[\"segmentation\"][\"threshold\"]"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "M_pQkyQ5RCjl"
},
"outputs": [],
"source": [
"# this takes approximately 5min to run on Google Colab GPU\n",
"pipeline = SpeakerDiarization(\n",
" segmentation=finetuned_model,\n",
" embedding=pretrained_pipeline.embedding,\n",
" embedding_exclude_overlap=pretrained_pipeline.embedding_exclude_overlap,\n",
" clustering=pretrained_pipeline.klustering,\n",
")\n",
"\n",
"pipeline.freeze({\n",
" \"segmentation\": {\n",
" \"threshold\": best_segmentation_threshold,\n",
" \"min_duration_off\": 0.0,\n",
" },\n",
" \"clustering\": {\n",
" \"method\": \"centroid\",\n",
" \"min_cluster_size\": 15,\n",
" },\n",
"})\n",
"\n",
"optimizer = Optimizer(pipeline)\n",
"iterations = optimizer.tune_iter(dev_set, show_progress=False)\n",
"best_loss = 1.0\n",
"for i, iteration in enumerate(iterations):\n",
" print(f\"Best clustering threshold so far: {iteration['params']['clustering']['threshold']}\")\n",
" if i > 20: break # 50 iterations should give slightly better results"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "BDA2XT-wAzDO"
},
"source": [
"Finally, we use the optimized values of `segmentation.threshold` and `clustering.threshold` to evaluate the performance of the finetuned pipeline:"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {
"id": "GBJv2j1U_5mj"
},
"outputs": [],
"source": [
"best_clustering_threshold = optimizer.best_params['clustering']['threshold']"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/"
},
"id": "ir1VUqNEimcN",
"outputId": "d8edfb16-8f97-4d84-d4d2-3066d8b7c791"
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"The finetuned pipeline reaches a Diarization Error Rate (DER) of 26.6% on AMI-SDM.SpeakerDiarization.mini test set.\n"
]
}
],
"source": [
"# this takes approximately 2min to run on Google Colab GPU\n",
"finetuned_pipeline = SpeakerDiarization(\n",
" segmentation=finetuned_model,\n",
" embedding=pretrained_pipeline.embedding,\n",
" embedding_exclude_overlap=pretrained_pipeline.embedding_exclude_overlap,\n",
" clustering=pretrained_pipeline.klustering,\n",
")\n",
"\n",
"finetuned_pipeline.instantiate({\n",
" \"segmentation\": {\n",
" \"threshold\": best_segmentation_threshold,\n",
" \"min_duration_off\": 0.0,\n",
" },\n",
" \"clustering\": {\n",
" \"method\": \"centroid\",\n",
" \"min_cluster_size\": 15,\n",
" \"threshold\": best_clustering_threshold,\n",
" },\n",
"})\n",
"\n",
"metric = DiarizationErrorRate()\n",
"\n",
"for file in dataset.test():\n",
" # apply finetuned pipeline\n",
" file[\"finetuned pipeline\"] = finetuned_pipeline(file)\n",
"\n",
" # evaluate its performance\n",
" metric(file[\"annotation\"], file[\"finetuned pipeline\"], uem=file[\"annotated\"])\n",
"\n",
"print(f\"The finetuned pipeline reaches a Diarization Error Rate (DER) of {100 * abs(metric):.1f}% on {dataset.name} test set.\")"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 147
},
"id": "LFvNtdZTBDZh",
"outputId": "f72da25d-7df7-4d8f-97b1-b5ca0f2febe7"
},
"outputs": [
{
"data": {
"image/png": "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",
"text/plain": [
"<pyannote.core.annotation.Annotation at 0x7f52d9dfc970>"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"file[\"finetuned pipeline\"]"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {
"colab": {
"base_uri": "https://localhost:8080/",
"height": 147
},
"id": "odzLUrqaBHgV",
"outputId": "1864ccc7-076e-41bf-ba63-13df32d57fda"
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABG0AAACsCAYAAADBlVHFAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAfS0lEQVR4nO3de7wV5X3v8e8voEbNxQvGC1jxGEuiYEFphSSnpV6ilQi8jCZ4abXHc5p6Yk2jnnhpX7ppm3PMacA2V6sRMYaLifXC0QS0FqqNot2IgEhQLBIhqMRLUOM9v/PHzGxnrz1rrZm1Zu159t6f9+u1Xqz1zDMzv3meZz0z68eatc3dBQAAAAAAgLC8r+oAAAAAAAAA0BdJGwAAAAAAgACRtAEAAAAAAAgQSRsAAAAAAIAAkbQBAAAAAAAIEEkbAAAAAACAAJG0AQAAAAAACBBJGwAAAAAAgACRtAEAAAAAAAgQSRsAAAAAAIAADbikjZm5mf0g9Xq4mW03szvN7E/N7NH48ZaZrY2fX2Vm58T1VpnZk2a21Mw+kdrOXmZ2T7zsHjPbMy43M/uGmW00szVmdmRqnSVm9rKZ3VkT48Fm9lC8zs1mtnNc3mVmF8fP55nZJjNbbWZPmNn3zWxUp9uvvwTWT18zs8fix+dT5cvNbEPcBz81szGp8p+bmaXq3m5mr3a63fpLBf3zMTN70MzeTN4DqXXmmtnzZvZYTflyM5uYej06qWNmU5L3XbOYBrpQ+srMDjSzZWb2uJmtM7MvpZbNM7Nfm9kHU2X/EMc+In79birWR83s0k63HQAAADDQDbikjaTXJI01s13j18dL2ipJ7n6Du4939/GSfiHpD+PXyYeDm919grsfKukqSbea2cfjZZdKujdedm/8WpL+SNKh8ePPJH03FcvfS/rjjBi/Julqd/+opJcknVvnWP6Xu/+OpDGSVkn6V4sTPINAEP1kZlMlHSlpvKSjJV1sZh9KxXlm3Ac3KurPxMuSPhlvYw9J+7fdImHp7/55UdIFkr6eEcs8SSe2eTyNYhroQumrdyRd5O6HSZok6Ytmdlhq+UZJ0yXJzN4n6ZgkztjrSazx46rWmwQAAAAYGgZi0kaSfixpavz8dEkLi27A3ZdJulbRB3wp+rBxY/z8RkkzUuXf98gKSXuY2f7xNu6V9Ep6u/G3M46RdEvGturF4u5+taRnFSUfBosQ+ukwSfe5+zvu/pqkNcpOENwn6aOp14skzYyfnyLp1qKxDwD91j/u/ry7/4ektzO2cZ+iREEpMmIaDCrvK3ff5u6PxM9fkbRe0shUlUWSkm+yTZH0U0WJHgAAAAAtGqhJm0WSZprZ+yUdIemhFrfziKSPxc/3dfdt8fNnJe0bPx8p6ZnUOlvU+4NKrb0lvezu7+SsXy+ewSCEflot6UQz2y2+TeMPJR2YsY+TJa1Nvb5X0u+b2TBFyZubW4w9ZP3ZP/2N91K2UvrKzEZLmlATxxOS9olvszo9jjlt15rboz4vAAAAAA0Nb2flf5r+gy5JV5YSSWTWF+44q6tZJXdfE39oOF3R/0C3yrIK3d3NzNvYbqsy42nX1pEHdqnkfhq59ZmuZpVC6Cd3v9vMflfSA5K2S3pQ0rupKvPN7HVJT0v6i1T5u5L+XVHCZld3fzr1EzelmnTl0i6V3D8rZp3Q1axSCP3TRNa6ebfXkc6advvULpXcV4tn3NXVrFJIfWVmH5D0z5L+0t131Cy+VdF75mhJX6hZ9np8GxcAAACAnAbqN20kabGi31wofJtAygRFX/GXpOeS257if5+Py7eq9zczRqn37zTUekHRrTnDc9avF89gUXk/uftX49/QOF7Rh9YnUvXOjJfNcPf0N3Wk6JsC35D0wzZiD11/9U8rXpC0Z+r1XpJ+2UJMg0XlfWVmOylK2Mx396xbBm+W9LeS7nH337QRJwAAAAAN7KTNXEmz3H1t05oZzOwPFP22w3Vx0WJJZ8fPz5Z0R6r8TywySdKvUrcU9OHuLmmZpFMztlUvFjOzCxT92O2SFg4nZJX2k5kNM7O9420doejWkrtz7v5+Sf9H7X1IDl1/9U8rlks6y977itPZit5bRWMaLCrtq7gfrpe03t3nZNVx982S/krSd1qJEQAAAEANdx9QD0mvZpRNkXRnTdnTkkakXp+j6PaYRxV902KppE+mlu+t6HdMnpT0L5L2istN0rclPaXoN08mpta5P97m64p+Q+WEuPy/SHpY0V9T+ZGkXeLyLkkXx8/nSdqk6DdXnpR0k6RRVbfvYOsnSe+X9Hj8WCFpfGpby9P9maO8zzEN1EcF/bNf/B7Zoegvc22R9KF42UJJ2xT98O0WSefG5TtL+paiH49erShhsFttrM1iGuiPUPpK0qcU3Z62Jt7mo5JOiteZJ+nUjDh7YlJ0y+GjqcdVVbctDx48ePDgwYMHDx6hP8y9ip9uAQAAAAAAQCMD+fYoAAAAAACAQYukDQAAAAAAQIBI2gAAAAAAAASIpA0AAAAAAECASNoAAAAAAAAEaHiRyiNGjPDRo0d3KBQAAAAAAIChZ+XKlb90931qywslbUaPHq3u7u7yogIAAAAAABjizGxzVjm3RwEAAAAAAASIpA0AAAAAAECASNoAAAAAAAAEiKQNAAAAAABAgEjaAAAAAAAABIikDQAAAAAAQIBI2gAAAAAAAASIpA0AAAAAAECASNoAAAAAAAAEiKQNAAAAAABAgEjaAAAAAAAABIikDQAAAAAAQIBI2gAAAAAAAASIpA0AAAAAAECACiVt3n3uuVz1dsye0+d1Ula7rNH69eqmy7d/9rTc2y1T1jHWq1NGbOltpdsz737KjCXLDXPP14L18yvrj3bUtme6LGtZu9usStaY6dR+Qun/dvux0XbT/zaqk46j2TrNtt/ptu2vvsvTHkVjOW/uw7nm4R2z56h74Wp1L1xdd7959l9vX1nnp0aanefyzqmNzklltHGjOTIdZ7N91rph7vmSpAXr5/cqX7B+fq9HurxWVlmjGIqO8fPmPlyo/mX3X1KoflpWOzTa7o7Zc3rOv822uWD9/FzvkWR7tW2ftd30eb+I2j5NH1uj/r5u2UZdt2xjz+u8fVO0D/tLciwX/+Sb+uml50h6rx/Om/twTxun40+3Qdbz9Os8x11vLixap9m6ybz79R/NzhyL6dfp/dWuL0mLL7+7Z3ky/rLm9cWX313o/Z73Oqnq65xW3nOtKuvzQ3r9hWdd1GfZjtlz9JWFZ/a5PsgaJzfMPb/n/ZIV447Zc3TZ/Ze0HHN6DswrHU+n7Zg9R9s/e1ru65X/MevWXueK2nFepK2Sc3aith/SMS1YP18X/PA2LT//r3ud62fOu0ZSNEcVuT7+1ldv6jX/J5L9JMuy+u2Ub92p782a3rM8vc/tnz1N3QtX62fnfKXXOknbSNH5N93m6eNt1P5lXYdIktw99+OInXbyPLYcMKrP66Ssdlmj9evVTZcX2W6Zso6xXp0yYktvK92eeffT6XY6+baT/OTbTqqsP9pR257psqxl7W6zKlljplP7CaX/2+3HRttN/9uoTjqOZus0236n27a/+i5PexSN5egrluSah7ccMMqvmXaTXzPtprr7zbP/evsq+j5rdp7LO24anZPKaONGc2Sz/Tdy8m0n9fo3XZ5+1NbP2kazmIvGljj6iiWF6teLp5V1mx37lgNG9WmjettMn6Nrt5H+t17bZ2233jabqT2uesdZu/+jr1jSqz/y9k3RPuwvSVxZ109HX7Gkp21qjzl5nfU8a1kj9ebConWarZvMu/XGTfp1en+169cuT9bLmtevmXZTofGZd/6u+jqnP/dd1nV9o7ZN2jMZF43Ow+l69WLMqlNEnvmvVn/3SbN2Skuuj7Lee0XbqrZNGl3rJnNX8jxZPz1HFbk+rjenJdtMz6dZ62adC5P9Z80VtXFnXeM1+4zRynWIpG7PyMNwexQAAAAAAECASNoAAAAAAAAEiKQNAAAAAABAgIYXXWHryAPb3mmRbXSqbic02n8nYsvaZp79dKSdvn1E/+yngzrRf632UX/odByhHGdaf70Py1ynijHUX33X3/2Rd3/pev3RFq3E1Yn6lez/20do2u1TC223SP0Q56FmirZH0W02fY9knM87odFxdqINQjXpyqX6yIToeVnjddKVSwvV/6fpPyhlv0W33+h4y4ypzGu4MrZbhir2XeY+O/V5sraspf2k5sC8c9F3W91Xm3Jdr/z37zVcr+n6aTXn7Kzjrred9Hr15qiGMWQcRz19++2CPuVlf47u9DUa37QBAAAAAAAIEEkbAAAAAACAABW+PWrk1mea1mn2dZ9m20ivn1W33vbzxFaWrBhq99/sOMraX579lBlLpoyvD/Znf7QjaZt0vLXtXfRYGm2zqnZp95iK7ieE/u/UMRd9z9VqdQ7sdNv2V9+l91P214mbzcN59peu10r/FpX3PNeoX/KeI9rRaI5sVr+u26dq8Yy7Ct0Os3jGXb1eN1q3yDVEKNLHV9ZtQuk2bnqt0k+3JiXHmXWMjZYNNitmnaBpt39DUnlz4opZJxS6ReoLd5zVcHm7typ94Y6zMrfRaE5JYirjNqm857S81wxVX+dsHXlgv+27rM8Pjdq21TFf73NQ2zGn5p3a8009W79YXZ80HY8Zc0GRz5C9xOfsnlhSx93s2i59Hqo3RzWMocCcVttvk1Yt7RNDVpx5xmW9a6ui1xt1j9Uss5hv2gAAAAAAAASIpA0AAAAAAECAhnV1deWufO2113b9+YUX5qq7yycm9349eXJPWe2yRuvXq5uUv/nAg9r985/Lvd0y9TnGjP0XOea8+9tl8uRe7Zl3P2XGUuuNBx7U+PEn6befeLWy/mhHbXv2lGW0ddvbrLBdssZMR/ZT8XGmtduPdbdb4D3XE0cJc2Cn27a/+i5PexSJZeWmFzV1wshc8/AukyfpgLH76oBx+2XvNz3X5uzfrJjT56dGGp3nipzjGp2TymjjunNkTZzN9pn2xgMPasKEk+Qujdvnvb/Y4S6NHTGu55Esq61Xr6xZDEXG+MpNL+ozE0bmrr9m+xodd9DxueunZbVD8rredl3S+PEn1W2DZBvu0rgR45q+R5LzeW3bZ2137Ihxvc77rRynu+TynmOrXdarPSQdOXovHXXwXpLy903RPuwvLumog/fSyk0vav8Pv1+/ddwMSVE/rNz0oqaOH6mxI8bprVdG9sSfboOs5+nXcuU4bq87Fxar02xd1wFj95XLNfmwyZlj8b3X6f31Xv+AcfvpF2uf1ZhjD5GUnme9z7ye1Cvyfs97nVTldU7ec0tZyvr8kKx/16qtGnfKCb2XTZ6sx3d9ScePPaX39UFGO7ukYaNG9bxfsmLccOjuOva3jmsp5vQcWG/+q7V2+5pe8XScS7t97rRc1ysP3bdGJ//Bx987V9S894q0VXLOTtQedzqOnSdPlru0724f0X577Npzrn/uted06viJPXNW3uvjNx54UL/7X4/omf97msKjx4mHfyya+zKuCX687mf6zKZHdeSU0/ueC+O2lLtGzOh9jt1w6O467qDjtWb7Gn1qy+692rzneJt8xihaPmvWrG1dXV3X1pabu2eukGXixIne3d2duz4AAAAAAAAaM7OV7j6xtpzbowAAAAAAAAJE0gYAAAAAACBAJG0AAAAAAAACRNIGAAAAAAAgQCRtAAAAAAAAAkTSBgAAAAAAIEAkbQAAAAAAAAJE0gYAAAAAACBAJG0AAAAAAAACVDhpc97ch7X48rslSQvWz9eC9fPbCuCy+y/Rdcs26rplG3uVDWRJm7TbNp3STr9l9c15cx9uN6ReMdWOh1a0M4bKOB4Uk3dMVt031y3bqBlz/q3j+8lqj07Pi6f+6H92dPtVSdqyduzsmD2nT910WRXnoTLOqbVCOJ/Wi6E/Y6t67qjS9s+e1vM8GWNZbR/CWElkXQO0e10wUKSvgS7+66UtHXcyl2XNc0Wkx047dsye03YsZbrs/kvUvXC1uheublivE3PyYFbbXumxnC6vfd5uG7e7jeT8cN7ch3ueJ59168ka040+v+T5bHPdso26+Cff1CnfujMzvpnzrik8H5R1/s17Dm10/Zq0QTvzSu22F6yf39MX9cZB3v0d+7//peW4kljqnV/zrNdszBVO2qza/JK2rXtekrRowwIt2rCg6CZ6WffCY7p++VO6fvlTvcoGsqRN2m2bTmmn37L6ZtXml9oNqVdMteOhFe2MoTKOB8XkHZNV9831y5/Ss796o+P7yWqPTs+Lb+20uaPbr0rSlrVj55U5V/epmy6r4jxUxjm1Vgjn03ox9GdsVc8dVXprxYqe58kYy2r7EMZKIusaoN3rgoEifQ3078NaO+5kLsua54pIj512vDLn6rZjKdO6Fx7TykVrtXLR2ob1OjEnD2a17ZUey+ny2ufttnG720jOD6s2v9TzPPmsW0/WmG70+SXPZ5vrlz+lJ95col9s3ykzvqc3HVx4Pijr/Jv3HNro+jVpg3bmldptL9qwoKcv6o2DvPt77c13W44riaXe+TXPes3GHLdHAQAAAAAABIikDQAAAAAAQIBI2gAAAAAAAARoeNUBDFbTbp9adQgAgAa2jjyw6hAA1DHpyqVVhzCgMb8hNHw2QhmG6jjimzYAAAAAAAABImkDAAAAAAAQIG6P6pDFM+4asl/fAoCBYOTWZ3q95nYCIBwrZp3Q6zW3SxUzcuszzGkIyuIZd0kaure3oBzJOJKG1ljimzYAAAAAAAABImkDAAAAAAAQoMK3R004aE/t/7ZJkmaOOaPtAA7fe6xOnnJIn7KBLGmXMtqnE9qJK6tvJhy0ZzvhSOod07k146EV7YyhMo4HxeQdk1X3zblTDtFdq7Z2fD9Z7dHpeXHntw/q6ParkrTl/S/2HjsfvPDLfeqmy6o4D3XinBHC+bReDP0ZW9VzR5V2njSp53kyxtb+ck2feiGMlUTWdUAZ1wYDQfo4P/WuNObY4sedzGVZ81wR6bHTjnbjKNvhe4/VUTPHNa0X6nV8qGrbKz2W08vqPS9rv0Ul54f0eWL/wz/ScJ2sMd1ojsozf5075RBteONEDd/n7cz4Rh+8SccedFzT7aSVdf7New5tdP2atMHOj7U+r9Ruf+aYM/TBC4+Nn++buU7eeWz3XYa1HFc6tqzza571PnD4Pg3rmbvn3ujEiRO9u7u7UCAAAAAAAACoz8xWuvvE2nJujwIAAAAAAAgQSRsAAAAAAIAAkbQBAAAAAAAIEEkbAAAAAACAAJG0AQAAAAAACBBJGwAAAAAAgACRtAEAAAAAAAgQSRsAAAAAAIAAkbQBAAAAAAAIUOGkzWX3X9KJODBAnDf34apDAAAMIJw3UNSO2XO0Y/acqsNASRasn68F6+dXHQaQG+et1tF2rblu2UZdt2xj3eXDi25w3QuPtRUQBrZVm1+qOgQAwADCeQNFvTLnaknShy66sOJIUIZFGxZIks74+JkVRwLkw3mrdbRda65f/lTD5dweBQAAAAAAECCSNgAAAAAAAAEiaQMAAAAAABAgkjYAAAAAAAABImkDAAAAAAAQIJI2AAAAAAAAASJpAwAAAAAAECCSNgAAAAAAAAEiaQMAAAAAABCg4UVXOHzvsZ2IAwPEhIP2rDoEAMAAwnkDRX3wwi9XHQJKNHPMGVWHABTCeat1tF1rzp1yiCTpob/JXm7unntjEydO9O7u7jLiAgAAAAAAgCQzW+nuE2vLuT0KAAAAAAAgQCRtAAAAAAAAAkTSBgAAAAAAIEAkbQAAAAAAAAJE0gYAAAAAACBAJG0AAAAAAAACRNIGAAAAAAAgQCRtAAAAAAAAAkTSBgAAAAAAIEDDqw4AAAAAAABgKFqwfn7D5SRtAAAAAAAAKrBow4KGy7k9CgAAAAAAIEAkbQAAAAAAAAJE0gYAAAAAACBAJG0AAAAAAAACRNIGAAAAAAAgQCRtAAAAAAAAAkTSBgAAAAAAIEAkbQAAAAAAAAI0vOoAAAAAAAAAhqKZY86QJP0//ThzOUkbAAAAAACACpzx8TMlSWfqrMzl3B4FAAAAAAAQIJI2AAAAAAAAASJpAwAAAAAAECCSNgAAAAAAAAEiaQMAAAAAABAgkjYAAAAAAAABImkDAAAAAAAQIJI2AAAAAAAAASJpAwAAAAAAECCSNgAAAAAAAAEiaQMAAAAAABAgkjYAAAAAAAABImkDAAAAAAAQIJI2AAAAAAAAASJpAwAAAAAAECBz9/yVzbZL2ty5cDBIjZD0y6qDwKDGGEMnMb7QaYwxdBLjC53GGEMnDaXxdZC771NbWChpA7TCzLrdfWLVcWDwYoyhkxhf6DTGGDqJ8YVOY4yhkxhf3B4FAAAAAAAQJJI2AAAAAAAAASJpg/5wbdUBYNBjjKGTGF/oNMYYOonxhU5jjKGThvz44jdtAAAAAAAAAsQ3bQAAAAAAAAJE0gZtMbMDzWyZmT1uZuvM7Etx+V5mdo+ZPRn/u2dcbmb2DTPbaGZrzOzIao8AA4WZDTOzVWZ2Z/z6YDN7KB5LN5vZznH5LvHrjfHy0VXGjfCZ2R5mdouZ/czM1pvZZOYwlMnMvhyfIx8zs4Vm9n7mMLTDzOaa2fNm9liqrPC8ZWZnx/WfNLOzqzgWhKfO+Pr7+Dy5xsxuM7M9Ussui8fXBjM7IVV+Yly20cwu7e/jQLiyxlhq2UVm5mY2In495OcwkjZo1zuSLnL3wyRNkvRFMztM0qWS7nX3QyXdG7+WpD+SdGj8+DNJ3+3/kDFAfUnS+tTrr0m62t0/KuklSefG5edKeikuvzquBzTyj5KWuPvHJP2OonHGHIZSmNlISRdImujuYyUNkzRTzGFozzxJJ9aUFZq3zGwvSVdKOlrS70m6Mkn0YMibp77j6x5JY939CElPSLpMkuLr/pmSDo/X+U78H23DJH1b0fg7TNLpcV1Ayh5jMrMDJX1a0s9TxUN+DiNpg7a4+zZ3fyR+/oqiDzsjJU2XdGNc7UZJM+Ln0yV93yMrJO1hZvv3c9gYYMxslKSpkr4XvzZJx0i6Ja5SO8aSsXeLpGPj+kAfZvZhSb8v6XpJcve33P1lMYehXMMl7WpmwyXtJmmbmMPQBne/T9KLNcVF560TJN3j7i+6+0uKPpT3+RCFoSdrfLn73e7+TvxyhaRR8fPpkha5+5vuvknSRkUfoH9P0kZ3/093f0vSorguUG8Ok6L/rPiKpPQP7w75OYykDUoTf4V7gqSHJO3r7tviRc9K2jd+PlLSM6nVtsRlQCP/oGgC/038em9JL6cuHtLjqGeMxct/FdcHshwsabukG+Lb775nZruLOQwlcfetkr6u6H8Ntymak1aKOQzlKzpvMZ+hVf9N0k/i54wvlMLMpkva6u6raxYN+TFG0galMLMPSPpnSX/p7jvSyzz6E2X8mTK0xMw+I+l5d19ZdSwYlIZLOlLSd919gqTX9N4tBZKYw9Ce+Kva0xUlCA+QtLsG6f8EIhzMW+gUM/srRT+PML/qWDB4mNluki6XdEXVsYSIpA3aZmY7KUrYzHf3W+Pi55JbBuJ/n4/Lt0o6MLX6qLgMqOeTkqaZ2dOKvlp7jKLfINkjvtVA6j2OesZYvPzDkl7oz4AxoGyRtMXdH4pf36IoicMchrIcJ2mTu29397cl3apoXmMOQ9mKzlvMZyjEzM6R9BlJZ8aJQYnxhXIcoug/N1bH1/yjJD1iZvuJMUbSBu2J77O/XtJ6d5+TWrRYUvIL3mdLuiNV/ifxr4BPkvSr1Fd5gT7c/TJ3H+XuoxX90N2/uvuZkpZJOjWuVjvGkrF3alyf/21EJnd/VtIzZjYmLjpW0uNiDkN5fi5pkpntFp8zkzHGHIayFZ23lkr6tJntGX8j7NNxGdCHmZ2o6Fb1ae7+69SixZJmWvSX7w5W9GOxD0v6D0mHWvSX8nZWdA23uL/jxsDg7mvd/SPuPjq+5t8i6cj4Om3Iz2HDm1cBGvqkpD+WtNbMHo3LLpd0laQfmtm5kjZL+ly87MeSTlL0I2W/lvSn/RsuBpFLJC0ys7+TtErxD8nG/95kZhsV/cDZzIriw8DxF5LmxxeV/6loXnqfmMNQAnd/yMxukfSIolsKVkm6VtJdYg5Di8xsoaQpkkaY2RZFf0Gl0LWXu79oZn+r6MO1JP2Nu2f9MCiGmDrj6zJJu0i6J/5t9BXu/ufuvs7MfqgoGf2OpC+6+7vxds5X9CF6mKS57r6u3w8GQcoaY+5+fZ3qQ34OM/7zBgAAAAAAIDzcHgUAAAAAABAgkjYAAAAAAAABImkDAAAAAAAQIJI2AAAAAAAAASJpAwAAAAAAECCSNgAAIHhmtreZPRo/njWzrfHzV83sO1XHBwAA0An8yW8AADCgmFmXpFfd/etVxwIAANBJfNMGAAAMWGY2xczujJ93mdmNZna/mW02s1PM7P+a2VozW2JmO8X1jjKzfzOzlWa21Mz2r/YoAAAAspG0AQAAg8khko6RNE3SDyQtc/dxkl6XNDVO3HxT0qnufpSkuZK+WlWwAAAAjQyvOgAAAIAS/cTd3zaztZKGSVoSl6+VNFrSGEljJd1jZorrbKsgTgAAgKZI2gAAgMHkTUly99+Y2dv+3o/3/UbRdY9JWufuk6sKEAAAIC9ujwIAAEPJBkn7mNlkSTKznczs8IpjAgAAyETSBgAADBnu/pakUyV9zcxWS3pU0ieqjQoAACAbf/IbAAAAAAAgQHzTBgAAAAAAIEAkbQAAAAAAAAJE0gYAAAAAACBAJG0AAAAAAAACRNIGAAAAAAAgQCRtAAAAAAAAAkTSBgAAAAAAIEAkbQAAAAAAAAL0/wEtiFiOC7DH3AAAAABJRU5ErkJggg==",
"text/plain": [
"<pyannote.core.annotation.Annotation at 0x7f51bcebc3d0>"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"file[\"annotation\"]"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "muYEOZ36VJo5"
},
"source": [
"## Conclusion\n",
"\n",
"In just about half an hour (and 6 hours of training data), we managed to reduce the diarization error rate from 32.5% to 26.6%.\n",
"\n",
"[Yours truly](https://herve.niderb.fr) used this very recipe for their submissions to several speaker diarization benchmarks organized in 2022. I reached:\n",
"\n",
"* 6th place at [VoxSRC 2022](https://mm.kaist.ac.kr/datasets/voxceleb/voxsrc) speaker diarization challenge\n",
"* 1st place at [Ego4D 2022](https://ego4d-data.org/) audio-only speaker diarization challenge\n",
"* 1st place at [Albayzin 2022](http://catedrartve.unizar.es/albayzin2022results.html) speaker diarization challenge\n",
"\n",
"The [technical report](https://huggingface.co/pyannote/speaker-diarization/resolve/main/technical_report_2.1.pdf) contains a detailed description of the pipeline, as well as an extensive evaluation of its performance on multiple benchmarking datasets.\n",
"\n",
"For technical questions and bug reports, please check [pyannote.audio](https://github.com/pyannote/pyannote-audio) Github repository so that my (or anyone's) public answer benefits other people as well. \n",
"\n",
"For scientific consulting enquiries, please contact [me](herve@niderb.fr)."
]
}
],
"metadata": {
"accelerator": "GPU",
"colab": {
"authorship_tag": "ABX9TyMc87txSanOjHXPQP0Zpu9J",
"include_colab_link": true,
"provenance": [],
"toc_visible": true
},
"gpuClass": "standard",
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
},
"language_info": {
"name": "python"
}
},
"nbformat": 4,
"nbformat_minor": 0
}