whylabs/whylogs-python

View on GitHub
python/examples/experimental/whylogs_Audio_examples.ipynb

Summary

Maintainability
Test Coverage
{
  "cells": [
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        ">### 🚩 *Create a free WhyLabs account to get more value out of whylogs!*<br> \n",
        ">*Did you know you can store, visualize, and monitor whylogs profiles with the [WhyLabs Observability Platform](https://whylabs.ai/whylogs-free-signup?utm_source=whylogs-Github&utm_medium=whylogs-example&utm_campaign=Audio)? Sign up for a [free WhyLabs account](https://whylabs.ai/whylogs-free-signup?utm_source=whylogs-Github&utm_medium=whylogs-example&utm_campaign=Audio) to leverage the power of whylogs and WhyLabs together!*"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "# Extracting and Monitoring Audio Samples"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {},
      "source": [
        "[![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/whylabs/whylogs/blob/mainline/python/examples/experimental/whylogs_Audio_examples.ipynb)"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {
        "id": "R8JfJ7PgytuK"
      },
      "source": [
        "This notebook demonstrates how to extract features from audio samples for the purpose of monitoring for drift/quality. \n",
        "\n",
        "*   The audio sample data is taken from Kaggle\n",
        "*   The feature extraction is done using pyAudioAnalysis (https://github.com/tyiannak/pyAudioAnalysis/wiki/3.-Feature-Extraction) \n",
        "*   The logging of features is done by whylogs (https://github.com/whylabs/whylogs) \n",
        "\n",
        "For a full list of features that we extract and in-depth explanation of the pyAudioAnalysis set up, please refer to this blog post by the pyAudioAnalysis author: https://medium.com/behavioral-signals-ai/intro-to-audio-analysis-recognizing-sounds-using-machine-learning-20fd646a0ec5"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": 2,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "TlnPId8BDQQx",
        "outputId": "d8e90727-b274-4db6-8f90-b7fcd0254c55"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "\n",
            "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip available: \u001b[0m\u001b[31;49m22.3.1\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m23.0\u001b[0m\n",
            "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n",
            "Note: you may need to restart the kernel to use updated packages.\n"
          ]
        }
      ],
      "source": [
        "# Note: you may need to restart the kernel to use updated packages.\n",
        "%pip install whylogs pyAudioAnalysis eyed3 pydub"
      ]
    },
    {
      "attachments": {},
      "cell_type": "markdown",
      "metadata": {
        "id": "MWTwAYftyUkL"
      },
      "source": [
        "**We will use Kaggle to get audio samples from a public Audio MNIST dataset.**\n",
        "\n",
        "To set up Kaggle in Colab: https://www.kaggle.com/general/74235 "
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/",
          "height": 91
        },
        "id": "Sqbvnzpz2q4Z",
        "outputId": "329c1007-ceaf-4c83-8cf3-87173fc85612"
      },
      "outputs": [],
      "source": [
        "! pip install -q kaggle\n",
        "from google.colab import files\n",
        "files.upload()"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "Chy903zH6-FR",
        "outputId": "afc9a9e0-9026-47a7-eedb-43931f9a7a22"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Downloading free-spoken-digit-dataset-fsdd.zip to /content\n",
            "\r  0% 0.00/15.5M [00:00<?, ?B/s]\r 32% 5.00M/15.5M [00:00<00:00, 34.9MB/s]\n",
            "\r100% 15.5M/15.5M [00:00<00:00, 67.7MB/s]\n"
          ]
        }
      ],
      "source": [
        "! kaggle datasets download -d joserzapata/free-spoken-digit-dataset-fsdd"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "ZuIBKryp73nX",
        "outputId": "43541f14-41b8-4157-8fc1-e1c8fc68e882"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "replace ./.gitignore? [y]es, [n]o, [A]ll, [N]one, [r]ename: A\n"
          ]
        }
      ],
      "source": [
        "!unzip -q /content/free-spoken-digit-dataset-fsdd.zip -d ."
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "4XehuqoyE-ho"
      },
      "outputs": [],
      "source": [
        "# This cell is optional and specific to the Kaggle dataset we are using\n",
        "# The dataset contains audio samples of the format [digit]_speaker_sampleNum.wav\n",
        "# Example: 0_lucas_21.wav is the speaker Lucas saying digit ZERO, 21st sample \n",
        "# There are 500 samples total per speaker (50 for each digit between 0 and 9)\n",
        "# We will organize the data by speaker for demo purposes, all samples\n",
        "# from a specific speaker will be in a dedicated directory \n",
        "import os\n",
        "import shutil\n",
        "\n",
        "speakers = [\"theo\", \"george\", \"jackson\", \"lucas\", \"nicolas\", \"yweweler\"]\n",
        "for speaker in speakers:\n",
        "  path = os.path.join(\"/content/recordings\", speaker) \n",
        "  os.mkdir(path) \n",
        "\n",
        "for filename in os.listdir(\"/content/recordings\"):\n",
        "  parts = filename.split(\"_\")\n",
        "  if(len(parts) > 1):\n",
        "    shutil.move(os.path.join(\"/content/recordings/\", filename), \"/content/recordings/\"+parts[1])\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "nRDM_qTaKVvm",
        "outputId": "64d73993-d750-4ecf-ca1a-3324415a43f2"
      },
      "outputs": [],
      "source": [
        "# Set up the WhyLabs environment \n",
        "# The model type can be set as \"Other\"\n",
        "# Documentation: https://docs.whylabs.ai/docs/whylabs-onboarding \n",
        "\n",
        "import getpass\n",
        "import os\n",
        "\n",
        "# set your org-id here - should be something like \"org-xxxx\"\n",
        "print(\"Enter your WhyLabs Org ID\") \n",
        "os.environ[\"WHYLABS_DEFAULT_ORG_ID\"] = input()\n",
        "\n",
        "# set your datased_id (or model_id) here - should be something like \"model-xxxx\"\n",
        "print(\"Enter your WhyLabs Dataset ID\")\n",
        "os.environ[\"WHYLABS_DEFAULT_DATASET_ID\"] = input()\n",
        "\n",
        "\n",
        "# set your API key here\n",
        "print(\"Enter your WhyLabs API key\")\n",
        "os.environ[\"WHYLABS_API_KEY\"] = getpass.getpass()\n",
        "print(\"Using API Key ID: \", os.environ[\"WHYLABS_API_KEY\"][0:10])"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "id": "yLD0HovF826g"
      },
      "outputs": [],
      "source": [
        "# Set up the audio feature extraction step with pyAudioAnalysis \n",
        "# https://medium.com/behavioral-signals-ai/intro-to-audio-analysis-recognizing-sounds-using-machine-learning-20fd646a0ec5\n",
        "\n",
        "from pyAudioAnalysis import MidTermFeatures as aF\n",
        "import os\n",
        "import numpy as np\n",
        "import plotly.graph_objs as go \n",
        "import plotly\n",
        "import pandas as pd\n",
        "\n",
        "# This example will focus on just one speaker, but can be set up with\n",
        "# multiple directories \n",
        "dirs = [\"/content/recordings/george\"] \n",
        "\n",
        "# The feature extraction has the following parameters: \n",
        "# the mid-term window size (mw)\n",
        "# the mid-term step size (ms)\n",
        "# the short-term window size (sw)\n",
        "# and the short-term step size (ss)\n",
        "# These windows can be configured depending on the side of each audio sample\n",
        "m_win, m_step, s_win, s_step = 0.5, 0.5, 0.1, 0.05 \n",
        "# segment-level feature extraction:\n",
        "features = [] \n",
        "for d in dirs: # get feature matrix for each directory \n",
        "    f, files, fn = aF.directory_feature_extraction(d, m_win, m_step, \n",
        "                                                   s_win, s_step) \n",
        "    features.append(f)\n",
        "# (each element of the features list contains a \n",
        "# (samples x segment features) = (N x 138) feature matrix)\n",
        "\n",
        "# Create a dataframe from the resulting features \n",
        "df = pd.DataFrame(f, columns = fn)\n"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "_SB3iZeTLYQs",
        "outputId": "8397a0be-5d49-41fa-d5dc-b075833aedf0"
      },
      "outputs": [],
      "source": [
        "# Now that we have all features extracted, we have a dataframe where features\n",
        "# are columns and samples are rows. \n",
        "# We will use whylogs to profile the features dataframe to extract key statistics\n",
        "# that we will tracking using the WhyLabs monitoring platform\n",
        "# whylogs documentation: https://github.com/whylabs/whylogs \n",
        "\n",
        "import whylogs as why\n",
        "from datetime import datetime, timedelta, timezone\n",
        "\n",
        "# We are setting the date of profiling for easier navigation in the \n",
        "# WhyLabs platform \n",
        "current_date = datetime.now(timezone.utc)\n",
        "profile = why.log(df).profile()\n",
        "profile.set_dataset_timestamp(current_date)"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "6_TKduvNLcBP",
        "outputId": "532744a5-c2df-49e2-97d5-4756e500fff5"
      },
      "outputs": [
        {
          "data": {
            "text/plain": [
              "(True, 'OK')"
            ]
          },
          "execution_count": 16,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "# As a final step, we write the resulting feature profile to the WhyLabs platform\n",
        "# To see the result, log into https://hub.whylabsapp.com/ and navigate to the\n",
        "# model you specified in the \"Set up the WhyLabs environment\" step \n",
        "from whylogs.api.writer.whylabs import WhyLabsWriter\n",
        "\n",
        "# Write the log to the WhyLabs platform \n",
        "writer = WhyLabsWriter()\n",
        "writer.write(file=profile.view())"
      ]
    },
    {
      "cell_type": "code",
      "execution_count": null,
      "metadata": {
        "colab": {
          "base_uri": "https://localhost:8080/"
        },
        "id": "ccz0_Zq_Llo-",
        "outputId": "8c7490bb-16df-4a2b-949f-a9a9eea0f06f"
      },
      "outputs": [
        {
          "name": "stdout",
          "output_type": "stream",
          "text": [
            "Analyzing file 1 of 500: /content/recordings/lucas/0_lucas_0.wav\n",
            "Analyzing file 2 of 500: /content/recordings/lucas/0_lucas_1.wav\n",
            "Analyzing file 3 of 500: /content/recordings/lucas/0_lucas_10.wav\n",
            "Analyzing file 4 of 500: /content/recordings/lucas/0_lucas_11.wav\n",
            "Analyzing file 5 of 500: /content/recordings/lucas/0_lucas_12.wav\n",
            "Analyzing file 6 of 500: /content/recordings/lucas/0_lucas_13.wav\n",
            "Analyzing file 7 of 500: /content/recordings/lucas/0_lucas_14.wav\n",
            "Analyzing file 8 of 500: /content/recordings/lucas/0_lucas_15.wav\n",
            "Analyzing file 9 of 500: /content/recordings/lucas/0_lucas_16.wav\n",
            "Analyzing file 10 of 500: /content/recordings/lucas/0_lucas_17.wav\n",
            "Analyzing file 11 of 500: /content/recordings/lucas/0_lucas_18.wav\n",
            "Analyzing file 12 of 500: /content/recordings/lucas/0_lucas_19.wav\n",
            "Analyzing file 13 of 500: /content/recordings/lucas/0_lucas_2.wav\n",
            "Analyzing file 14 of 500: /content/recordings/lucas/0_lucas_20.wav\n",
            "Analyzing file 15 of 500: /content/recordings/lucas/0_lucas_21.wav\n",
            "Analyzing file 16 of 500: /content/recordings/lucas/0_lucas_22.wav\n",
            "Analyzing file 17 of 500: /content/recordings/lucas/0_lucas_23.wav\n",
            "Analyzing file 18 of 500: /content/recordings/lucas/0_lucas_24.wav\n",
            "Analyzing file 19 of 500: /content/recordings/lucas/0_lucas_25.wav\n",
            "Analyzing file 20 of 500: /content/recordings/lucas/0_lucas_26.wav\n",
            "Analyzing file 21 of 500: /content/recordings/lucas/0_lucas_27.wav\n",
            "Analyzing file 22 of 500: /content/recordings/lucas/0_lucas_28.wav\n",
            "Analyzing file 23 of 500: /content/recordings/lucas/0_lucas_29.wav\n",
            "Analyzing file 24 of 500: /content/recordings/lucas/0_lucas_3.wav\n",
            "Analyzing file 25 of 500: /content/recordings/lucas/0_lucas_30.wav\n",
            "Analyzing file 26 of 500: /content/recordings/lucas/0_lucas_31.wav\n",
            "Analyzing file 27 of 500: /content/recordings/lucas/0_lucas_32.wav\n",
            "Analyzing file 28 of 500: /content/recordings/lucas/0_lucas_33.wav\n",
            "Analyzing file 29 of 500: /content/recordings/lucas/0_lucas_34.wav\n",
            "Analyzing file 30 of 500: /content/recordings/lucas/0_lucas_35.wav\n",
            "Analyzing file 31 of 500: /content/recordings/lucas/0_lucas_36.wav\n",
            "Analyzing file 32 of 500: /content/recordings/lucas/0_lucas_37.wav\n",
            "Analyzing file 33 of 500: /content/recordings/lucas/0_lucas_38.wav\n",
            "Analyzing file 34 of 500: /content/recordings/lucas/0_lucas_39.wav\n",
            "Analyzing file 35 of 500: /content/recordings/lucas/0_lucas_4.wav\n",
            "Analyzing file 36 of 500: /content/recordings/lucas/0_lucas_40.wav\n",
            "Analyzing file 37 of 500: /content/recordings/lucas/0_lucas_41.wav\n",
            "Analyzing file 38 of 500: /content/recordings/lucas/0_lucas_42.wav\n",
            "Analyzing file 39 of 500: /content/recordings/lucas/0_lucas_43.wav\n",
            "Analyzing file 40 of 500: /content/recordings/lucas/0_lucas_44.wav\n",
            "Analyzing file 41 of 500: /content/recordings/lucas/0_lucas_45.wav\n",
            "Analyzing file 42 of 500: /content/recordings/lucas/0_lucas_46.wav\n",
            "Analyzing file 43 of 500: /content/recordings/lucas/0_lucas_47.wav\n",
            "Analyzing file 44 of 500: /content/recordings/lucas/0_lucas_48.wav\n",
            "Analyzing file 45 of 500: /content/recordings/lucas/0_lucas_49.wav\n",
            "Analyzing file 46 of 500: /content/recordings/lucas/0_lucas_5.wav\n",
            "Analyzing file 47 of 500: /content/recordings/lucas/0_lucas_6.wav\n",
            "Analyzing file 48 of 500: /content/recordings/lucas/0_lucas_7.wav\n",
            "Analyzing file 49 of 500: /content/recordings/lucas/0_lucas_8.wav\n",
            "Analyzing file 50 of 500: /content/recordings/lucas/0_lucas_9.wav\n",
            "Analyzing file 51 of 500: /content/recordings/lucas/1_lucas_0.wav\n",
            "Analyzing file 52 of 500: /content/recordings/lucas/1_lucas_1.wav\n",
            "Analyzing file 53 of 500: /content/recordings/lucas/1_lucas_10.wav\n",
            "Analyzing file 54 of 500: /content/recordings/lucas/1_lucas_11.wav\n",
            "Analyzing file 55 of 500: /content/recordings/lucas/1_lucas_12.wav\n",
            "Analyzing file 56 of 500: /content/recordings/lucas/1_lucas_13.wav\n",
            "Analyzing file 57 of 500: /content/recordings/lucas/1_lucas_14.wav\n",
            "Analyzing file 58 of 500: /content/recordings/lucas/1_lucas_15.wav\n",
            "Analyzing file 59 of 500: /content/recordings/lucas/1_lucas_16.wav\n",
            "Analyzing file 60 of 500: /content/recordings/lucas/1_lucas_17.wav\n",
            "Analyzing file 61 of 500: /content/recordings/lucas/1_lucas_18.wav\n",
            "Analyzing file 62 of 500: /content/recordings/lucas/1_lucas_19.wav\n",
            "Analyzing file 63 of 500: /content/recordings/lucas/1_lucas_2.wav\n",
            "Analyzing file 64 of 500: /content/recordings/lucas/1_lucas_20.wav\n",
            "Analyzing file 65 of 500: /content/recordings/lucas/1_lucas_21.wav\n",
            "Analyzing file 66 of 500: /content/recordings/lucas/1_lucas_22.wav\n",
            "Analyzing file 67 of 500: /content/recordings/lucas/1_lucas_23.wav\n",
            "Analyzing file 68 of 500: /content/recordings/lucas/1_lucas_24.wav\n",
            "Analyzing file 69 of 500: /content/recordings/lucas/1_lucas_25.wav\n",
            "Analyzing file 70 of 500: /content/recordings/lucas/1_lucas_26.wav\n",
            "Analyzing file 71 of 500: /content/recordings/lucas/1_lucas_27.wav\n",
            "Analyzing file 72 of 500: /content/recordings/lucas/1_lucas_28.wav\n",
            "Analyzing file 73 of 500: /content/recordings/lucas/1_lucas_29.wav\n",
            "Analyzing file 74 of 500: /content/recordings/lucas/1_lucas_3.wav\n",
            "Analyzing file 75 of 500: /content/recordings/lucas/1_lucas_30.wav\n",
            "Analyzing file 76 of 500: /content/recordings/lucas/1_lucas_31.wav\n",
            "Analyzing file 77 of 500: /content/recordings/lucas/1_lucas_32.wav\n",
            "Analyzing file 78 of 500: /content/recordings/lucas/1_lucas_33.wav\n",
            "Analyzing file 79 of 500: /content/recordings/lucas/1_lucas_34.wav\n",
            "Analyzing file 80 of 500: /content/recordings/lucas/1_lucas_35.wav\n",
            "Analyzing file 81 of 500: /content/recordings/lucas/1_lucas_36.wav\n",
            "Analyzing file 82 of 500: /content/recordings/lucas/1_lucas_37.wav\n",
            "Analyzing file 83 of 500: /content/recordings/lucas/1_lucas_38.wav\n",
            "Analyzing file 84 of 500: /content/recordings/lucas/1_lucas_39.wav\n",
            "Analyzing file 85 of 500: /content/recordings/lucas/1_lucas_4.wav\n",
            "Analyzing file 86 of 500: /content/recordings/lucas/1_lucas_40.wav\n",
            "Analyzing file 87 of 500: /content/recordings/lucas/1_lucas_41.wav\n",
            "Analyzing file 88 of 500: /content/recordings/lucas/1_lucas_42.wav\n",
            "Analyzing file 89 of 500: /content/recordings/lucas/1_lucas_43.wav\n",
            "Analyzing file 90 of 500: /content/recordings/lucas/1_lucas_44.wav\n",
            "Analyzing file 91 of 500: /content/recordings/lucas/1_lucas_45.wav\n",
            "Analyzing file 92 of 500: /content/recordings/lucas/1_lucas_46.wav\n",
            "Analyzing file 93 of 500: /content/recordings/lucas/1_lucas_47.wav\n",
            "Analyzing file 94 of 500: /content/recordings/lucas/1_lucas_48.wav\n",
            "Analyzing file 95 of 500: /content/recordings/lucas/1_lucas_49.wav\n",
            "Analyzing file 96 of 500: /content/recordings/lucas/1_lucas_5.wav\n",
            "Analyzing file 97 of 500: /content/recordings/lucas/1_lucas_6.wav\n",
            "Analyzing file 98 of 500: /content/recordings/lucas/1_lucas_7.wav\n",
            "Analyzing file 99 of 500: /content/recordings/lucas/1_lucas_8.wav\n",
            "Analyzing file 100 of 500: /content/recordings/lucas/1_lucas_9.wav\n",
            "Analyzing file 101 of 500: /content/recordings/lucas/2_lucas_0.wav\n",
            "Analyzing file 102 of 500: /content/recordings/lucas/2_lucas_1.wav\n",
            "Analyzing file 103 of 500: /content/recordings/lucas/2_lucas_10.wav\n",
            "Analyzing file 104 of 500: /content/recordings/lucas/2_lucas_11.wav\n",
            "Analyzing file 105 of 500: /content/recordings/lucas/2_lucas_12.wav\n",
            "Analyzing file 106 of 500: /content/recordings/lucas/2_lucas_13.wav\n",
            "Analyzing file 107 of 500: /content/recordings/lucas/2_lucas_14.wav\n",
            "Analyzing file 108 of 500: /content/recordings/lucas/2_lucas_15.wav\n",
            "Analyzing file 109 of 500: /content/recordings/lucas/2_lucas_16.wav\n",
            "Analyzing file 110 of 500: /content/recordings/lucas/2_lucas_17.wav\n",
            "Analyzing file 111 of 500: /content/recordings/lucas/2_lucas_18.wav\n",
            "Analyzing file 112 of 500: /content/recordings/lucas/2_lucas_19.wav\n",
            "Analyzing file 113 of 500: /content/recordings/lucas/2_lucas_2.wav\n",
            "Analyzing file 114 of 500: /content/recordings/lucas/2_lucas_20.wav\n",
            "Analyzing file 115 of 500: /content/recordings/lucas/2_lucas_21.wav\n",
            "Analyzing file 116 of 500: /content/recordings/lucas/2_lucas_22.wav\n",
            "Analyzing file 117 of 500: /content/recordings/lucas/2_lucas_23.wav\n",
            "Analyzing file 118 of 500: /content/recordings/lucas/2_lucas_24.wav\n",
            "Analyzing file 119 of 500: /content/recordings/lucas/2_lucas_25.wav\n",
            "Analyzing file 120 of 500: /content/recordings/lucas/2_lucas_26.wav\n",
            "Analyzing file 121 of 500: /content/recordings/lucas/2_lucas_27.wav\n",
            "Analyzing file 122 of 500: /content/recordings/lucas/2_lucas_28.wav\n",
            "Analyzing file 123 of 500: /content/recordings/lucas/2_lucas_29.wav\n",
            "Analyzing file 124 of 500: /content/recordings/lucas/2_lucas_3.wav\n",
            "Analyzing file 125 of 500: /content/recordings/lucas/2_lucas_30.wav\n",
            "Analyzing file 126 of 500: /content/recordings/lucas/2_lucas_31.wav\n",
            "Analyzing file 127 of 500: /content/recordings/lucas/2_lucas_32.wav\n",
            "Analyzing file 128 of 500: /content/recordings/lucas/2_lucas_33.wav\n",
            "Analyzing file 129 of 500: /content/recordings/lucas/2_lucas_34.wav\n",
            "Analyzing file 130 of 500: /content/recordings/lucas/2_lucas_35.wav\n",
            "Analyzing file 131 of 500: /content/recordings/lucas/2_lucas_36.wav\n",
            "Analyzing file 132 of 500: /content/recordings/lucas/2_lucas_37.wav\n",
            "Analyzing file 133 of 500: /content/recordings/lucas/2_lucas_38.wav\n",
            "Analyzing file 134 of 500: /content/recordings/lucas/2_lucas_39.wav\n",
            "Analyzing file 135 of 500: /content/recordings/lucas/2_lucas_4.wav\n",
            "Analyzing file 136 of 500: /content/recordings/lucas/2_lucas_40.wav\n",
            "Analyzing file 137 of 500: /content/recordings/lucas/2_lucas_41.wav\n",
            "Analyzing file 138 of 500: /content/recordings/lucas/2_lucas_42.wav\n",
            "Analyzing file 139 of 500: /content/recordings/lucas/2_lucas_43.wav\n",
            "Analyzing file 140 of 500: /content/recordings/lucas/2_lucas_44.wav\n",
            "Analyzing file 141 of 500: /content/recordings/lucas/2_lucas_45.wav\n",
            "Analyzing file 142 of 500: /content/recordings/lucas/2_lucas_46.wav\n",
            "Analyzing file 143 of 500: /content/recordings/lucas/2_lucas_47.wav\n",
            "Analyzing file 144 of 500: /content/recordings/lucas/2_lucas_48.wav\n",
            "Analyzing file 145 of 500: /content/recordings/lucas/2_lucas_49.wav\n",
            "Analyzing file 146 of 500: /content/recordings/lucas/2_lucas_5.wav\n",
            "Analyzing file 147 of 500: /content/recordings/lucas/2_lucas_6.wav\n",
            "Analyzing file 148 of 500: /content/recordings/lucas/2_lucas_7.wav\n",
            "Analyzing file 149 of 500: /content/recordings/lucas/2_lucas_8.wav\n",
            "Analyzing file 150 of 500: /content/recordings/lucas/2_lucas_9.wav\n",
            "Analyzing file 151 of 500: /content/recordings/lucas/3_lucas_0.wav\n",
            "Analyzing file 152 of 500: /content/recordings/lucas/3_lucas_1.wav\n",
            "Analyzing file 153 of 500: /content/recordings/lucas/3_lucas_10.wav\n",
            "Analyzing file 154 of 500: /content/recordings/lucas/3_lucas_11.wav\n",
            "Analyzing file 155 of 500: /content/recordings/lucas/3_lucas_12.wav\n",
            "Analyzing file 156 of 500: /content/recordings/lucas/3_lucas_13.wav\n",
            "Analyzing file 157 of 500: /content/recordings/lucas/3_lucas_14.wav\n",
            "Analyzing file 158 of 500: /content/recordings/lucas/3_lucas_15.wav\n",
            "Analyzing file 159 of 500: /content/recordings/lucas/3_lucas_16.wav\n",
            "Analyzing file 160 of 500: /content/recordings/lucas/3_lucas_17.wav\n",
            "Analyzing file 161 of 500: /content/recordings/lucas/3_lucas_18.wav\n",
            "Analyzing file 162 of 500: /content/recordings/lucas/3_lucas_19.wav\n",
            "Analyzing file 163 of 500: /content/recordings/lucas/3_lucas_2.wav\n",
            "Analyzing file 164 of 500: /content/recordings/lucas/3_lucas_20.wav\n",
            "Analyzing file 165 of 500: /content/recordings/lucas/3_lucas_21.wav\n",
            "Analyzing file 166 of 500: /content/recordings/lucas/3_lucas_22.wav\n",
            "Analyzing file 167 of 500: /content/recordings/lucas/3_lucas_23.wav\n",
            "Analyzing file 168 of 500: /content/recordings/lucas/3_lucas_24.wav\n",
            "Analyzing file 169 of 500: /content/recordings/lucas/3_lucas_25.wav\n",
            "Analyzing file 170 of 500: /content/recordings/lucas/3_lucas_26.wav\n",
            "Analyzing file 171 of 500: /content/recordings/lucas/3_lucas_27.wav\n",
            "Analyzing file 172 of 500: /content/recordings/lucas/3_lucas_28.wav\n",
            "Analyzing file 173 of 500: /content/recordings/lucas/3_lucas_29.wav\n",
            "Analyzing file 174 of 500: /content/recordings/lucas/3_lucas_3.wav\n",
            "Analyzing file 175 of 500: /content/recordings/lucas/3_lucas_30.wav\n",
            "Analyzing file 176 of 500: /content/recordings/lucas/3_lucas_31.wav\n",
            "Analyzing file 177 of 500: /content/recordings/lucas/3_lucas_32.wav\n",
            "Analyzing file 178 of 500: /content/recordings/lucas/3_lucas_33.wav\n",
            "Analyzing file 179 of 500: /content/recordings/lucas/3_lucas_34.wav\n",
            "Analyzing file 180 of 500: /content/recordings/lucas/3_lucas_35.wav\n",
            "Analyzing file 181 of 500: /content/recordings/lucas/3_lucas_36.wav\n",
            "Analyzing file 182 of 500: /content/recordings/lucas/3_lucas_37.wav\n",
            "Analyzing file 183 of 500: /content/recordings/lucas/3_lucas_38.wav\n",
            "Analyzing file 184 of 500: /content/recordings/lucas/3_lucas_39.wav\n",
            "Analyzing file 185 of 500: /content/recordings/lucas/3_lucas_4.wav\n",
            "Analyzing file 186 of 500: /content/recordings/lucas/3_lucas_40.wav\n",
            "Analyzing file 187 of 500: /content/recordings/lucas/3_lucas_41.wav\n",
            "Analyzing file 188 of 500: /content/recordings/lucas/3_lucas_42.wav\n",
            "Analyzing file 189 of 500: /content/recordings/lucas/3_lucas_43.wav\n",
            "Analyzing file 190 of 500: /content/recordings/lucas/3_lucas_44.wav\n",
            "Analyzing file 191 of 500: /content/recordings/lucas/3_lucas_45.wav\n",
            "Analyzing file 192 of 500: /content/recordings/lucas/3_lucas_46.wav\n",
            "Analyzing file 193 of 500: /content/recordings/lucas/3_lucas_47.wav\n",
            "Analyzing file 194 of 500: /content/recordings/lucas/3_lucas_48.wav\n",
            "Analyzing file 195 of 500: /content/recordings/lucas/3_lucas_49.wav\n",
            "Analyzing file 196 of 500: /content/recordings/lucas/3_lucas_5.wav\n",
            "Analyzing file 197 of 500: /content/recordings/lucas/3_lucas_6.wav\n",
            "Analyzing file 198 of 500: /content/recordings/lucas/3_lucas_7.wav\n",
            "Analyzing file 199 of 500: /content/recordings/lucas/3_lucas_8.wav\n",
            "Analyzing file 200 of 500: /content/recordings/lucas/3_lucas_9.wav\n",
            "Analyzing file 201 of 500: /content/recordings/lucas/4_lucas_0.wav\n",
            "Analyzing file 202 of 500: /content/recordings/lucas/4_lucas_1.wav\n",
            "Analyzing file 203 of 500: /content/recordings/lucas/4_lucas_10.wav\n",
            "Analyzing file 204 of 500: /content/recordings/lucas/4_lucas_11.wav\n",
            "Analyzing file 205 of 500: /content/recordings/lucas/4_lucas_12.wav\n",
            "Analyzing file 206 of 500: /content/recordings/lucas/4_lucas_13.wav\n",
            "Analyzing file 207 of 500: /content/recordings/lucas/4_lucas_14.wav\n",
            "Analyzing file 208 of 500: /content/recordings/lucas/4_lucas_15.wav\n",
            "Analyzing file 209 of 500: /content/recordings/lucas/4_lucas_16.wav\n",
            "Analyzing file 210 of 500: /content/recordings/lucas/4_lucas_17.wav\n",
            "Analyzing file 211 of 500: /content/recordings/lucas/4_lucas_18.wav\n",
            "Analyzing file 212 of 500: /content/recordings/lucas/4_lucas_19.wav\n",
            "Analyzing file 213 of 500: /content/recordings/lucas/4_lucas_2.wav\n",
            "Analyzing file 214 of 500: /content/recordings/lucas/4_lucas_20.wav\n",
            "Analyzing file 215 of 500: /content/recordings/lucas/4_lucas_21.wav\n",
            "Analyzing file 216 of 500: /content/recordings/lucas/4_lucas_22.wav\n",
            "Analyzing file 217 of 500: /content/recordings/lucas/4_lucas_23.wav\n",
            "Analyzing file 218 of 500: /content/recordings/lucas/4_lucas_24.wav\n",
            "Analyzing file 219 of 500: /content/recordings/lucas/4_lucas_25.wav\n",
            "Analyzing file 220 of 500: /content/recordings/lucas/4_lucas_26.wav\n",
            "Analyzing file 221 of 500: /content/recordings/lucas/4_lucas_27.wav\n",
            "Analyzing file 222 of 500: /content/recordings/lucas/4_lucas_28.wav\n",
            "Analyzing file 223 of 500: /content/recordings/lucas/4_lucas_29.wav\n",
            "Analyzing file 224 of 500: /content/recordings/lucas/4_lucas_3.wav\n",
            "Analyzing file 225 of 500: /content/recordings/lucas/4_lucas_30.wav\n",
            "Analyzing file 226 of 500: /content/recordings/lucas/4_lucas_31.wav\n",
            "Analyzing file 227 of 500: /content/recordings/lucas/4_lucas_32.wav\n",
            "Analyzing file 228 of 500: /content/recordings/lucas/4_lucas_33.wav\n",
            "Analyzing file 229 of 500: /content/recordings/lucas/4_lucas_34.wav\n",
            "Analyzing file 230 of 500: /content/recordings/lucas/4_lucas_35.wav\n",
            "Analyzing file 231 of 500: /content/recordings/lucas/4_lucas_36.wav\n",
            "Analyzing file 232 of 500: /content/recordings/lucas/4_lucas_37.wav\n",
            "Analyzing file 233 of 500: /content/recordings/lucas/4_lucas_38.wav\n",
            "Analyzing file 234 of 500: /content/recordings/lucas/4_lucas_39.wav\n",
            "Analyzing file 235 of 500: /content/recordings/lucas/4_lucas_4.wav\n",
            "Analyzing file 236 of 500: /content/recordings/lucas/4_lucas_40.wav\n",
            "Analyzing file 237 of 500: /content/recordings/lucas/4_lucas_41.wav\n",
            "Analyzing file 238 of 500: /content/recordings/lucas/4_lucas_42.wav\n",
            "Analyzing file 239 of 500: /content/recordings/lucas/4_lucas_43.wav\n",
            "Analyzing file 240 of 500: /content/recordings/lucas/4_lucas_44.wav\n",
            "Analyzing file 241 of 500: /content/recordings/lucas/4_lucas_45.wav\n",
            "Analyzing file 242 of 500: /content/recordings/lucas/4_lucas_46.wav\n",
            "Analyzing file 243 of 500: /content/recordings/lucas/4_lucas_47.wav\n",
            "Analyzing file 244 of 500: /content/recordings/lucas/4_lucas_48.wav\n",
            "Analyzing file 245 of 500: /content/recordings/lucas/4_lucas_49.wav\n",
            "Analyzing file 246 of 500: /content/recordings/lucas/4_lucas_5.wav\n",
            "Analyzing file 247 of 500: /content/recordings/lucas/4_lucas_6.wav\n",
            "Analyzing file 248 of 500: /content/recordings/lucas/4_lucas_7.wav\n",
            "Analyzing file 249 of 500: /content/recordings/lucas/4_lucas_8.wav\n",
            "Analyzing file 250 of 500: /content/recordings/lucas/4_lucas_9.wav\n",
            "Analyzing file 251 of 500: /content/recordings/lucas/5_lucas_0.wav\n",
            "Analyzing file 252 of 500: /content/recordings/lucas/5_lucas_1.wav\n",
            "Analyzing file 253 of 500: /content/recordings/lucas/5_lucas_10.wav\n",
            "Analyzing file 254 of 500: /content/recordings/lucas/5_lucas_11.wav\n",
            "Analyzing file 255 of 500: /content/recordings/lucas/5_lucas_12.wav\n",
            "Analyzing file 256 of 500: /content/recordings/lucas/5_lucas_13.wav\n",
            "Analyzing file 257 of 500: /content/recordings/lucas/5_lucas_14.wav\n",
            "Analyzing file 258 of 500: /content/recordings/lucas/5_lucas_15.wav\n",
            "Analyzing file 259 of 500: /content/recordings/lucas/5_lucas_16.wav\n",
            "Analyzing file 260 of 500: /content/recordings/lucas/5_lucas_17.wav\n",
            "Analyzing file 261 of 500: /content/recordings/lucas/5_lucas_18.wav\n",
            "Analyzing file 262 of 500: /content/recordings/lucas/5_lucas_19.wav\n",
            "Analyzing file 263 of 500: /content/recordings/lucas/5_lucas_2.wav\n",
            "Analyzing file 264 of 500: /content/recordings/lucas/5_lucas_20.wav\n",
            "Analyzing file 265 of 500: /content/recordings/lucas/5_lucas_21.wav\n",
            "Analyzing file 266 of 500: /content/recordings/lucas/5_lucas_22.wav\n",
            "Analyzing file 267 of 500: /content/recordings/lucas/5_lucas_23.wav\n",
            "Analyzing file 268 of 500: /content/recordings/lucas/5_lucas_24.wav\n",
            "Analyzing file 269 of 500: /content/recordings/lucas/5_lucas_25.wav\n",
            "Analyzing file 270 of 500: /content/recordings/lucas/5_lucas_26.wav\n",
            "Analyzing file 271 of 500: /content/recordings/lucas/5_lucas_27.wav\n",
            "Analyzing file 272 of 500: /content/recordings/lucas/5_lucas_28.wav\n",
            "Analyzing file 273 of 500: /content/recordings/lucas/5_lucas_29.wav\n",
            "Analyzing file 274 of 500: /content/recordings/lucas/5_lucas_3.wav\n",
            "Analyzing file 275 of 500: /content/recordings/lucas/5_lucas_30.wav\n",
            "Analyzing file 276 of 500: /content/recordings/lucas/5_lucas_31.wav\n",
            "Analyzing file 277 of 500: /content/recordings/lucas/5_lucas_32.wav\n",
            "Analyzing file 278 of 500: /content/recordings/lucas/5_lucas_33.wav\n",
            "Analyzing file 279 of 500: /content/recordings/lucas/5_lucas_34.wav\n",
            "Analyzing file 280 of 500: /content/recordings/lucas/5_lucas_35.wav\n",
            "Analyzing file 281 of 500: /content/recordings/lucas/5_lucas_36.wav\n",
            "Analyzing file 282 of 500: /content/recordings/lucas/5_lucas_37.wav\n",
            "Analyzing file 283 of 500: /content/recordings/lucas/5_lucas_38.wav\n",
            "Analyzing file 284 of 500: /content/recordings/lucas/5_lucas_39.wav\n",
            "Analyzing file 285 of 500: /content/recordings/lucas/5_lucas_4.wav\n",
            "Analyzing file 286 of 500: /content/recordings/lucas/5_lucas_40.wav\n",
            "Analyzing file 287 of 500: /content/recordings/lucas/5_lucas_41.wav\n",
            "Analyzing file 288 of 500: /content/recordings/lucas/5_lucas_42.wav\n",
            "Analyzing file 289 of 500: /content/recordings/lucas/5_lucas_43.wav\n",
            "Analyzing file 290 of 500: /content/recordings/lucas/5_lucas_44.wav\n",
            "Analyzing file 291 of 500: /content/recordings/lucas/5_lucas_45.wav\n",
            "Analyzing file 292 of 500: /content/recordings/lucas/5_lucas_46.wav\n",
            "Analyzing file 293 of 500: /content/recordings/lucas/5_lucas_47.wav\n",
            "Analyzing file 294 of 500: /content/recordings/lucas/5_lucas_48.wav\n",
            "Analyzing file 295 of 500: /content/recordings/lucas/5_lucas_49.wav\n",
            "Analyzing file 296 of 500: /content/recordings/lucas/5_lucas_5.wav\n",
            "Analyzing file 297 of 500: /content/recordings/lucas/5_lucas_6.wav\n",
            "Analyzing file 298 of 500: /content/recordings/lucas/5_lucas_7.wav\n",
            "Analyzing file 299 of 500: /content/recordings/lucas/5_lucas_8.wav\n",
            "Analyzing file 300 of 500: /content/recordings/lucas/5_lucas_9.wav\n",
            "Analyzing file 301 of 500: /content/recordings/lucas/6_lucas_0.wav\n",
            "Analyzing file 302 of 500: /content/recordings/lucas/6_lucas_1.wav\n",
            "Analyzing file 303 of 500: /content/recordings/lucas/6_lucas_10.wav\n",
            "Analyzing file 304 of 500: /content/recordings/lucas/6_lucas_11.wav\n",
            "Analyzing file 305 of 500: /content/recordings/lucas/6_lucas_12.wav\n",
            "Analyzing file 306 of 500: /content/recordings/lucas/6_lucas_13.wav\n",
            "Analyzing file 307 of 500: /content/recordings/lucas/6_lucas_14.wav\n",
            "Analyzing file 308 of 500: /content/recordings/lucas/6_lucas_15.wav\n",
            "Analyzing file 309 of 500: /content/recordings/lucas/6_lucas_16.wav\n",
            "Analyzing file 310 of 500: /content/recordings/lucas/6_lucas_17.wav\n",
            "Analyzing file 311 of 500: /content/recordings/lucas/6_lucas_18.wav\n",
            "Analyzing file 312 of 500: /content/recordings/lucas/6_lucas_19.wav\n",
            "Analyzing file 313 of 500: /content/recordings/lucas/6_lucas_2.wav\n",
            "Analyzing file 314 of 500: /content/recordings/lucas/6_lucas_20.wav\n",
            "Analyzing file 315 of 500: /content/recordings/lucas/6_lucas_21.wav\n",
            "Analyzing file 316 of 500: /content/recordings/lucas/6_lucas_22.wav\n",
            "Analyzing file 317 of 500: /content/recordings/lucas/6_lucas_23.wav\n",
            "Analyzing file 318 of 500: /content/recordings/lucas/6_lucas_24.wav\n",
            "Analyzing file 319 of 500: /content/recordings/lucas/6_lucas_25.wav\n",
            "Analyzing file 320 of 500: /content/recordings/lucas/6_lucas_26.wav\n",
            "Analyzing file 321 of 500: /content/recordings/lucas/6_lucas_27.wav\n",
            "Analyzing file 322 of 500: /content/recordings/lucas/6_lucas_28.wav\n",
            "Analyzing file 323 of 500: /content/recordings/lucas/6_lucas_29.wav\n",
            "Analyzing file 324 of 500: /content/recordings/lucas/6_lucas_3.wav\n",
            "Analyzing file 325 of 500: /content/recordings/lucas/6_lucas_30.wav\n",
            "Analyzing file 326 of 500: /content/recordings/lucas/6_lucas_31.wav\n",
            "Analyzing file 327 of 500: /content/recordings/lucas/6_lucas_32.wav\n",
            "Analyzing file 328 of 500: /content/recordings/lucas/6_lucas_33.wav\n",
            "Analyzing file 329 of 500: /content/recordings/lucas/6_lucas_34.wav\n",
            "Analyzing file 330 of 500: /content/recordings/lucas/6_lucas_35.wav\n",
            "Analyzing file 331 of 500: /content/recordings/lucas/6_lucas_36.wav\n",
            "Analyzing file 332 of 500: /content/recordings/lucas/6_lucas_37.wav\n",
            "Analyzing file 333 of 500: /content/recordings/lucas/6_lucas_38.wav\n",
            "Analyzing file 334 of 500: /content/recordings/lucas/6_lucas_39.wav\n",
            "Analyzing file 335 of 500: /content/recordings/lucas/6_lucas_4.wav\n",
            "Analyzing file 336 of 500: /content/recordings/lucas/6_lucas_40.wav\n",
            "Analyzing file 337 of 500: /content/recordings/lucas/6_lucas_41.wav\n",
            "Analyzing file 338 of 500: /content/recordings/lucas/6_lucas_42.wav\n",
            "Analyzing file 339 of 500: /content/recordings/lucas/6_lucas_43.wav\n",
            "Analyzing file 340 of 500: /content/recordings/lucas/6_lucas_44.wav\n",
            "Analyzing file 341 of 500: /content/recordings/lucas/6_lucas_45.wav\n",
            "Analyzing file 342 of 500: /content/recordings/lucas/6_lucas_46.wav\n",
            "Analyzing file 343 of 500: /content/recordings/lucas/6_lucas_47.wav\n",
            "Analyzing file 344 of 500: /content/recordings/lucas/6_lucas_48.wav\n",
            "Analyzing file 345 of 500: /content/recordings/lucas/6_lucas_49.wav\n",
            "Analyzing file 346 of 500: /content/recordings/lucas/6_lucas_5.wav\n",
            "Analyzing file 347 of 500: /content/recordings/lucas/6_lucas_6.wav\n",
            "Analyzing file 348 of 500: /content/recordings/lucas/6_lucas_7.wav\n",
            "Analyzing file 349 of 500: /content/recordings/lucas/6_lucas_8.wav\n",
            "Analyzing file 350 of 500: /content/recordings/lucas/6_lucas_9.wav\n",
            "Analyzing file 351 of 500: /content/recordings/lucas/7_lucas_0.wav\n",
            "Analyzing file 352 of 500: /content/recordings/lucas/7_lucas_1.wav\n",
            "Analyzing file 353 of 500: /content/recordings/lucas/7_lucas_10.wav\n",
            "Analyzing file 354 of 500: /content/recordings/lucas/7_lucas_11.wav\n",
            "Analyzing file 355 of 500: /content/recordings/lucas/7_lucas_12.wav\n",
            "Analyzing file 356 of 500: /content/recordings/lucas/7_lucas_13.wav\n",
            "Analyzing file 357 of 500: /content/recordings/lucas/7_lucas_14.wav\n",
            "Analyzing file 358 of 500: /content/recordings/lucas/7_lucas_15.wav\n",
            "Analyzing file 359 of 500: /content/recordings/lucas/7_lucas_16.wav\n",
            "Analyzing file 360 of 500: /content/recordings/lucas/7_lucas_17.wav\n",
            "Analyzing file 361 of 500: /content/recordings/lucas/7_lucas_18.wav\n",
            "Analyzing file 362 of 500: /content/recordings/lucas/7_lucas_19.wav\n",
            "Analyzing file 363 of 500: /content/recordings/lucas/7_lucas_2.wav\n",
            "Analyzing file 364 of 500: /content/recordings/lucas/7_lucas_20.wav\n",
            "Analyzing file 365 of 500: /content/recordings/lucas/7_lucas_21.wav\n",
            "Analyzing file 366 of 500: /content/recordings/lucas/7_lucas_22.wav\n",
            "Analyzing file 367 of 500: /content/recordings/lucas/7_lucas_23.wav\n",
            "Analyzing file 368 of 500: /content/recordings/lucas/7_lucas_24.wav\n",
            "Analyzing file 369 of 500: /content/recordings/lucas/7_lucas_25.wav\n",
            "Analyzing file 370 of 500: /content/recordings/lucas/7_lucas_26.wav\n",
            "Analyzing file 371 of 500: /content/recordings/lucas/7_lucas_27.wav\n",
            "Analyzing file 372 of 500: /content/recordings/lucas/7_lucas_28.wav\n",
            "Analyzing file 373 of 500: /content/recordings/lucas/7_lucas_29.wav\n",
            "Analyzing file 374 of 500: /content/recordings/lucas/7_lucas_3.wav\n",
            "Analyzing file 375 of 500: /content/recordings/lucas/7_lucas_30.wav\n",
            "Analyzing file 376 of 500: /content/recordings/lucas/7_lucas_31.wav\n",
            "Analyzing file 377 of 500: /content/recordings/lucas/7_lucas_32.wav\n",
            "Analyzing file 378 of 500: /content/recordings/lucas/7_lucas_33.wav\n",
            "Analyzing file 379 of 500: /content/recordings/lucas/7_lucas_34.wav\n",
            "Analyzing file 380 of 500: /content/recordings/lucas/7_lucas_35.wav\n",
            "Analyzing file 381 of 500: /content/recordings/lucas/7_lucas_36.wav\n",
            "Analyzing file 382 of 500: /content/recordings/lucas/7_lucas_37.wav\n",
            "Analyzing file 383 of 500: /content/recordings/lucas/7_lucas_38.wav\n",
            "Analyzing file 384 of 500: /content/recordings/lucas/7_lucas_39.wav\n",
            "Analyzing file 385 of 500: /content/recordings/lucas/7_lucas_4.wav\n",
            "Analyzing file 386 of 500: /content/recordings/lucas/7_lucas_40.wav\n",
            "Analyzing file 387 of 500: /content/recordings/lucas/7_lucas_41.wav\n",
            "Analyzing file 388 of 500: /content/recordings/lucas/7_lucas_42.wav\n",
            "Analyzing file 389 of 500: /content/recordings/lucas/7_lucas_43.wav\n",
            "Analyzing file 390 of 500: /content/recordings/lucas/7_lucas_44.wav\n",
            "Analyzing file 391 of 500: /content/recordings/lucas/7_lucas_45.wav\n",
            "Analyzing file 392 of 500: /content/recordings/lucas/7_lucas_46.wav\n",
            "Analyzing file 393 of 500: /content/recordings/lucas/7_lucas_47.wav\n",
            "Analyzing file 394 of 500: /content/recordings/lucas/7_lucas_48.wav\n",
            "Analyzing file 395 of 500: /content/recordings/lucas/7_lucas_49.wav\n",
            "Analyzing file 396 of 500: /content/recordings/lucas/7_lucas_5.wav\n",
            "Analyzing file 397 of 500: /content/recordings/lucas/7_lucas_6.wav\n",
            "Analyzing file 398 of 500: /content/recordings/lucas/7_lucas_7.wav\n",
            "Analyzing file 399 of 500: /content/recordings/lucas/7_lucas_8.wav\n",
            "Analyzing file 400 of 500: /content/recordings/lucas/7_lucas_9.wav\n",
            "Analyzing file 401 of 500: /content/recordings/lucas/8_lucas_0.wav\n",
            "Analyzing file 402 of 500: /content/recordings/lucas/8_lucas_1.wav\n",
            "Analyzing file 403 of 500: /content/recordings/lucas/8_lucas_10.wav\n",
            "Analyzing file 404 of 500: /content/recordings/lucas/8_lucas_11.wav\n",
            "Analyzing file 405 of 500: /content/recordings/lucas/8_lucas_12.wav\n",
            "Analyzing file 406 of 500: /content/recordings/lucas/8_lucas_13.wav\n",
            "Analyzing file 407 of 500: /content/recordings/lucas/8_lucas_14.wav\n",
            "Analyzing file 408 of 500: /content/recordings/lucas/8_lucas_15.wav\n",
            "Analyzing file 409 of 500: /content/recordings/lucas/8_lucas_16.wav\n",
            "Analyzing file 410 of 500: /content/recordings/lucas/8_lucas_17.wav\n",
            "Analyzing file 411 of 500: /content/recordings/lucas/8_lucas_18.wav\n",
            "Analyzing file 412 of 500: /content/recordings/lucas/8_lucas_19.wav\n",
            "Analyzing file 413 of 500: /content/recordings/lucas/8_lucas_2.wav\n",
            "Analyzing file 414 of 500: /content/recordings/lucas/8_lucas_20.wav\n",
            "Analyzing file 415 of 500: /content/recordings/lucas/8_lucas_21.wav\n",
            "Analyzing file 416 of 500: /content/recordings/lucas/8_lucas_22.wav\n",
            "Analyzing file 417 of 500: /content/recordings/lucas/8_lucas_23.wav\n",
            "Analyzing file 418 of 500: /content/recordings/lucas/8_lucas_24.wav\n",
            "Analyzing file 419 of 500: /content/recordings/lucas/8_lucas_25.wav\n",
            "Analyzing file 420 of 500: /content/recordings/lucas/8_lucas_26.wav\n",
            "Analyzing file 421 of 500: /content/recordings/lucas/8_lucas_27.wav\n",
            "Analyzing file 422 of 500: /content/recordings/lucas/8_lucas_28.wav\n",
            "Analyzing file 423 of 500: /content/recordings/lucas/8_lucas_29.wav\n",
            "Analyzing file 424 of 500: /content/recordings/lucas/8_lucas_3.wav\n",
            "Analyzing file 425 of 500: /content/recordings/lucas/8_lucas_30.wav\n",
            "Analyzing file 426 of 500: /content/recordings/lucas/8_lucas_31.wav\n",
            "Analyzing file 427 of 500: /content/recordings/lucas/8_lucas_32.wav\n",
            "Analyzing file 428 of 500: /content/recordings/lucas/8_lucas_33.wav\n",
            "Analyzing file 429 of 500: /content/recordings/lucas/8_lucas_34.wav\n",
            "Analyzing file 430 of 500: /content/recordings/lucas/8_lucas_35.wav\n",
            "Analyzing file 431 of 500: /content/recordings/lucas/8_lucas_36.wav\n",
            "Analyzing file 432 of 500: /content/recordings/lucas/8_lucas_37.wav\n",
            "Analyzing file 433 of 500: /content/recordings/lucas/8_lucas_38.wav\n",
            "Analyzing file 434 of 500: /content/recordings/lucas/8_lucas_39.wav\n",
            "Analyzing file 435 of 500: /content/recordings/lucas/8_lucas_4.wav\n",
            "Analyzing file 436 of 500: /content/recordings/lucas/8_lucas_40.wav\n",
            "Analyzing file 437 of 500: /content/recordings/lucas/8_lucas_41.wav\n",
            "Analyzing file 438 of 500: /content/recordings/lucas/8_lucas_42.wav\n",
            "Analyzing file 439 of 500: /content/recordings/lucas/8_lucas_43.wav\n",
            "Analyzing file 440 of 500: /content/recordings/lucas/8_lucas_44.wav\n",
            "Analyzing file 441 of 500: /content/recordings/lucas/8_lucas_45.wav\n",
            "Analyzing file 442 of 500: /content/recordings/lucas/8_lucas_46.wav\n",
            "Analyzing file 443 of 500: /content/recordings/lucas/8_lucas_47.wav\n",
            "Analyzing file 444 of 500: /content/recordings/lucas/8_lucas_48.wav\n",
            "Analyzing file 445 of 500: /content/recordings/lucas/8_lucas_49.wav\n",
            "Analyzing file 446 of 500: /content/recordings/lucas/8_lucas_5.wav\n",
            "Analyzing file 447 of 500: /content/recordings/lucas/8_lucas_6.wav\n",
            "Analyzing file 448 of 500: /content/recordings/lucas/8_lucas_7.wav\n",
            "Analyzing file 449 of 500: /content/recordings/lucas/8_lucas_8.wav\n",
            "Analyzing file 450 of 500: /content/recordings/lucas/8_lucas_9.wav\n",
            "Analyzing file 451 of 500: /content/recordings/lucas/9_lucas_0.wav\n",
            "Analyzing file 452 of 500: /content/recordings/lucas/9_lucas_1.wav\n",
            "Analyzing file 453 of 500: /content/recordings/lucas/9_lucas_10.wav\n",
            "Analyzing file 454 of 500: /content/recordings/lucas/9_lucas_11.wav\n",
            "Analyzing file 455 of 500: /content/recordings/lucas/9_lucas_12.wav\n",
            "Analyzing file 456 of 500: /content/recordings/lucas/9_lucas_13.wav\n",
            "Analyzing file 457 of 500: /content/recordings/lucas/9_lucas_14.wav\n",
            "Analyzing file 458 of 500: /content/recordings/lucas/9_lucas_15.wav\n",
            "Analyzing file 459 of 500: /content/recordings/lucas/9_lucas_16.wav\n",
            "Analyzing file 460 of 500: /content/recordings/lucas/9_lucas_17.wav\n",
            "Analyzing file 461 of 500: /content/recordings/lucas/9_lucas_18.wav\n",
            "Analyzing file 462 of 500: /content/recordings/lucas/9_lucas_19.wav\n",
            "Analyzing file 463 of 500: /content/recordings/lucas/9_lucas_2.wav\n",
            "Analyzing file 464 of 500: /content/recordings/lucas/9_lucas_20.wav\n",
            "Analyzing file 465 of 500: /content/recordings/lucas/9_lucas_21.wav\n",
            "Analyzing file 466 of 500: /content/recordings/lucas/9_lucas_22.wav\n",
            "Analyzing file 467 of 500: /content/recordings/lucas/9_lucas_23.wav\n",
            "Analyzing file 468 of 500: /content/recordings/lucas/9_lucas_24.wav\n",
            "Analyzing file 469 of 500: /content/recordings/lucas/9_lucas_25.wav\n",
            "Analyzing file 470 of 500: /content/recordings/lucas/9_lucas_26.wav\n",
            "Analyzing file 471 of 500: /content/recordings/lucas/9_lucas_27.wav\n",
            "Analyzing file 472 of 500: /content/recordings/lucas/9_lucas_28.wav\n",
            "Analyzing file 473 of 500: /content/recordings/lucas/9_lucas_29.wav\n",
            "Analyzing file 474 of 500: /content/recordings/lucas/9_lucas_3.wav\n",
            "Analyzing file 475 of 500: /content/recordings/lucas/9_lucas_30.wav\n",
            "Analyzing file 476 of 500: /content/recordings/lucas/9_lucas_31.wav\n",
            "Analyzing file 477 of 500: /content/recordings/lucas/9_lucas_32.wav\n",
            "Analyzing file 478 of 500: /content/recordings/lucas/9_lucas_33.wav\n",
            "Analyzing file 479 of 500: /content/recordings/lucas/9_lucas_34.wav\n",
            "Analyzing file 480 of 500: /content/recordings/lucas/9_lucas_35.wav\n",
            "Analyzing file 481 of 500: /content/recordings/lucas/9_lucas_36.wav\n",
            "Analyzing file 482 of 500: /content/recordings/lucas/9_lucas_37.wav\n",
            "Analyzing file 483 of 500: /content/recordings/lucas/9_lucas_38.wav\n",
            "Analyzing file 484 of 500: /content/recordings/lucas/9_lucas_39.wav\n",
            "Analyzing file 485 of 500: /content/recordings/lucas/9_lucas_4.wav\n",
            "Analyzing file 486 of 500: /content/recordings/lucas/9_lucas_40.wav\n",
            "Analyzing file 487 of 500: /content/recordings/lucas/9_lucas_41.wav\n",
            "Analyzing file 488 of 500: /content/recordings/lucas/9_lucas_42.wav\n",
            "Analyzing file 489 of 500: /content/recordings/lucas/9_lucas_43.wav\n",
            "Analyzing file 490 of 500: /content/recordings/lucas/9_lucas_44.wav\n",
            "Analyzing file 491 of 500: /content/recordings/lucas/9_lucas_45.wav\n",
            "Analyzing file 492 of 500: /content/recordings/lucas/9_lucas_46.wav\n",
            "Analyzing file 493 of 500: /content/recordings/lucas/9_lucas_47.wav\n",
            "Analyzing file 494 of 500: /content/recordings/lucas/9_lucas_48.wav\n",
            "Analyzing file 495 of 500: /content/recordings/lucas/9_lucas_49.wav\n",
            "Analyzing file 496 of 500: /content/recordings/lucas/9_lucas_5.wav\n",
            "Analyzing file 497 of 500: /content/recordings/lucas/9_lucas_6.wav\n",
            "Analyzing file 498 of 500: /content/recordings/lucas/9_lucas_7.wav\n",
            "Analyzing file 499 of 500: /content/recordings/lucas/9_lucas_8.wav\n",
            "Analyzing file 500 of 500: /content/recordings/lucas/9_lucas_9.wav\n",
            "Feature extraction complexity ratio: 19.2 x realtime\n"
          ]
        },
        {
          "name": "stderr",
          "output_type": "stream",
          "text": [
            "WARNING:whylogs.core.dataset_profile:No timezone set in the datetime_timestamp object. Default to local timezone\n"
          ]
        },
        {
          "data": {
            "text/plain": [
              "(True, 'OK')"
            ]
          },
          "execution_count": 17,
          "metadata": {},
          "output_type": "execute_result"
        }
      ],
      "source": [
        "# Optional: Extract features from samples generated by another speaker\n",
        "# Submit profiles to the WhyLabs platform to compare feature differences\n",
        "# between two speakers \n",
        "#https://medium.com/behavioral-signals-ai/intro-to-audio-analysis-recognizing-sounds-using-machine-learning-20fd646a0ec5\n",
        "\n",
        "dirs = [\"/content/recordings/lucas\"] \n",
        "\n",
        "m_win, m_step, s_win, s_step = 0.5, 0.5, 0.1, 0.05 \n",
        "# segment-level feature extraction:\n",
        "features = [] \n",
        "for d in dirs: # get feature matrix for each directory\n",
        "    f, files, fn = aF.directory_feature_extraction(d, m_win, m_step, \n",
        "                                                   s_win, s_step) \n",
        "    features.append(f)\n",
        "# (each element of the features list contains a \n",
        "# (samples x segment features) = (10 x 138) feature matrix)\n",
        "\n",
        "df_lucas = pd.DataFrame(f, columns = fn)\n",
        "yesterday_date = datetime.now() - timedelta(days=1)\n",
        "profile = why.log(df_lucas).profile()\n",
        "profile.set_dataset_timestamp(yesterday_date)\n",
        "writer = WhyLabsWriter()\n",
        "writer.write(file=profile.view())\n"
      ]
    }
  ],
  "metadata": {
    "colab": {
      "provenance": []
    },
    "kernelspec": {
      "display_name": ".venv",
      "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"
    },
    "vscode": {
      "interpreter": {
        "hash": "5dd5901cadfd4b29c2aaf95ecd29c0c3b10829ad94dcfe59437dbee391154aea"
      }
    }
  },
  "nbformat": 4,
  "nbformat_minor": 0
}