{
"cells": [
{
"attachments": {},
"cell_type": "markdown",
"id": "9084467f-2e18-463e-8099-4920525964f6",
"metadata": {},
"source": [
"# Speaker diarization\n",
"\n",
"Speaker diarization is the process of partitioning an audio stream containing human speech into homogeneous segments according to the identity of each speaker. It can enhance the readability of an automatic speech transcription by structuring the audio stream into speaker turns and, when used together with speaker recognition systems, by providing the speaker’s true identity. It is used to answer the question \"who spoke when?\"\n",
"\n",
"\n",
"\n",
"With the increasing number of broadcasts, meeting recordings and voice mail collected every year, speaker diarization has received much attention by the speech community. Speaker diarization is an essential feature for a speech recognition system to enrich the transcription with speaker labels.\n",
"\n",
"Speaker diarization is used to increase transcript readability and better understand what a conversation is about. Speaker diarization can help extract important points or action items from the conversation and identify who said what. It also helps to identify how many speakers were on the audio.\n",
"\n",
"This tutorial considers ways to build speaker diarization pipeline using pyannote.audio and OpenVINO. `pyannote.audio` is an open-source toolkit written in Python for speaker diarization. Based on PyTorch deep learning framework, it provides a set of trainable end-to-end neural building blocks that can be combined and jointly optimized to build speaker diarization pipelines. You can find more information about pyannote pre-trained models in [model card](https://huggingface.co/pyannote/speaker-diarization), [repo](https://github.com/pyannote/pyannote-audio) and [paper](https://arxiv.org/abs/1911.01255).\n",
"\n",
"\n",
"#### Table of contents:\n",
"\n",
"- [Prerequisites](#Prerequisites)\n",
"- [Prepare pipeline](#Prepare-pipeline)\n",
"- [Load test audio file](#Load-test-audio-file)\n",
"- [Run inference pipeline](#Run-inference-pipeline)\n",
"- [Convert model to OpenVINO Intermediate Representation format](#Convert-model-to-OpenVINO-Intermediate-Representation-format)\n",
"- [Select inference device](#Select-inference-device)\n",
"- [Replace segmentation model with OpenVINO](#Replace-segmentation-model-with-OpenVINO)\n",
"- [Run speaker diarization with OpenVINO](#Run-speaker-diarization-with-OpenVINO)\n",
"\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "eea16121-54ce-40fe-a2ac-52fdc6909256",
"metadata": {},
"source": [
"## Prerequisites\n",
"[back to top ⬆️](#Table-of-contents:)\n"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e8ddb010-642a-478c-96a9-f72cf365328e",
"metadata": {
"tags": [
"hide-output"
]
},
"outputs": [],
"source": [
"%pip install -q --extra-index-url https://download.pytorch.org/whl/cpu \"librosa>=0.8.1\" \"matplotlib<3.8\" \"ruamel.yaml>=0.17.8,<0.17.29\" \"torch>=2.1\" tqdm torchvision torchaudio \"git+https://github.com/eaidova/pyannote-audio.git@hub0.10\" \"openvino>=2023.1.0\""
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "b3ca0e47-f42c-453a-8843-79fb916b4519",
"metadata": {},
"source": [
"## Prepare pipeline\n",
"[back to top ⬆️](#Table-of-contents:)\n"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "c2b836c9-89b0-46aa-b8f8-8ec94afd42dc",
"metadata": {},
"source": [
"Traditional Speaker Diarization systems can be generalized into a five-step process:\n",
"\n",
" * **Feature extraction**: transform the raw waveform into audio features like mel spectrogram.\n",
" * **Voice activity detection**: identify the chunks in the audio where some voice activity was observed. As we are not interested in silence and noise, we ignore those irrelevant chunks.\n",
" * **Speaker change detection**: identify the speaker change points in the conversation present in the audio.\n",
" * **Speech turn representation**: encode each subchunk by creating feature representations.\n",
" * **Speech turn clustering**: cluster the subchunks based on their vector representation. Different clustering algorithms may be applied based on the availability of cluster count (k) and the embedding process of the previous step.\n",
"\n",
"The final output will be the clusters of different subchunks from the audio stream. Each cluster can be given an anonymous identifier (speaker_a, ..) and then it can be mapped with the audio stream to create the speaker-aware audio timeline.\n",
"\n",
"On the diagram, you can see a typical speaker diarization pipeline:\n",
"\n",
"\n",
"\n",
"From a simplified point of view, speaker diarization is a combination of speaker segmentation and speaker clustering. The first aims at finding speaker change points in an audio stream. The second aims at grouping together speech segments based on speaker characteristics."
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "6fd236ec-c768-45f9-b3d7-f4f795c52cdd",
"metadata": {},
"source": [
"For instantiating speaker diarization pipeline with `pyannote.audio` library, we should import `Pipeline` class and use `from_pretrained` method by providing a path to the directory with pipeline configuration or identification from [HuggingFace hub](https://huggingface.co/pyannote/speaker-diarization).\n",
"\n",
">**Note**:\n",
"> This tutorial uses a non-official version of model `philschmid/pyannote-speaker-diarization-endpoint`, provided only for demo purposes.\n",
"> The original model (`pyannote/speaker-diarization`) requires you to accept the model license before downloading or using its weights, visit the [pyannote/speaker-diarization](https://huggingface.co/pyannote/speaker-diarization) to read accept the license before you proceed.\n",
">To use this model, you must be a registered user in 🤗 Hugging Face Hub. You will need to use an access token for the code below to run. For more information on access tokens, please refer to [this section of the documentation](https://huggingface.co/docs/hub/security-tokens).\n",
">You can log in on HuggingFace Hub in the notebook environment using the following code:\n",
"```python\n",
"\n",
"## login to huggingfacehub to get access to pre-trained model\n",
"\n",
"from huggingface_hub import notebook_login, whoami\n",
"\n",
"try:\n",
" whoami()\n",
" print('Authorization token already provided')\n",
"except OSError:\n",
" notebook_login()\n",
"```\n"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "0e0d4ff9-bee2-4359-a32e-0ae17b245380",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"2024-03-29 15:46:40.738908: I tensorflow/core/util/port.cc:111] oneDNN custom operations are on. You may see slightly different numerical results due to floating-point round-off errors from different computation orders. To turn them off, set the environment variable `TF_ENABLE_ONEDNN_OPTS=0`.\n",
"2024-03-29 15:46:40.741381: I tensorflow/tsl/cuda/cudart_stub.cc:28] Could not find cuda drivers on your machine, GPU will not be used.\n",
"2024-03-29 15:46:40.770739: E tensorflow/compiler/xla/stream_executor/cuda/cuda_dnn.cc:9342] Unable to register cuDNN factory: Attempting to register factory for plugin cuDNN when one has already been registered\n",
"2024-03-29 15:46:40.770762: E tensorflow/compiler/xla/stream_executor/cuda/cuda_fft.cc:609] Unable to register cuFFT factory: Attempting to register factory for plugin cuFFT when one has already been registered\n",
"2024-03-29 15:46:40.770780: E tensorflow/compiler/xla/stream_executor/cuda/cuda_blas.cc:1518] Unable to register cuBLAS factory: Attempting to register factory for plugin cuBLAS when one has already been registered\n",
"2024-03-29 15:46:40.776515: I tensorflow/tsl/cuda/cudart_stub.cc:28] Could not find cuda drivers on your machine, GPU will not be used.\n",
"2024-03-29 15:46:40.777699: I tensorflow/core/platform/cpu_feature_guard.cc:182] This TensorFlow binary is optimized to use available CPU instructions in performance-critical operations.\n",
"To enable the following instructions: AVX2 AVX512F AVX512_VNNI FMA, in other operations, rebuild TensorFlow with the appropriate compiler flags.\n",
"2024-03-29 15:46:41.938002: W tensorflow/compiler/tf2tensorrt/utils/py_utils.cc:38] TF-TRT Warning: Could not find TensorRT\n",
"/home/ea/miniconda3/lib/python3.11/site-packages/pyannote/audio/core/io.py:42: UserWarning: torchaudio._backend.set_audio_backend has been deprecated. With dispatcher enabled, this function is no-op. You can remove the function call.\n",
" torchaudio.set_audio_backend(\"soundfile\")\n"
]
}
],
"source": [
"from pyannote.audio import Pipeline\n",
"\n",
"pipeline = Pipeline.from_pretrained(\"philschmid/pyannote-speaker-diarization-endpoint\")"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "95a8ada2-1df8-446e-a41d-ec076e9af3e8",
"metadata": {},
"source": [
"## Load test audio file\n",
"[back to top ⬆️](#Table-of-contents:)\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "b87ae84b-ba08-47ff-a1a6-1544a36eab5e",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "1f54c11967a942dfbc8bf22f15a1a3cf",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"sample.wav: 0%| | 0.00/938k [00:00, ?B/s]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# Fetch `notebook_utils` module\n",
"import requests\n",
"\n",
"r = requests.get(\n",
" url=\"https://raw.githubusercontent.com/openvinotoolkit/openvino_notebooks/latest/utils/notebook_utils.py\",\n",
")\n",
"\n",
"open(\"notebook_utils.py\", \"w\").write(r.text)\n",
"\n",
"from notebook_utils import download_file\n",
"\n",
"test_data_url = \"https://github.com/pyannote/pyannote-audio/raw/develop/tutorials/assets/sample.wav\"\n",
"\n",
"sample_file = \"sample.wav\"\n",
"download_file(test_data_url, \"sample.wav\")\n",
"AUDIO_FILE = {\"uri\": sample_file.replace(\".wav\", \"\"), \"audio\": sample_file}"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "d154b3eb-76b0-448a-82e5-a6c6c8318b98",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
" \n",
" "
],
"text/plain": [
""
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABHwAAAHACAYAAADQuH+GAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAACnxElEQVR4nO3dd3gUdf4H8Pduei8kJJRA6L0jxYIoSNWzi13Rw7PgnYflwAZWOM/z7OfP7qnYuwiKSLEgvUvvLUAS0knd/f2R7GZ3dman7MzO7O779Tw+hs1k95tkszvz+X6Kzel0OkFERERERERERGHDbvYCiIiIiIiIiIhIXwz4EBERERERERGFGQZ8iIiIiIiIiIjCDAM+RERERERERERhhgEfIiIiIiIiIqIww4APEREREREREVGYYcCHiIiIiIiIiCjMMOBDRERERERERBRmos1egN4cDgeOHDmClJQU2Gw2s5dDRERERERERKQLp9OJ8vJytG7dGna7/xyesAv4HDlyBHl5eWYvg4iIiIiIiIjIEAcPHkTbtm39HhN2AZ+UlBQAjd98amqqyashIiIiIiIiItJHWVkZ8vLy3LEPf8Iu4OMq40pNTWXAh4iIiIiIiIjCjpIWNmzaTEREREREREQUZhjwISIiIiIiIiIKMwz4EBERERERERGFGQZ8iIiIiIiIiIjCDAM+RERERERERERhhgEfIiIiIiIiIqIww4APEREREREREVGYYcCHiIiIiIiIiCjMMOBDRERERERERBRmGPAhIiIiIiIiIgozDPgQEREREREREYUZBnyIiIiIiIiIiMIMAz5ERERERERERGGGAR8iIiIiIiIiojDDgA8RkcX9trsQgx9fiOLKWrOXQkREREREIYIBHyIii5u38SgKK2pxpOSU2UshIiIiIqIQwYAPEZGF1Tc4MH9zgdnLICIiIiKiEMOADxGRhS3adpylXEREREREpBoDPkREFlZ6qs79cVJctIkrISIiIiKiUMKADxFRiGhwOM1eAhERERERhQgGfIiIrMwjxlNYUWPeOoiIiIiIKKQEJeDz0ksvIT8/H/Hx8Rg6dChWrlwpeeznn3+OwYMHIz09HUlJSejfvz/efffdYCyTiMhyDp2scn8cbbeZuBIiIiIiIgolhgd8PvroI0ybNg0zZ87E2rVr0a9fP4wdOxbHjx8XPT4zMxMP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jVkIERERkcl+m34uAKBnq1STV0IUmhjwISKykPgYviwHW5QtvEfWExERharUhBgAQEIs++kRacErCyIiimh5mQlmL4GIiIiISHcM+BARhbDUePbeD5SNGT5ERESWFG1vfI8e3D7D5JUQhSZeKRARhTAGK4wXG829ESIiIjPEx0RhwV1nIb9FktlLIQpJPIslIrKY9MQYs5dAHtIS+PsgIiIyS/fcVMTHsIcPkRYM+BARERERERERhRkGfIiIiCQ8dmEvs5dARERERKQJAz5ERCHqznM7m72EsMf+PUREREQUqngmS0REREREREQUZhjwISIKUTX1DrOXEPaq6/gzJiIiIqLQxIAPEVGIykqONXsJYePh83uK3n5h/9ZBXgkRERERkT4Y8CEiClFlp+rNXkLY6NQyWfT29EQG1YiIiIgoNBka8CkuLsY111yD1NRUpKen4+abb0ZFRYXf4++8805069YNCQkJaNeuHf7617+itLTUyGUSEYUkm83sFYSPlilxZi+BiIiIiEhXhgZ8rrnmGmzZsgULFy7Et99+i2XLluGWW26RPP7IkSM4cuQInn76aWzevBlvv/02FixYgJtvvtnIZRIRUYRj8IyIiIiIwk20UXe8detWLFiwAKtWrcLgwYMBAC+88AImTJiAp59+Gq1b+/ZF6N27Nz777DP3vzt16oQnnngC1157Lerr6xEdbdhyiYiIiIiIiIjChmEZPsuXL0d6ero72AMAo0ePht1ux4oVKxTfT2lpKVJTUyWDPTU1NSgrK/P6j4goEjidZq+AiIiIiIisyrCAT0FBAVq2bOl1W3R0NDIzM1FQUKDoPgoLC/HYY4/5LQObPXs20tLS3P/l5eUFtG4iolDx57M6mL0EIiIiIiKyKNUBn+nTp8Nms/n9b9u2bQEvrKysDBMnTkTPnj0xa9YsyeNmzJiB0tJS938HDx4M+LGJiEIBJ0jpJzaKQyuJiIiIKLyobopz991348Ybb/R7TMeOHZGbm4vjx4973V5fX4/i4mLk5ub6/fry8nKMGzcOKSkp+OKLLxATEyN5bFxcHOLiOF2FiIi065CVZPYSiIiIiIh0pTrgk52djezsbNnjhg8fjpKSEqxZswaDBg0CAPz0009wOBwYOnSo5NeVlZVh7NixiIuLw9dff434+Hi1SyQiCmkcGBV8No7pIiIiIqIwY1gOe48ePTBu3DhMmTIFK1euxK+//oqpU6fiyiuvdE/oOnz4MLp3746VK1cCaAz2jBkzBpWVlXjjjTdQVlaGgoICFBQUoKGhwailEhFZRk5qPIMPREREREQUMEPnnL///vuYOnUqRo0aBbvdjksvvRTPP/+8+/N1dXXYvn07qqqqAABr1651T/Dq3Lmz133t3bsX+fn5Ri6XiMg0Z3XJws5jFcjLTDR7KUREREREFAYMDfhkZmZi7ty5kp/Pz8+H02Ou8MiRI73+TUQUKV67fjDqHY2vf1F2+QyfhJgoo5dEREREREQhjGNJiIgsID4mCslxjTH4Jy7qLXv8uN7+m98TEREREVFkY8CHiMhixvTKxb45E/0eU1PPvmZERERERCSNAR8iohDkygYi49wyoqPZSyAiIiIi0owBHyKiEJQaH2P2EsLe/RN6mL0EIiIiIiLNGPAhIiIiIiIiIgozDPgQEYWgmnqH2UsgIiIiIiILY8CHiCgEpSWwpIuIiIiIiKQx4ENEFIJuP6eT2UsgIiIiIiILY8CHiCgEJcZyShcREREREUljwIeIiIiIiIiIKMww4ENEREREREREFGYY8CEisqis5Dizl0BERERERCGKAR8iIouKi+ZLNBERERERacOrCSKiENMuM9HsJRARERERkcUx4ENEZFG3nt3R7CUQEREREVGIYsCHiMiirhueL3r7geKq4C6EiIiIiIhCDgM+REQhpk16gtlLCEtPXNzb7CUQEREREemGAR8iohATZbeZvYSw1DIl3uwlEBERERHphgEfIqIQExPFgI8Rzu3eEu/ePMTsZRARERER6YIBHyKiEJOWEGP2EsJSlN2Gs7pkm70MIiIiIiJdMOBDRERERERERBRmGPAhIiLy8JezO2Jw+wyzl0FEREREFJBosxdARETqOM1eQJibMb6H2UsgIiIiIgoYM3yIiEJMbb3D7CUQEREREZHFMeBDRBRiTsvPNHsJRERERERkcQz4EBGFmKnndjZ7CUREREREZHEM+BARhRiOZSciIiIiIjkM+BARERERERERhRkGfIiIQkxMFF+6iYiIiIjIP141EBERERERERGFGQZ8iIiIiIiIiIjCDAM+RERERERERERhhgEfIiIiIiIiIqIww4APEREREREREVGYYcCHiIiIiIiIiCjMMOBDRERERERERBRmGPAhIiIiIiIi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FGYY8CEiIiIiIiIiCjMM+BARERHJuPHGG3HRRReZvQwiIiIixaLNXgARERGRmWw2m9/Pz5w5E8899xycTmeQVkREREQUOAZ8iIiIKKIdPXrU/fFHH32Ehx9+GNu3b3fflpycjOTkZDOWRkRERKQZS7qIiIgoouXm5rr/S0tLg81m87otOTnZp6Rr5MiRuPPOO3HXXXchIyMDOTk5eO2111BZWYnJkycjJSUFnTt3xvz5870ea/PmzRg/fjySk5ORk5OD6667DoWFhUH+jomIiCgSMOBDREREpME777yDrKwsrFy5EnfeeSduu+02XH755Tj99NOxdu1ajBkzBtdddx2qqqoAACUlJTj33HMxYMAArF69GgsWLMCxY8dwxRVXmPydEBERUThiwIeIiIhIg379+uHBBx9Ely5dMGPGDMTHxyMrKwtTpkxBly5d8PDDD6OoqAgbN24EALz44osYMGAAnnzySXTv3h0DBgzAm2++icWLF2PHjh0mfzdEREQUbtjDh4iIiEiDvn37uj+OiopCixYt0KdPH/dtOTk5AIDjx48DADZs2IDFixeL9gPavXs3unbtavCKiYiIKJIw4ENERESkQUxMjNe/bTab122u6V8OhwMAUFFRgQsuuAD//Oc/fe6rVatWBq6UiIiIIhEDPkRERERBMHDgQHz22WfIz89HdDRPwYiIiMhY7OFDREREFAR33HEHiouLcdVVV2HVqlXYvXs3vv/+e0yePBkNDQ1mL4+IiIjCDAM+REREREHQunVr/Prrr2hoaMCYMWPQp08f3HXXXUhPT4fdzlMyIiIi0pfN6XQ6zV4EERERERERERHph9tJRERERERERERhhgEfIiIiIiIiIqIww4APEREREREREVGYYcCHiIiIiIiIiCjMMOBDRERERERERBRmGPAhIiIiIiIiIgozDPgQEREREREREYUZBnyIiIiIiIiIiMIMAz5ERERERERERGGGAR8iIiIiIiIiojDDgA8RERERERERUZhhwIeIiIiIiIiIKMz8P44NS7N3GVH4AAAAAElFTkSuQmCC",
"text/plain": [
""
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import librosa\n",
"import matplotlib.pyplot as plt\n",
"import librosa.display\n",
"import IPython.display as ipd\n",
"\n",
"\n",
"audio, sr = librosa.load(sample_file)\n",
"plt.figure(figsize=(14, 5))\n",
"librosa.display.waveshow(audio, sr=sr)\n",
"\n",
"ipd.Audio(sample_file)"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "ba3bdf01-bc21-4b2e-9af7-89bf7d9315a6",
"metadata": {},
"source": [
"## Run inference pipeline\n",
"[back to top ⬆️](#Table-of-contents:)\n",
"\n",
"For running inference, we should provide a path to input audio to the pipeline"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "15694c5d-3f7e-49a5-a0ee-066fa04d5bf8",
"metadata": {},
"outputs": [],
"source": [
"%%capture\n",
"import time\n",
"\n",
"start = time.perf_counter()\n",
"diarization = pipeline(AUDIO_FILE)\n",
"end = time.perf_counter()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "79c5c09c-9ff5-424c-9258-43d871e1c198",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Diarization pipeline took 14.14 s\n"
]
}
],
"source": [
"print(f\"Diarization pipeline took {end - start:.2f} s\")"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "386b2cdd-0684-4094-bbbf-7402dafa0616",
"metadata": {},
"source": [
"The result of running the pipeline can be represented as a diagram indicating when each person speaks."
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "59c3af62-b48e-4887-9556-56f50034815a",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABiIAAADyCAYAAADAzN2uAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAejklEQVR4nO3de5CV9WE+8OewXKTuBVncXYir4iVeEojGpopJjUEFlXFEqak6GolGJgzSEdPIxKLEWE3DjLFJ1eZSvDSIcWzUJKY2FwvWBDTV1lA0pZHiaH7IohCWS7KAsL8/HLbZLC6L7Ltnd/l8ZnaGPe973vc5h+/5nrPnOed9S62tra0BAAAAAAAowIByBwAAAAAAAPovRQQAAAAAAFAYRQQAAAAAAFAYRQQAAAAAAFAYRQQAAAAAAFAYRQQAAAAAAFAYRQQAAAAAAFAYRQQAAAAAAFAYRQQAAAAAAFAYRQQAAAAAAFAYRQQAAAAAAFAYRQQAAAAAAFAYRQQAAAAAAFAYRQQAAAAAAFAYRQQAAAAAAFAYRQQAAAAAAFCYfl9EvPHGG5k+fXoOPfTQDBkyJA0NDZk4cWJ+9rOfJUkOP/zwlEqllEqlHHjggfngBz+Yhx9+uO36n//859uW//7Pscce22FfDz74YCoqKjJjxowOyxYvXpxSqZQNGza0XbZ69eqMGTMmp512Wpqbm9vW2d3PmjVrOuSpqKhIY2Njpk2blvXr13f5PmlpacmMGTNSW1ubysrKTJkyJU1NTe3WefXVVzNp0qT80R/9Uerq6vLZz342b731Vpf3sb8xzjrqyjj7i7/4i5x00kkZMmRITjjhhC5ve39lnHW0p3H2i1/8IpdcckkaGxszdOjQHHfccfnKV77S5e0DAAAAsO8G7usGdqxb1x05uqSitnavrzNlypRs27Yt999/f4444og0NTXlySefzLrfy/2FL3whV199dTZu3Jjbb789f/7nf573vOc9OfXUU5Mk73vf+/KTn/yk3XYHDux4182fPz/XX399vv71r+f222/PAQcc8I65Vq5cmbPOOivHH398Hn744QwdOrRt2YoVK1JdXd1u/bq6urZ/78qzY8eO/PKXv8yVV16Z5ubmPPTQQ126T2bNmpUf/OAHefjhh1NTU5NrrrkmF154YdubmTt27MikSZPS0NCQJUuW5PXXX88nPvGJDBo0KLfddluX9tGdmrc29+j+aobU7PV1jLOO9jTOdrnyyivz7LPPZtmyZV3abpF+s2Vbj+3roAMH7/V1jLOO9jTOnn/++dTV1WXBggVpbGzMkiVLMm3atFRUVOSaa67p0j4AAAAA2Df7XESsGXtCN8Tomvf8v9f2av0NGzbk6aefzuLFi/PRj340SXLYYYflT/7kT9qtV1VVlYaGhjQ0NOSuu+7KggUL8v3vf7/tjbuBAwemoaGh032tWrUqS5YsyXe+850sWrQojzzySC699NLdrrts2bJMnDgx48ePz/3339/hTcC6uroMGzbsHff1+3ne85735KKLLsq9997bab5dmpubM3/+/CxcuDDjx49Pktx777057rjj8swzz+SUU07Jj370o7z00kv5yU9+kvr6+pxwwgm55ZZbMnv27Hz+85/P4MF7/wbqvrj8id3fj0X53uQf7NX6xllHXRlnSfLVr341yduf9O8NRcQ58xb12L6euXniXq1vnHXUlXF25ZVXtrvOEUcckaVLl+aRRx5RRAAAAAD0kH59aKbKyspUVlbmsccey9atW7t0nYEDB2bQoEHZtm3vPhl97733ZtKkSampqclll12W+fPn73a9JUuW5KMf/WimTJmSBQsW7PaTyHvjlVdeyQ9/+MMulwPPP/98tm/fnjPPPLPtsmOPPTaHHnpoli5dmiRZunRpxowZk/r6+rZ1Jk6cmI0bN+bFF1/cp7z9kXHWUVfGGXvHOOvo3Y6z5ubmDB8+fJ+yAgAAANB1/bqIGDhwYO67777cf//9GTZsWD784Q/nhhtueMdPXm/bti1f/OIX09zc3Pbp2iT5r//6r7Y3AXf9fPrTn25bvnPnztx333257LLLkiQXX3xxfvrTn2bVqlUd9nHBBRfkvPPOy5133plSqbTbHIcccki7fb3vfe9rt3xXnqFDh2b06NF58cUXM3v27C7dJ2vWrMngwYM7fEK5vr6+7bjta9asaVdC7Fq+axntGWcddWWcsXeMs47ezThbsmRJHnrooUybNq1L+wAAAABg3+3zoZl6uylTpmTSpEl5+umn88wzz+SJJ57IvHnz8g//8A+ZOnVqkmT27NmZM2dOWlpaUllZmb/5m7/JpEmT2rZxzDHH5Hvf+1677f7+Mc9//OMfZ8uWLTn33HOTJCNGjMhZZ52Ve+65J7fccku7651//vl5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",
"text/plain": [
""
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"diarization"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "1087f65a-30f7-427b-bc40-d2787c23dd4c",
"metadata": {},
"source": [
"We can also print each time frame and corresponding speaker:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "0c1f2eab-b001-45dd-8969-ad03e9676144",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"start=6.7s stop=7.1s speaker_SPEAKER_00\n",
"start=7.6s stop=8.6s speaker_SPEAKER_00\n",
"start=8.6s stop=10.0s speaker_SPEAKER_02\n",
"start=9.8s stop=11.0s speaker_SPEAKER_00\n",
"start=10.6s stop=14.7s speaker_SPEAKER_02\n",
"start=14.3s stop=17.9s speaker_SPEAKER_01\n",
"start=17.9s stop=21.5s speaker_SPEAKER_02\n",
"start=18.3s stop=18.4s speaker_SPEAKER_01\n",
"start=21.7s stop=28.6s speaker_SPEAKER_01\n",
"start=27.8s stop=29.5s speaker_SPEAKER_02\n"
]
}
],
"source": [
"for turn, _, speaker in diarization.itertracks(yield_label=True):\n",
" print(f\"start={turn.start:.1f}s stop={turn.end:.1f}s speaker_{speaker}\")"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "a253dfe2-6b05-4bcc-a18e-8f7f7a7c7fbe",
"metadata": {},
"source": [
"## Convert model to OpenVINO Intermediate Representation format\n",
"[back to top ⬆️](#Table-of-contents:)\n",
"\n",
"For best results with OpenVINO, it is recommended to convert the model to OpenVINO IR format. OpenVINO supports PyTorch via ONNX conversion. We will use `torch.onnx.export` for exporting the ONNX model from PyTorch. We need to provide initialized model's instance and example of inputs for shape inference. We will use `ov.convert_model` functionality to convert the ONNX models. The `mo.convert_model` Python function returns an OpenVINO model ready to load on the device and start making predictions. We can save it on disk for the next usage with `ov.save_model`."
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "fcdae729-8a81-4c96-8c0a-67685b6d89b4",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model successfully converted to IR and saved to pyannote-segmentation.xml\n"
]
}
],
"source": [
"from pathlib import Path\n",
"import torch\n",
"import openvino as ov\n",
"\n",
"core = ov.Core()\n",
"\n",
"ov_speaker_segmentation_path = Path(\"pyannote-segmentation.xml\")\n",
"\n",
"if not ov_speaker_segmentation_path.exists():\n",
" onnx_path = ov_speaker_segmentation_path.with_suffix(\".onnx\")\n",
" torch.onnx.export(\n",
" pipeline._segmentation.model,\n",
" torch.zeros((1, 1, 80000)),\n",
" onnx_path,\n",
" input_names=[\"chunks\"],\n",
" output_names=[\"outputs\"],\n",
" dynamic_axes={\"chunks\": {0: \"batch_size\", 2: \"wave_len\"}},\n",
" )\n",
" ov_speaker_segmentation = ov.convert_model(onnx_path)\n",
" ov.save_model(ov_speaker_segmentation, str(ov_speaker_segmentation_path))\n",
" print(f\"Model successfully converted to IR and saved to {ov_speaker_segmentation_path}\")\n",
"else:\n",
" ov_speaker_segmentation = core.read_model(ov_speaker_segmentation_path)\n",
" print(f\"Model successfully loaded from {ov_speaker_segmentation_path}\")"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "071cbdcc-0bd4-42b0-bf73-5127f2e63b25",
"metadata": {},
"source": [
"## Select inference device\n",
"[back to top ⬆️](#Table-of-contents:)\n",
"\n",
"select device from dropdown list for running inference using OpenVINO"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "2783a6f6-a447-4abb-b2c3-b0d6918679b2",
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "21d28064d0b94b558ee5c64a640df9ea",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"Dropdown(description='Device:', index=3, options=('CPU', 'GPU.0', 'GPU.1', 'AUTO'), value='AUTO')"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import ipywidgets as widgets\n",
"\n",
"device = widgets.Dropdown(\n",
" options=core.available_devices + [\"AUTO\"],\n",
" value=\"AUTO\",\n",
" description=\"Device:\",\n",
" disabled=False,\n",
")\n",
"\n",
"device"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "42ff13a0-f3f1-49ea-8314-442f55292912",
"metadata": {},
"source": [
"## Replace segmentation model with OpenVINO\n",
"[back to top ⬆️](#Table-of-contents:)\n"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "02b53cab-e623-4e38-8974-48d1ab352228",
"metadata": {},
"outputs": [],
"source": [
"core = ov.Core()\n",
"\n",
"ov_seg_model = core.compile_model(ov_speaker_segmentation, device.value)\n",
"infer_request = ov_seg_model.create_infer_request()\n",
"ov_seg_out = ov_seg_model.output(0)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "828bf60e-2749-44da-92dc-dec0bed10c50",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np\n",
"\n",
"\n",
"def infer_segm(chunks: torch.Tensor) -> np.ndarray:\n",
" \"\"\"\n",
" Inference speaker segmentation mode using OpenVINO\n",
" Parameters:\n",
" chunks (torch.Tensor) input audio chunks\n",
" Return:\n",
" segments (np.ndarray)\n",
" \"\"\"\n",
" res = ov_seg_model(chunks)\n",
" return res[ov_seg_out]\n",
"\n",
"\n",
"pipeline._segmentation.infer = infer_segm"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "c853d7c9-c435-4c62-b9d2-8c973c84ece0",
"metadata": {},
"source": [
"## Run speaker diarization with OpenVINO\n",
"[back to top ⬆️](#Table-of-contents:)\n"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "bafcf1a7-e174-42f8-8993-8e6536fdea18",
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Model is not converging. Current: 16444.281598619917 is not greater than 16444.330820454463. Delta is -0.04922183454618789\n",
"Model is not converging. Current: 16444.281598619917 is not greater than 16444.330820454463. Delta is -0.04922183454618789\n"
]
}
],
"source": [
"start = time.perf_counter()\n",
"diarization = pipeline(AUDIO_FILE)\n",
"end = time.perf_counter()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "da8bbc5d-789f-4c1c-a777-4eda3c4f4e29",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Diarization pipeline took 13.58 s\n"
]
}
],
"source": [
"print(f\"Diarization pipeline took {end - start:.2f} s\")"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "8d579663-e109-49dd-953d-a1ee4b9a38fe",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABiIAAADyCAYAAADAzN2uAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuNSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/xnp5ZAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAejklEQVR4nO3de5CV9WE+8OewXKTuBVncXYir4iVeEojGpopJjUEFlXFEqak6GolGJgzSEdPIxKLEWE3DjLFJ1eZSvDSIcWzUJKY2FwvWBDTV1lA0pZHiaH7IohCWS7KAsL8/HLbZLC6L7Ltnd/l8ZnaGPe973vc5h+/5nrPnOed9S62tra0BAAAAAAAowIByBwAAAAAAAPovRQQAAAAAAFAYRQQAAAAAAFAYRQQAAAAAAFAYRQQAAAAAAFAYRQQAAAAAAFAYRQQAAAAAAFAYRQQAAAAAAFAYRQQAAAAAAFAYRQQAAAAAAFAYRQQAAAAAAFAYRQQAAAAAAFAYRQQAAAAAAFAYRQQAAAAAAFAYRQQAAAAAAFAYRQQAAAAAAFCYfl9EvPHGG5k+fXoOPfTQDBkyJA0NDZk4cWJ+9rOfJUkOP/zwlEqllEqlHHjggfngBz+Yhx9+uO36n//859uW//7Pscce22FfDz74YCoqKjJjxowOyxYvXpxSqZQNGza0XbZ69eqMGTMmp512Wpqbm9vW2d3PmjVrOuSpqKhIY2Njpk2blvXr13f5PmlpacmMGTNSW1ubysrKTJkyJU1NTe3WefXVVzNp0qT80R/9Uerq6vLZz342b731Vpf3sb8xzjrqyjj7i7/4i5x00kkZMmRITjjhhC5ve39lnHW0p3H2i1/8IpdcckkaGxszdOjQHHfccfnKV77S5e0DAAAAsO8G7usGdqxb1x05uqSitnavrzNlypRs27Yt999/f4444og0NTXlySefzLrfy/2FL3whV199dTZu3Jjbb789f/7nf573vOc9OfXUU5Mk73vf+/KTn/yk3XYHDux4182fPz/XX399vv71r+f222/PAQcc8I65Vq5cmbPOOivHH398Hn744QwdOrRt2YoVK1JdXd1u/bq6urZ/78qzY8eO/PKXv8yVV16Z5ubmPPTQQ126T2bNmpUf/OAHefjhh1NTU5NrrrkmF154YdubmTt27MikSZPS0NCQJUuW5PXXX88nPvGJDBo0KLfddluX9tGdmrc29+j+aobU7PV1jLOO9jTOdrnyyivz7LPPZtmyZV3abpF+s2Vbj+3roAMH7/V1jLOO9jTOnn/++dTV1WXBggVpbGzMkiVLMm3atFRUVOSaa67p0j4AAAAA2Df7XESsGXtCN8Tomvf8v9f2av0NGzbk6aefzuLFi/PRj340SXLYYYflT/7kT9qtV1VVlYaGhjQ0NOSuu+7KggUL8v3vf7/tjbuBAwemoaGh032tWrUqS5YsyXe+850sWrQojzzySC699NLdrrts2bJMnDgx48ePz/3339/hTcC6uroMGzbsHff1+3ne85735KKLLsq9997bab5dmpubM3/+/CxcuDDjx49Pktx777057rjj8swzz+SUU07Jj370o7z00kv5yU9+kvr6+pxwwgm55ZZbMnv27Hz+85/P4MF7/wbqvrj8id3fj0X53uQf7NX6xllHXRlnSfLVr341yduf9O8NRcQ58xb12L6euXniXq1vnHXUlXF25ZVXtrvOEUcckaVLl+aRRx5RRAAAAAD0kH59aKbKyspUVlbmsccey9atW7t0nYEDB2bQoEHZtm3vPhl97733ZtKkSampqclll12W+fPn73a9JUuW5KMf/WimTJmSBQsW7PaTyHvjlVdeyQ9/+MMulwPPP/98tm/fnjPPPLPtsmOPPTaHHnpoli5dmiRZunRpxowZk/r6+rZ1Jk6cmI0bN+bFF1/cp7z9kXHWUVfGGXvHOOvo3Y6z5ubmDB8+fJ+yAgAAANB1/bqIGDhwYO67777cf//9GTZsWD784Q/nhhtueMdPXm/bti1f/OIX09zc3Pbp2iT5r//6r7Y3AXf9fPrTn25bvnPnztx333257LLLkiQXX3xxfvrTn2bVqlUd9nHBBRfkvPPOy5133plSqbTbHIcccki7fb3vfe9rt3xXnqFDh2b06NF58cUXM3v27C7dJ2vWrMngwYM7fEK5vr6+7bjta9asaVdC7Fq+axntGWcddWWcsXeMs47ezThbsmRJHnrooUybNq1L+wAAAABg3+3zoZl6uylTpmTSpEl5+umn88wzz+SJJ57IvHnz8g//8A+ZOnVqkmT27NmZM2dOWlpaUllZmb/5m7/JpEmT2rZxzDHH5Hvf+1677f7+Mc9//OMfZ8uWLTn33HOTJCNGjMhZZ52Ve+65J7fccku7651//vl59NFH8/TTT+dP//RPd5v56aefTlVVVdvvgwYNard8V56WlpYsWLAgL7zwQmbOnLn3dw7dxjijJxhn+2b58uU5//zzM3fu3EyYMKGQfQAAAADQ0T4XEQ3LXuiGGMU64IADctZZZ+Wss87KjTfemE996lOZO3du2xt3n/3sZzN16tRUVlamvr6+wyd7Bw8enKOOOuodtz9//vysX7++3Qlad+7cmWXLluXmm2/OgAH/98WTr3/967n++utzzjnn5J//+Z9z2mmnddje6NGjOz2m+u/n2fUm480339zhTcLdaWhoyLZt27Jhw4Z2+2hqamo7TntDQ0N+/vOft7teU1NT27Ke9q1zFvb4Pt8N4+z/dGWc9UZPXP+xckfYI+Ps/+zNOHvppZdyxhlnZNq0aZkzZ84etw0AAABA99nnIqKitrY7cvSo448/Po899ljb7yNGjOj0jbnOrFu3Lt/97nfz7W9/u90hR3bs2JGPfOQj+dGPfpSzzz677fJSqZRvfOMbGTBgQM4999z84Ac/aDvx7Ls1Z86cjB8/PtOnT8+oUaM6Xfekk07KoEGD8uSTT2bKlClJkhUrVuTVV1/NuHHjkiTjxo3LrbfemrVr16auri7J25+Srq6uzvHHH79PWd+NmiE1Pb7P7mCcdT7OeqODDuzZE7F3B+Nsz+PsxRdfzPjx43PFFVfk1ltv3ad8AAAAAOy9fn1opnXr1uWiiy7KlVdembFjx6aqqirPPfdc5s2bl/PPP7/L23nrrbc6HG+8VCqlvr4+3/rWt1JbW5uPf/zjHT55fO6552b+/Pnt3rjbdd2vfe1rqaioaHvz7vTTT29bvnbt2rS0tLS7Tm1tbYdDmuwybty4jB07NrfddlvuvPPOTm9LTU1Nrrrqqlx33XUZPnx4qqurM3PmzIwbNy6nnHJKkmTChAk5/vjjc/nll2fevHlZs2ZN5syZkxkzZmTIkCGdbn9/ZJx11JVxliQvv/xyNm/enDVr1uR3v/tdXnjhhSRvv7ne1RMW7y+Ms466Ms6WL1+e8ePHZ+LEibnuuuvabntFRUUOPvjgTrcPAAAAQPfo10VEZWVlTj755Nxxxx1ZuXJltm/fnsbGxlx99dW54YYburydF198MSNHjmx32ZAhQ9LS0pJ77rknF1xwwW5P1DplypRcfvnlefPNNzssK5VKueuuuzJgwIBMmjQpjz/+eNs2jjnmmA7rL126tN0buH9o1qxZmTp1ambPnp3GxsZOb88dd9yRAQMGZMqUKdm6dWsmTpyYu+++u215RUVFHn/88UyfPj3jxo3LgQcemCuuuCJf+MIXOt3u/so42709jbMk+dSnPpWnnnqq7fcTTzwxSbJq1aocfvjhnW5/f2Oc7d6extk//dM/5Y033siCBQuyYMGCtssPO+ywvPLKK51uGwAAAIDuUWptbW0tdwgAAAAAAKB/GrDnVQAAAAAAAN4dRUQ/88ADD6SysnK3P79/8lnYF8YZPcE4AwAAAOgfHJqpn9m0aVOampp2u2zQoEE57LDDejgR/ZFxRk8wzgAAAAD6B0UEAAAAAABQGIdmAgAAAAAACqOIAAAAAAAACjOwKyvt3Lkzq1evTlVVVUqlUtGZAAAAAACAXqy1tTWbNm3KqFGjMmBA59956FIRsXr16jQ2NnZLOAAAAAAAoH947bXXcsghh3S6TpeKiKqqqrYNVldX73syAAAAAACgz9q4cWMaGxvb+oPOdKmI2HU4purqakUEAAAAAACQJF06nYOTVQMAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIVRRAAAAAAAAIXZqyJix9q1ReXouK+mpmy8/cvZ0dTUY/vsDfvu7Zr+99e589Zvpel/f13uKPuFNzdtzTcXvZw3N20td5R31BcyAn2fuQZ6hsca9H37+jhe37I+C3/5QNa3rO/mZADQv3kO7dzeFRFvvFFUjo77Wrs2m758R4+WH71h373d2l83ZcG2uqz9tZKmJ7y5aWvmL17Zq98M6AsZgb7PXAM9w2MN+r59fRz/pmV9vr1iYX7jTRQA2CueQzvn0EwAAAAAAEBhFBEAAAAAAEBhFBEAAAAAAEBhBu7NyjubN2bHunVFZWm/rw3NPbKfPWXoqdvbV7Ru2pwk2bxtZ36zZVuZ0/R/m363vdwRumzT77YbE0Bh+tJ8CP2B53Xou7rrOXPzts1p3lr+v8sBoK/YvG1zuSP0antVRKz/5JXZPmD/+RLFuosvKXeEXqe59tDkgpsy6+n1ydOLyh2HXmTmPz5X7ggAQDfxvA7cuOSvyh0BAOhH9p9WAQAAAAAA6HGKCAAAAAAAoDCKCAAAAAAAoDB7dY6I4ffek9oP/XFRWdrZ/tIvy36OhtpvP5hBxx9X1gy9zbpnlic/b8kdfzo8x477QLnj9Hsvr9nUZ47R/Hef+OMc1VBV7hhAP9WX5kPoDzyvQ9/VXc+Zt5x6aw6vGd0NiQBg//BK8yrnWOrEXhURA2qqU1FbW1SWdnYMq+mR/XRmwLCaHru9fUWpqjJJSyoHD8hBBw4ud5x+r2rooHJH6LKqoYOMCaAwfWk+hP7A8zr0Xd31nFk5uDI1Q8r/dzkA9BWVgyvLHaFXc2gmAAAAAACgMIoIAAAAAACgMIoIAAAAAACgMIoIAAAAAACgMHtVRFQcfHBROTruq64uVdfNSkVdXY/tszfsu7erO6Q+lw1em7pD6ssdZb8wompIrjr9yIyoGlLuKO+oL2QE+j5zDfQMjzXo+/b1cXzQAcNz8TGX5qADhndzMgDo3zyHdq7U2trauqeVNm7cmJqamjQ3N6e6uroncgEAAAAAAL3U3vQGDs0EAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBAAAAAAAURhEBZbSjqSkbb/9ydjQ1lTtKn+E+g/Ja37I+C3/5QNa3rC93FKCbFP247sr2zS0AAPuXNzdtzTcXvZw3N20tdxT2wbq9+P9TREAZ7Vi7Npu+fEd2rF1b7ih9hvsMyus3Levz7RUL8xtvFkK/UfTjuivbN7cAAOxf3ty0NfMXr1RE9HHrNisiAAAAAACAXkARAQAAAAAAFGZguQMAyc4Nzdmxbl25Y/QJOzc0lzsCkGTzts1p3urxCP3B5m2be2w/7zRv9FQGAAB6l02/257fbNlW7hi8S5t+91aX11VEQC+w7uJLyh0BYK/cuOSvyh0B6GPMGwAA/KGZ//hcuSOwD97auqXL6zo0EwAAAAAAUBhFBAAAAAAAUBhFBAAAAAAAUBjniIBeoPbbD2bQ8ceVO0afsP2lXzqnBvQCt5x6aw6vGV3uGEA3eKV5VY+cv6GzeaOnMgAA0Lv83Sf+OEc1VJU7Bu/SC79anfFf6tq6igjoBQYMq0lFbW25Y/QJO4bVlDsCkKRycGVqhng8Qn9QObiyx/bzTvNGT2UAAKB3qRo6KAcdOLjcMXiXqoZ2vV5waCYAAAAAAKAwiggAAAAAAKAwiggAAAAAAKAwiggAAAAAAKAwiggoo4q6ulRdNysVdXXljtJnuM+gvA46YHguPubSHHTA8HJHAbpJ0Y/rrmzf3AIAsH8ZUTUkV51+ZEZUDSl3FPZBbWXX//9Kra2trXtaaePGjampqUlzc3Oqq6v3KRwAAAAAANC37U1v4BsRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYRQRAAAAAABAYQZ2ZaXW1tYkycaNGwsNAwAAAAAA9H67+oJd/UFnulREbNq0KUnS2Ni4D7EAAAAAAID+ZNOmTampqel0nVJrF+qKnTt3ZvXq1amqqkqpVOq2gEDXbNy4MY2NjXnttddSXV1d7jgAfZo5FaB7mE8Buo85FeiLWltbs2nTpowaNSoDBnR+FogufSNiwIABOeSQQ7olHPDuVVdXe0EC0E3MqQDdw3wK0H3MqUBfs6dvQuziZNUAAAAAAEBhFBEAAAAAAEBhFBHQBwwZMiRz587NkCFDyh0FoM8zpwJ0D/MpQPcxpwL9XZdOVg0AAAAAAPBu+EYEAAAAAABQGEUEAAAAAABQGEUEAAAAAABQGEUEAAAAAABQGEUE9CL/9m//lvPOOy+jRo1KqVTKY4891m55a2trbrrppowcOTJDhw7NmWeemV/96lflCQvQy+1pTp06dWpKpVK7n7PPPrs8YQF6qS9+8Yv50Ic+lKqqqtTV1WXy5MlZsWJFu3VaWloyY8aM1NbWprKyMlOmTElTU1OZEgP0Xl2ZU08//fQOr1E//elPlykxQPdRREAvsmXLlnzgAx/IXXfdtdvl8+bNy1e/+tV87Wtfy7PPPpsDDzwwEydOTEtLSw8nBej99jSnJsnZZ5+d119/ve3nwQcf7MGEAL3fU089lRkzZuSZZ57Jj3/842zfvj0TJkzIli1b2taZNWtWvv/97+fhhx/OU089ldWrV+fCCy8sY2qA3qkrc2qSXH311e1eo86bN69MiQG6T6m1tbW13CGAjkqlUh599NFMnjw5ydvfhhg1alQ+85nP5C//8i+TJM3Nzamvr899992Xiy++uIxpAXq3P5xTk7e/EbFhw4YO35QA4J298cYbqaury1NPPZXTTjstzc3NOfjgg7Nw4cL82Z/9WZLkv//7v3Pcccdl6dKlOeWUU8qcGKD3+sM5NXn7GxEnnHBC/vZv/7a84QC6mW9EQB+xatWqrFmzJmeeeWbbZTU1NTn55JOzdOnSMiYD6LsWL16curq6HHPMMZk+fXrWrVtX7kgAvVpzc3OSZPjw4UmS559/Ptu3b2/3GvXYY4/NoYce6jUqwB784Zy6ywMPPJARI0bk/e9/fz73uc/lt7/9bTniAXSrgeUOAHTNmjVrkiT19fXtLq+vr29bBkDXnX322bnwwgszevTorFy5MjfccEPOOeecLF26NBUVFeWOB9Dr7Ny5M9dee20+/OEP5/3vf3+St1+jDh48OMOGDWu3rteoAJ3b3ZyaJJdeemkOO+ywjBo1KsuWLcvs2bOzYsWKPPLII2VMC7DvFBEAwH7p9w9pN2bMmIwdOzZHHnlkFi9enDPOOKOMyQB6pxkzZmT58uX56U9/Wu4oAH3eO82p06ZNa/v3mDFjMnLkyJxxxhlZuXJljjzyyJ6OCdBtHJoJ+oiGhoYkSVNTU7vLm5qa2pYB8O4dccQRGTFiRF5++eVyRwHoda655po8/vjjWbRoUQ455JC2yxsaGrJt27Zs2LCh3fpeowK8s3eaU3fn5JNPThKvUYE+TxEBfcTo0aPT0NCQJ598su2yjRs35tlnn824cePKmAygf/j1r3+ddevWZeTIkeWOAtBrtLa25pprrsmjjz6af/3Xf83o0aPbLT/ppJMyaNCgdq9RV6xYkVdffdVrVIA/sKc5dXdeeOGFJPEaFejzHJoJepHNmze3+5TDqlWr8sILL2T48OE59NBDc+211+av//qvc/TRR2f06NG58cYbM2rUqEyePLl8oQF6qc7m1OHDh+fmm2/OlClT0tDQkJUrV+b666/PUUcdlYkTJ5YxNUDvMmPGjCxcuDDf/e53U1VV1Xbeh5qamgwdOjQ1NTW56qqrct1112X48OGprq7OzJkzM27cuJxyyillTg/Qu+xpTl25cmUWLlyYc889N7W1tVm2bFlmzZqV0047LWPHji1zeoB9U2ptbW0tdwjgbYsXL87HPvaxDpdfccUVue+++9La2pq5c+fmG9/4RjZs2JCPfOQjufvuu/Pe9763DGkBerfO5tS///u/z+TJk/Of//mf2bBhQ0aNGpUJEybklltuSX19fRnSAvROpVJpt5ffe++9mTp1apKkpaUln/nMZ/Lggw9m69atmThxYu6++26HZgL4A3uaU1977bVcdtllWb58ebZs2ZLGxsZccMEFmTNnTqqrq3s4LUD3UkQAAAAAAACFcY4IAAAAAACgMIoIAAAAAACgMIoIAAAAAACgMIoIAAAAAACgMIoIAAAAAACgMIoIAAAAAACgMIoIAAAAAACgMIoIAAAAAACgMIoIAACgnalTp2by5MnljgEAAPQTA8sdAAAA6DmlUqnT5XPnzs1XvvKVtLa29lAiAACgv1NEAADAfuT1119v+/dDDz2Um266KStWrGi7rLKyMpWVleWIBgAA9FMOzQQAAPuRhoaGtp+ampqUSqV2l1VWVnY4NNPpp5+emTNn5tprr81BBx2U+vr6fPOb38yWLVvyyU9+MlVVVTnqqKPyxBNPtNvX8uXLc84556SysjL19fW5/PLL8+abb/bwLQYAAMpNEQEAAOzR/fffnxEjRuTnP/95Zs6cmenTp+eiiy7Kqaeemv/4j//IhAkTcvnll+e3v/1tkmTDhg0ZP358TjzxxDz33HP5l3/5lzQ1NeXjH/94mW8JAADQ0xQRAADAHn3gAx/InDlzcvTRR+dzn/tcDjjggIwYMSJXX311jj766Nx0001Zt25dli1bliS58847c+KJJ+a2227LsccemxNPPDH33HNPFi1alP/5n/8p860BAAB6knNEAAAAezR27Ni2f1dUVKS2tjZjxoxpu6y+vj5Jsnbt2iTJL37xiyxatGi355tYuXJl3vve9xacGAAA6C0UEQAAwB4NGjSo3e+lUqndZaVSKUmyc+fOJMnmzZtz3nnn5Utf+lKHbY0cObLApAAAQG+jiAAAALrdBz/4wXznO9/J4YcfnoED/dkBAAD7M+eIAAAAut2MGTOyfv36XHLJJfn3f//3rFy5Mj/84Q/zyU9+Mjt27Ch3PAAAoAcpIgAAgG43atSo/OxnP8uOHTsyYcKEjBkzJtdee22GDRuWAQP8GQIAAPuTUmtra2u5QwAAAAAAAP2TjyIBAAAAAACFUUQAAAAAAACFUUQAAAAAAACFUUQAAAAAAACFUUQAAAAAAACFUUQAAAAAAACFUUQAAAAAAACFUUQAAAAAAACFUUQAAAAAAACFUUQAAAAAAACFUUQAAAAAAACF+f/v8nFo8iBVTQAAAABJRU5ErkJggg==",
"text/plain": [
""
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"diarization"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "6d011188-23b9-4420-a6ad-68d76e895f64",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"start=6.7s stop=7.1s speaker_SPEAKER_00\n",
"start=7.6s stop=8.6s speaker_SPEAKER_00\n",
"start=8.6s stop=10.0s speaker_SPEAKER_02\n",
"start=9.8s stop=11.0s speaker_SPEAKER_00\n",
"start=10.6s stop=14.7s speaker_SPEAKER_02\n",
"start=14.3s stop=17.9s speaker_SPEAKER_01\n",
"start=17.9s stop=21.5s speaker_SPEAKER_02\n",
"start=18.3s stop=18.4s speaker_SPEAKER_01\n",
"start=21.7s stop=28.6s speaker_SPEAKER_01\n",
"start=27.8s stop=29.5s speaker_SPEAKER_02\n"
]
}
],
"source": [
"for turn, _, speaker in diarization.itertracks(yield_label=True):\n",
" print(f\"start={turn.start:.1f}s stop={turn.end:.1f}s speaker_{speaker}\")"
]
},
{
"attachments": {},
"cell_type": "markdown",
"id": "2baa3f21-c031-4c3b-878d-0064de5480d4",
"metadata": {},
"source": [
"Nice! As we can see, the result preserves the same level of accuracy!"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.10"
},
"openvino_notebooks": {
"imageUrl": "https://github.com/openvinotoolkit/openvino_notebooks/blob/latest/notebooks/pyannote-speaker-diarization/pyannote-speaker-diarization.png?raw=true",
"tags": {
"categories": [
"Model Demos"
],
"libraries": [],
"other": [],
"tasks": [
"Voice Activity Detection"
]
}
},
"vscode": {
"interpreter": {
"hash": "cec18e25feb9469b5ff1085a8097bdcd86db6a4ac301d6aeff87d0f3e7ce4ca5"
}
},
"widgets": {
"application/vnd.jupyter.widget-state+json": {
"state": {},
"version_major": 2,
"version_minor": 0
}
}
},
"nbformat": 4,
"nbformat_minor": 5
}