{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "b304dfff",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Populating the interactive namespace from numpy and matplotlib\n"
     ]
    }
   ],
   "source": [
    "%pylab inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "f955e852",
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "os.environ[\"CUDA_VISIBLE_DEVICES\"] = \"0\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "e9716000",
   "metadata": {},
   "outputs": [],
   "source": [
    "import time\n",
    "import os\n",
    "import tqdm\n",
    "import shutil\n",
    "import random\n",
    "import funcy\n",
    "import json\n",
    "import numpy as np\n",
    "import multiprocessing\n",
    "import pandas as pd\n",
    "from suno_utils.audio import Audio\n",
    "from suno_utils.audio.conversion import play_audio, get_audio_properties\n",
    "from suno_utils.utils.slicer import get_vad_gaps, get_intervals_from_gaps\n",
    "\n",
    "\n",
    "DATE_DIR = \"2022_08_07\"\n",
    "\n",
    "BASE_DIR = \"/mnt/data-ssd-1/data/private/customer/sanas/2022-08-04-fili-callcenter/\"\n",
    "TO_REV_DIR = os.path.join(BASE_DIR, \"to_rev\", DATE_DIR)\n",
    "FROM_REV_DIR = os.path.join(BASE_DIR, \"from_rev\", DATE_DIR)\n",
    "TO_REV_AUDIO_DIR = os.path.join(TO_REV_DIR, \"audio\")\n",
    "REV_MANIFEST_FILEPATH = os.path.join(TO_REV_DIR, \"rev_manifest.jsonl\")\n",
    "FAILED_MANIFEST_FILEPATH = os.path.join(TO_REV_DIR, \"failed_manifest.jsonl\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "e22f6da7",
   "metadata": {},
   "outputs": [],
   "source": [
    "os.makedirs(FROM_REV_DIR, exist_ok=True)\n",
    "os.makedirs(TO_REV_DIR, exist_ok=True)\n",
    "os.makedirs(TO_REV_AUDIO_DIR, exist_ok=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "ac737816",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1 failed\n",
      "55 files - 4.4 hours\n",
      "705 files - 113.2 hours\n"
     ]
    }
   ],
   "source": [
    "# ERC-PH-ASR-1 (56 audio files) and Continuum-PH-ASR-1 (705 audio files).\n",
    "d = os.path.join(BASE_DIR, \"ERC-PH-ASR-1\")\n",
    "filepaths_1 = [os.path.join(d, fn) for fn in os.listdir(d)]\n",
    "d = os.path.join(BASE_DIR, \"Continuum-PH-ASR-1\")\n",
    "filepaths_2 = [os.path.join(d, fn) for fn in os.listdir(d)]\n",
    "\n",
    "l1 = []\n",
    "e1 = []\n",
    "for fp in filepaths_1:\n",
    "    try:\n",
    "        l1.append(get_audio_properties(fp)[\"duration_s\"])\n",
    "    except:\n",
    "        e1.append(fp)\n",
    "l2 = []\n",
    "e2 = []\n",
    "for fp in filepaths_2:\n",
    "    try:\n",
    "        l2.append(get_audio_properties(fp)[\"duration_s\"])\n",
    "    except:\n",
    "        e2.append(fp)\n",
    "    \n",
    "print(len(e1 + e2), \"failed\")\n",
    "print(len(l1), \"files -\", round(sum(l1) / 60 / 60, 1), \"hours\")\n",
    "print(len(l2), \"files -\", round(sum(l2) / 60 / 60, 1), \"hours\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "7e83d447",
   "metadata": {},
   "outputs": [],
   "source": [
    "import portion\n",
    "from suno_utils.utils.numbers import safe_round\n",
    "from suno_utils.tasks.music import remove_music\n",
    "             \n",
    "def prep_annotation_audio(audio, clean_audio=True):\n",
    "    min_silence_gap = 0.05\n",
    "    min_segment_dur_s = 3.0\n",
    "    max_segment_dur_s = 10.0\n",
    "    # TODO: remove background noise?\n",
    "    if clean_audio:\n",
    "        cleaned_audio = remove_music(audio, use_gpu=True)\n",
    "    else:\n",
    "        cleaned_audio = audio\n",
    "    vad_gaps = get_vad_gaps(cleaned_audio, min_gap_s=min_silence_gap, vad_level=3)\n",
    "    silence_frac = np.sum([g.upper - g.lower for g in vad_gaps]) / audio.duration_s\n",
    "#     print(\"{}% silence\".format(round(silence_frac * 100, 1)))\n",
    "\n",
    "    # anything longer than a second should get excluded with pad\n",
    "    max_silence_s = 1\n",
    "    max_silence_pad = max_silence_s / 2\n",
    "    excluded_intervals = portion.openclosed(0, 0)\n",
    "    for vad_gap in vad_gaps:\n",
    "        excluded_lower_s = safe_round(vad_gap.lower + max_silence_pad)\n",
    "        excluded_upper_s = safe_round(vad_gap.upper - max_silence_pad)\n",
    "        if excluded_upper_s - excluded_lower_s > 0:\n",
    "            excluded_intervals |= portion.openclosed(excluded_lower_s, excluded_upper_s)\n",
    "            \n",
    "    speech_segments = get_intervals_from_gaps(\n",
    "        vad_gaps,\n",
    "        excluded_intervals=excluded_intervals,\n",
    "        min_dur_s=min_segment_dur_s,\n",
    "        max_dur_s=max_segment_dur_s,\n",
    "        total_duration_s=audio.duration_s\n",
    "    )\n",
    "    tot_segment_duration_s = np.sum([end_s - start_s for start_s, end_s in speech_segments])\n",
    "    cov_frac = tot_segment_duration_s / audio.duration_s\n",
    "#     print(\"{}% segment coverage\".format(round(cov_frac * 100, 1)))\n",
    "#     tot_segment_duration_mins = int(tot_segment_duration_s // 60)\n",
    "#     tot_segment_duration_secs = int(np.ceil(tot_segment_duration_s % 60))\n",
    "#     print(\"{}m {}s segment audio\".format(tot_segment_duration_mins, tot_segment_duration_secs))\n",
    "\n",
    "    audios_rev = []\n",
    "    segments_meta = []\n",
    "    for n, (start_s, end_s) in enumerate(speech_segments):\n",
    "#         indicator_str = \"a\" + str(n)\n",
    "        indicator_str = str(n).zfill(2)\n",
    "        audios_indicator = []\n",
    "        for c in indicator_str:\n",
    "            audios_indicator.append(Audio.from_file(f\"audio_indicators/{c}_fast.wav\"))\n",
    "        audios_rev.extend(audios_indicator)\n",
    "        segments_meta.append({\n",
    "            \"segment_number\": n,\n",
    "            \"type\": \"indicator\",\n",
    "            \"duration_s\": safe_round(np.sum([a.duration_s for a in audios_indicator])),\n",
    "            \"indicator_str\": indicator_str,\n",
    "        })\n",
    "        audios_rev.append(audio.get_slice(start_s, end_s))\n",
    "        segments_meta.append({\n",
    "            \"segment_number\": n,\n",
    "            \"type\": \"speech\",\n",
    "            \"duration_s\": safe_round(end_s - start_s),\n",
    "            \"orginial_audio_offset_s\": start_s,\n",
    "        })\n",
    "        \n",
    "    if len(audios_rev) == 0:\n",
    "        return None, {\n",
    "            \"tot_silence_frac\": round(silence_frac, 3),\n",
    "            \"segment_cov_frac\": round(cov_frac, 3),\n",
    "        }\n",
    "\n",
    "    if (\n",
    "        np.min([e[\"duration_s\"] for e in segments_meta if e[\"type\"] == \"speech\"]) < min_segment_dur_s or\n",
    "        np.max([e[\"duration_s\"] for e in segments_meta if e[\"type\"] == \"speech\"]) > max_segment_dur_s\n",
    "    ):\n",
    "        raise ValueError(\"incorrect segment length detected\")\n",
    "    \n",
    "    audio_rev = Audio.concatenate(audios_rev)\n",
    "    stitch_overhead_frac = (audio_rev.duration_s - tot_segment_duration_s) / audio_rev.duration_s\n",
    "#     print(\"{}% stitching overhead\".format(round(stitch_overhead_frac * 100, 1)))\n",
    "    submission_duration_s = np.ceil(audio_rev.duration_s / 60) * 60\n",
    "    tot_overhead_frac = (submission_duration_s - tot_segment_duration_s) / submission_duration_s\n",
    "#     print(\"{}% total overhead\".format(round(tot_overhead_frac * 100, 1)))\n",
    "\n",
    "    submission_meta = {\n",
    "        \"tot_silence_frac\": round(silence_frac, 3),\n",
    "        \"segment_cov_frac\": round(cov_frac, 3),\n",
    "        \"stitch_overhead_frac\": round(stitch_overhead_frac, 3),\n",
    "        \"tot_overhead_frac\": round(tot_overhead_frac, 3),\n",
    "        \"segments_meta\": segments_meta,\n",
    "    }\n",
    "    # TODO: alert on mostly silence\n",
    "    # TODO: alert on total time too short \n",
    "    # TODO: alert on coverage   \n",
    "    # TODO: alert stitching overhead\n",
    "    # TODO: alert rev rounding overhead\n",
    "    return audio_rev, submission_meta"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "b17176dc",
   "metadata": {},
   "outputs": [],
   "source": [
    "# filepath = filepaths_2[5]\n",
    "\n",
    "# audio = Audio.from_file(filepath, sample_rate=16_000, byte_width=2)\n",
    "# audio_rev, submission_meta = prep_annotation_audio(audio)\n",
    "# audio_rev.play()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 65,
   "id": "9b27da8b",
   "metadata": {},
   "outputs": [],
   "source": [
    "# !rm -rf /mnt/data-ssd-1/data/private/customer/sanas/2022-08-04-fili-callcenter/to_rev/*"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "96d0f32a",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "  4%|██████▎                                                                                                                                                | 32/761 [07:06<2:21:48, 11.67s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      "  5%|███████▎                                                                                                                                               | 37/761 [08:11<2:26:26, 12.14s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      "  5%|███████▌                                                                                                                                               | 38/761 [08:18<2:07:49, 10.61s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      "  5%|███████▉                                                                                                                                               | 40/761 [08:39<2:12:02, 10.99s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      "  6%|████████▋                                                                                                                                              | 44/761 [09:26<2:25:05, 12.14s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      "  6%|█████████▏                                                                                                                                             | 46/761 [09:45<2:14:51, 11.32s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      "  7%|██████████▋                                                                                                                                            | 54/761 [11:23<2:24:33, 12.27s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      "  7%|███████████                                                                                                                                            | 56/761 [11:45<2:20:08, 11.93s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      "  7%|███████████▎                                                                                                                                           | 57/761 [12:30<4:10:54, 21.38s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      "  8%|███████████▌                                                                                                                                           | 58/761 [12:43<3:42:57, 19.03s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      "  8%|███████████▋                                                                                                                                           | 59/761 [13:00<3:36:35, 18.51s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      "  8%|███████████▉                                                                                                                                           | 60/761 [13:16<3:27:19, 17.75s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      "  8%|████████████▎                                                                                                                                          | 62/761 [14:13<4:15:19, 21.92s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      "  9%|█████████████▎                                                                                                                                         | 67/761 [16:21<4:20:55, 22.56s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      "  9%|█████████████▍                                                                                                                                         | 68/761 [16:45<4:25:37, 23.00s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      "  9%|██████████████                                                                                                                                         | 71/761 [18:01<4:20:19, 22.64s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 10%|███████████████                                                                                                                                        | 76/761 [19:53<3:50:09, 20.16s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 10%|███████████████▋                                                                                                                                       | 79/761 [20:56<3:46:36, 19.94s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 11%|███████████████▊                                                                                                                                       | 80/761 [21:16<3:43:56, 19.73s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 11%|████████████████▎                                                                                                                                      | 82/761 [21:47<3:15:43, 17.30s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 12%|██████████████████▍                                                                                                                                    | 93/761 [25:13<4:56:34, 26.64s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 12%|██████████████████▊                                                                                                                                    | 95/761 [25:42<3:43:17, 20.12s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 13%|███████████████████▏                                                                                                                                   | 97/761 [26:34<4:04:51, 22.13s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 13%|███████████████████▉                                                                                                                                  | 101/761 [27:39<3:01:03, 16.46s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 14%|████████████████████▍                                                                                                                                 | 104/761 [28:26<2:44:21, 15.01s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 14%|█████████████████████                                                                                                                                 | 107/761 [29:10<2:38:32, 14.55s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 14%|█████████████████████▎                                                                                                                                | 108/761 [29:27<2:46:25, 15.29s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 14%|█████████████████████▋                                                                                                                                | 110/761 [30:01<2:49:22, 15.61s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 15%|██████████████████████▊                                                                                                                               | 116/761 [32:22<4:59:55, 27.90s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 16%|███████████████████████▎                                                                                                                              | 118/761 [32:45<3:31:35, 19.74s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 16%|███████████████████████▋                                                                                                                              | 120/761 [33:15<3:10:29, 17.83s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 16%|████████████████████████                                                                                                                              | 122/761 [33:46<2:51:33, 16.11s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 16%|████████████████████████▏                                                                                                                             | 123/761 [34:30<4:19:12, 24.38s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 17%|████████████████████████▊                                                                                                                             | 126/761 [35:26<3:30:41, 19.91s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 17%|█████████████████████████▍                                                                                                                            | 129/761 [36:26<3:34:27, 20.36s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 17%|██████████████████████████                                                                                                                            | 132/761 [37:01<2:38:03, 15.08s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 18%|██████████████████████████▊                                                                                                                           | 136/761 [38:27<4:06:30, 23.66s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 18%|███████████████████████████▌                                                                                                                          | 140/761 [39:52<3:29:25, 20.23s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 19%|████████████████████████████▍                                                                                                                         | 144/761 [40:52<2:44:47, 16.02s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 19%|████████████████████████████▊                                                                                                                         | 146/761 [41:51<3:39:24, 21.41s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 20%|█████████████████████████████▌                                                                                                                        | 150/761 [43:11<3:14:58, 19.15s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 20%|█████████████████████████████▊                                                                                                                        | 151/761 [43:18<2:39:39, 15.70s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 20%|██████████████████████████████▎                                                                                                                       | 154/761 [44:58<4:15:43, 25.28s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 20%|██████████████████████████████▌                                                                                                                       | 155/761 [45:41<5:08:47, 30.57s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 21%|██████████████████████████████▉                                                                                                                       | 157/761 [46:46<5:06:57, 30.49s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 21%|███████████████████████████████▏                                                                                                                      | 158/761 [47:23<5:25:34, 32.40s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 21%|███████████████████████████████▉                                                                                                                      | 162/761 [48:11<2:45:22, 16.56s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 22%|█████████████████████████████████                                                                                                                     | 168/761 [50:48<3:55:44, 23.85s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 22%|█████████████████████████████████▌                                                                                                                    | 170/761 [51:08<2:49:00, 17.16s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 22%|█████████████████████████████████▋                                                                                                                    | 171/761 [51:27<2:53:40, 17.66s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 23%|██████████████████████████████████▉                                                                                                                   | 177/761 [53:39<2:52:47, 17.75s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 24%|███████████████████████████████████▍                                                                                                                  | 180/761 [55:01<3:44:31, 23.19s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 24%|████████████████████████████████████                                                                                                                  | 183/761 [55:58<3:32:45, 22.09s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 24%|████████████████████████████████████▍                                                                                                                 | 185/761 [57:00<4:07:21, 25.77s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 25%|█████████████████████████████████████▊                                                                                                                | 192/761 [58:23<2:04:05, 13.09s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 25%|██████████████████████████████████████                                                                                                                | 193/761 [58:47<2:33:45, 16.24s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 26%|██████████████████████████████████████▊                                                                                                               | 197/761 [59:47<2:27:02, 15.64s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 26%|██████████████████████████████████████▌                                                                                                             | 198/761 [1:00:03<2:27:30, 15.72s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 26%|██████████████████████████████████████▋                                                                                                             | 199/761 [1:00:19<2:29:13, 15.93s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 27%|███████████████████████████████████████▍                                                                                                            | 203/761 [1:01:15<2:20:42, 15.13s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 27%|████████████████████████████████████████▎                                                                                                           | 207/761 [1:03:17<3:57:04, 25.68s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 28%|████████████████████████████████████████▊                                                                                                           | 210/761 [1:03:47<2:20:03, 15.25s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 28%|█████████████████████████████████████████▌                                                                                                          | 214/761 [1:04:56<2:31:00, 16.56s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 28%|██████████████████████████████████████████                                                                                                          | 216/761 [1:05:25<2:23:42, 15.82s/it]a lot of vad silence was found, try reducing aggressiveness\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 29%|██████████████████████████████████████████▏                                                                                                         | 217/761 [1:06:09<3:38:21, 24.08s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 29%|██████████████████████████████████████████▉                                                                                                         | 221/761 [1:08:09<3:59:09, 26.57s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 29%|███████████████████████████████████████████▏                                                                                                        | 222/761 [1:08:59<5:00:48, 33.48s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 29%|███████████████████████████████████████████▎                                                                                                        | 223/761 [1:09:05<3:48:43, 25.51s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 30%|████████████████████████████████████████████▏                                                                                                       | 227/761 [1:10:07<2:33:43, 17.27s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 30%|████████████████████████████████████████████▋                                                                                                       | 230/761 [1:11:17<2:46:16, 18.79s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 31%|██████████████████████████████████████████████                                                                                                      | 237/761 [1:13:17<3:12:06, 22.00s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 32%|██████████████████████████████████████████████▋                                                                                                     | 240/761 [1:13:55<2:15:58, 15.66s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 32%|███████████████████████████████████████████████▍                                                                                                    | 244/761 [1:14:59<2:24:59, 16.83s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 32%|███████████████████████████████████████████████▊                                                                                                    | 246/761 [1:15:28<2:08:34, 14.98s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 33%|████████████████████████████████████████████████▍                                                                                                   | 249/761 [1:16:34<2:27:01, 17.23s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 33%|████████████████████████████████████████████████▌                                                                                                   | 250/761 [1:16:44<2:09:28, 15.20s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 33%|████████████████████████████████████████████████▊                                                                                                   | 251/761 [1:17:04<2:20:14, 16.50s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 33%|█████████████████████████████████████████████████                                                                                                   | 252/761 [1:17:24<2:29:46, 17.66s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 34%|█████████████████████████████████████████████████▌                                                                                                  | 255/761 [1:18:04<2:09:45, 15.39s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 34%|█████████████████████████████████████████████████▊                                                                                                  | 256/761 [1:18:47<3:18:59, 23.64s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 34%|██████████████████████████████████████████████████▊                                                                                                 | 261/761 [1:20:05<2:43:46, 19.65s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 35%|███████████████████████████████████████████████████▎                                                                                                | 264/761 [1:21:16<2:50:04, 20.53s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 35%|███████████████████████████████████████████████████▌                                                                                                | 265/761 [1:21:31<2:36:08, 18.89s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 35%|███████████████████████████████████████████████████▋                                                                                                | 266/761 [1:21:43<2:17:24, 16.66s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 35%|███████████████████████████████████████████████████▉                                                                                                | 267/761 [1:21:50<1:54:19, 13.89s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 36%|████████████████████████████████████████████████████▋                                                                                               | 271/761 [1:22:52<1:56:58, 14.32s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 36%|█████████████████████████████████████████████████████                                                                                               | 273/761 [1:23:54<2:56:53, 21.75s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 37%|██████████████████████████████████████████████████████▎                                                                                             | 279/761 [1:25:34<2:04:26, 15.49s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 37%|██████████████████████████████████████████████████████▊                                                                                             | 282/761 [1:26:28<2:11:52, 16.52s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 37%|███████████████████████████████████████████████████████                                                                                             | 283/761 [1:26:39<1:56:43, 14.65s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 37%|███████████████████████████████████████████████████████▍                                                                                            | 285/761 [1:27:03<1:49:55, 13.86s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 38%|████████████████████████████████████████████████████████▌                                                                                           | 291/761 [1:29:03<2:02:44, 15.67s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 39%|█████████████████████████████████████████████████████████▉                                                                                          | 298/761 [1:30:41<1:40:59, 13.09s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 39%|██████████████████████████████████████████████████████████▎                                                                                         | 300/761 [1:31:50<2:55:38, 22.86s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 40%|███████████████████████████████████████████████████████████                                                                                         | 304/761 [1:34:07<3:50:04, 30.21s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 40%|███████████████████████████████████████████████████████████▋                                                                                        | 307/761 [1:35:33<3:23:34, 26.90s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 41%|████████████████████████████████████████████████████████████                                                                                        | 309/761 [1:36:22<3:07:28, 24.89s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 41%|████████████████████████████████████████████████████████████▊                                                                                       | 313/761 [1:37:42<2:52:09, 23.06s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 41%|█████████████████████████████████████████████████████████████                                                                                       | 314/761 [1:38:25<3:37:20, 29.17s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 42%|█████████████████████████████████████████████████████████████▍                                                                                      | 316/761 [1:39:15<3:08:31, 25.42s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 42%|██████████████████████████████████████████████████████████████▊                                                                                     | 323/761 [1:41:28<2:51:34, 23.50s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 43%|███████████████████████████████████████████████████████████████▌                                                                                    | 327/761 [1:42:23<1:49:57, 15.20s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 43%|███████████████████████████████████████████████████████████████▉                                                                                    | 329/761 [1:43:51<3:37:06, 30.15s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 44%|████████████████████████████████████████████████████████████████▊                                                                                   | 333/761 [1:44:54<2:13:31, 18.72s/it]very little vad silence was found, try increasing aggressiveness\n",
      " 44%|████████████████████████████████████████████████████████████████▉                                                                                   | 334/761 [1:45:01<1:47:49, 15.15s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 44%|█████████████████████████████████████████████████████████████████▌                                                                                  | 337/761 [1:45:40<1:37:28, 13.79s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 45%|███████████████████████████████████████████████████████████████████▎                                                                                | 346/761 [1:47:14<1:11:27, 10.33s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 46%|███████████████████████████████████████████████████████████████████▍                                                                                | 347/761 [1:47:33<1:27:57, 12.75s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 46%|███████████████████████████████████████████████████████████████████▋                                                                                | 348/761 [1:47:46<1:29:00, 12.93s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 46%|████████████████████████████████████████████████████████████████████▋                                                                               | 353/761 [1:49:15<1:35:52, 14.10s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 48%|██████████████████████████████████████████████████████████████████████▊                                                                             | 364/761 [1:52:33<1:49:10, 16.50s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 48%|██████████████████████████████████████████████████████████████████████▉                                                                             | 365/761 [1:52:46<1:42:08, 15.48s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 48%|███████████████████████████████████████████████████████████████████████▏                                                                            | 366/761 [1:53:04<1:46:09, 16.13s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 48%|███████████████████████████████████████████████████████████████████████▊                                                                            | 369/761 [1:54:05<1:54:13, 17.48s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 49%|████████████████████████████████████████████████████████████████████████▉                                                                           | 375/761 [1:55:48<2:16:30, 21.22s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 49%|█████████████████████████████████████████████████████████████████████████                                                                           | 376/761 [1:56:09<2:15:28, 21.11s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 50%|█████████████████████████████████████████████████████████████████████████▎                                                                          | 377/761 [1:56:53<2:58:04, 27.83s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 50%|█████████████████████████████████████████████████████████████████████████▉                                                                          | 380/761 [1:58:02<2:23:10, 22.55s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 51%|██████████████████████████████████████████████████████████████████████████▉                                                                         | 385/761 [1:59:41<2:38:57, 25.37s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 51%|███████████████████████████████████████████████████████████████████████████▍                                                                        | 388/761 [2:00:57<2:25:06, 23.34s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 51%|███████████████████████████████████████████████████████████████████████████▋                                                                        | 389/761 [2:01:10<2:04:34, 20.09s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 52%|████████████████████████████████████████████████████████████████████████████▍                                                                       | 393/761 [2:02:44<2:05:28, 20.46s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 52%|█████████████████████████████████████████████████████████████████████████████▍                                                                      | 398/761 [2:04:21<1:52:05, 18.53s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 53%|█████████████████████████████████████████████████████████████████████████████▊                                                                      | 400/761 [2:04:46<1:32:23, 15.36s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 54%|███████████████████████████████████████████████████████████████████████████████▎                                                                    | 408/761 [2:06:37<1:09:53, 11.88s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 54%|███████████████████████████████████████████████████████████████████████████████▋                                                                    | 410/761 [2:06:58<1:05:16, 11.16s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 54%|████████████████████████████████████████████████████████████████████████████████▌                                                                   | 414/761 [2:07:57<1:16:01, 13.15s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 55%|████████████████████████████████████████████████████████████████████████████████▋                                                                   | 415/761 [2:08:21<1:36:06, 16.67s/it]a lot of vad silence was found, try reducing aggressiveness\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 55%|█████████████████████████████████████████████████████████████████████████████████                                                                   | 417/761 [2:08:46<1:23:01, 14.48s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 55%|█████████████████████████████████████████████████████████████████████████████████▍                                                                  | 419/761 [2:09:04<1:08:12, 11.97s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 55%|█████████████████████████████████████████████████████████████████████████████████▋                                                                  | 420/761 [2:09:47<2:02:01, 21.47s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 55%|█████████████████████████████████████████████████████████████████████████████████▉                                                                  | 421/761 [2:10:00<1:46:02, 18.71s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 56%|██████████████████████████████████████████████████████████████████████████████████▍                                                                 | 424/761 [2:10:44<1:29:52, 16.00s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 56%|██████████████████████████████████████████████████████████████████████████████████▋                                                                 | 425/761 [2:11:27<2:15:23, 24.18s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 57%|████████████████████████████████████████████████████████████████████████████████████                                                                | 432/761 [2:13:17<1:37:05, 17.71s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 57%|████████████████████████████████████████████████████████████████████████████████████▊                                                               | 436/761 [2:15:01<1:59:35, 22.08s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 58%|█████████████████████████████████████████████████████████████████████████████████████▏                                                              | 438/761 [2:15:48<2:05:14, 23.26s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 58%|██████████████████████████████████████████████████████████████████████████████████████▎                                                             | 444/761 [2:17:42<1:40:47, 19.08s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 58%|██████████████████████████████████████████████████████████████████████████████████████▌                                                             | 445/761 [2:18:03<1:44:09, 19.78s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 60%|████████████████████████████████████████████████████████████████████████████████████████▉                                                           | 457/761 [2:20:55<1:18:48, 15.56s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 60%|█████████████████████████████████████████████████████████████████████████████████████████▎                                                          | 459/761 [2:21:55<1:58:17, 23.50s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 61%|█████████████████████████████████████████████████████████████████████████████████████████▊                                                          | 462/761 [2:24:09<3:11:32, 38.44s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 61%|██████████████████████████████████████████████████████████████████████████████████████████                                                          | 463/761 [2:24:16<2:23:35, 28.91s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 62%|███████████████████████████████████████████████████████████████████████████████████████████▍                                                        | 470/761 [2:27:43<1:58:45, 24.49s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 63%|████████████████████████████████████████████████████████████████████████████████████████████▌                                                       | 476/761 [2:29:21<1:25:55, 18.09s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 64%|██████████████████████████████████████████████████████████████████████████████████████████████▎                                                     | 485/761 [2:31:16<1:00:33, 13.16s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 64%|██████████████████████████████████████████████████████████████████████████████████████████████▋                                                     | 487/761 [2:31:52<1:10:25, 15.42s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 64%|██████████████████████████████████████████████████████████████████████████████████████████████▉                                                     | 488/761 [2:32:21<1:28:37, 19.48s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 64%|███████████████████████████████████████████████████████████████████████████████████████████████▎                                                    | 490/761 [2:32:46<1:10:33, 15.62s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 65%|████████████████████████████████████████████████████████████████████████████████████████████████                                                    | 494/761 [2:34:17<1:38:47, 22.20s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 65%|████████████████████████████████████████████████████████████████████████████████████████████████▎                                                   | 495/761 [2:34:25<1:19:09, 17.85s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 65%|████████████████████████████████████████████████████████████████████████████████████████████████▍                                                   | 496/761 [2:34:38<1:12:32, 16.42s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 66%|█████████████████████████████████████████████████████████████████████████████████████████████████                                                   | 499/761 [2:35:21<1:07:31, 15.46s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 66%|█████████████████████████████████████████████████████████████████████████████████████████████████▏                                                  | 500/761 [2:35:41<1:12:37, 16.69s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 66%|█████████████████████████████████████████████████████████████████████████████████████████████████▋                                                  | 502/761 [2:36:08<1:07:34, 15.65s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 66%|███████████████████████████████████████████████████████████████████████████████████████████████████▋                                                  | 506/761 [2:37:07<58:19, 13.72s/it]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "weird coverage in df5d1b13-a1c5-42f1-8936-69bdfc9ebe2c\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 67%|██████████████████████████████████████████████████████████████████████████████████████████████████▌                                                 | 507/761 [2:37:25<1:03:01, 14.89s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 67%|████████████████████████████████████████████████████████████████████████████████████████████████████▎                                                 | 509/761 [2:37:53<59:20, 14.13s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 68%|█████████████████████████████████████████████████████████████████████████████████████████████████████▌                                                | 515/761 [2:39:18<47:33, 11.60s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 68%|████████████████████████████████████████████████████████████████████████████████████████████████████▌                                               | 517/761 [2:40:27<1:32:48, 22.82s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 68%|████████████████████████████████████████████████████████████████████████████████████████████████████▉                                               | 519/761 [2:41:37<1:52:43, 27.95s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 68%|█████████████████████████████████████████████████████████████████████████████████████████████████████▏                                              | 520/761 [2:41:49<1:32:41, 23.08s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 69%|██████████████████████████████████████████████████████████████████████████████████████████████████████                                              | 525/761 [2:43:11<1:07:33, 17.18s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 69%|██████████████████████████████████████████████████████████████████████████████████████████████████████▎                                             | 526/761 [2:43:33<1:12:49, 18.59s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 69%|██████████████████████████████████████████████████████████████████████████████████████████████████████▍                                             | 527/761 [2:43:44<1:03:34, 16.30s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 69%|████████████████████████████████████████████████████████████████████████████████████████████████████████                                              | 528/761 [2:43:56<58:43, 15.12s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 70%|███████████████████████████████████████████████████████████████████████████████████████████████████████                                             | 530/761 [2:44:47<1:23:46, 21.76s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 70%|███████████████████████████████████████████████████████████████████████████████████████████████████████▎                                            | 531/761 [2:45:03<1:16:48, 20.04s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 70%|███████████████████████████████████████████████████████████████████████████████████████████████████████▍                                            | 532/761 [2:45:30<1:24:35, 22.16s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 71%|████████████████████████████████████████████████████████████████████████████████████████████████████████▍                                           | 537/761 [2:47:05<1:12:12, 19.34s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 71%|████████████████████████████████████████████████████████████████████████████████████████████████████████▋                                           | 538/761 [2:47:19<1:06:10, 17.80s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 71%|█████████████████████████████████████████████████████████████████████████████████████████████████████████                                           | 540/761 [2:48:22<1:26:21, 23.44s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 71%|█████████████████████████████████████████████████████████████████████████████████████████████████████████▍                                          | 542/761 [2:49:03<1:21:14, 22.26s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 71%|█████████████████████████████████████████████████████████████████████████████████████████████████████████▌                                          | 543/761 [2:49:14<1:07:57, 18.70s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 72%|████████████████████████████████████████████████████████████████████████████████████████████████████████████▏                                         | 549/761 [2:50:35<55:32, 15.72s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 72%|████████████████████████████████████████████████████████████████████████████████████████████████████████████▍                                         | 550/761 [2:50:47<51:21, 14.60s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 73%|████████████████████████████████████████████████████████████████████████████████████████████████████████████▊                                         | 552/761 [2:51:13<49:05, 14.10s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 73%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████                                         | 553/761 [2:51:27<49:07, 14.17s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 73%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████▌                                        | 556/761 [2:52:06<47:33, 13.92s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 74%|████████████████████████████████████████████████████████████████████████████████████████████████████████████▉                                       | 560/761 [2:53:33<1:11:01, 21.20s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 74%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████▎                                      | 562/761 [2:54:43<1:30:45, 27.36s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 74%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████▋                                      | 564/761 [2:55:16<1:09:50, 21.27s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 74%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████▌                                      | 566/761 [2:55:39<53:00, 16.31s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 75%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████▉                                      | 568/761 [2:56:02<44:54, 13.96s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 77%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████▉                                   | 583/761 [2:59:28<44:26, 14.98s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 78%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎                                 | 590/761 [3:01:22<49:55, 17.52s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 78%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▉                                 | 593/761 [3:02:07<44:58, 16.06s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 78%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▋                                | 597/761 [3:02:58<39:04, 14.29s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 79%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▋                               | 600/761 [3:04:34<1:04:30, 24.04s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 80%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍                              | 606/761 [3:06:49<50:39, 19.61s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 80%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▋                              | 607/761 [3:07:01<43:58, 17.13s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 80%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▊                              | 608/761 [3:07:13<39:38, 15.55s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 80%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍                             | 611/761 [3:07:48<32:40, 13.07s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 80%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▋                             | 612/761 [3:08:01<32:00, 12.89s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▊                             | 613/761 [3:08:17<34:07, 13.83s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 81%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▉                            | 617/761 [3:09:58<1:04:10, 26.74s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 81%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏                           | 618/761 [3:10:43<1:16:44, 32.20s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 81%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏                           | 620/761 [3:11:09<52:13, 22.22s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 82%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▉                           | 624/761 [3:11:56<32:38, 14.29s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 84%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎                        | 636/761 [3:15:24<45:15, 21.72s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 84%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌                        | 637/761 [3:15:35<38:23, 18.58s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 84%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▊                        | 638/761 [3:16:19<53:39, 26.17s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 84%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▉                        | 639/761 [3:16:33<45:27, 22.36s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 84%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏                       | 640/761 [3:17:02<49:16, 24.44s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 84%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌                       | 642/761 [3:17:30<37:00, 18.66s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 84%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▋                       | 643/761 [3:17:44<33:58, 17.28s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 85%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▉                       | 644/761 [3:18:14<40:55, 20.99s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 85%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎                      | 646/761 [3:19:09<44:12, 23.06s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 85%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌                      | 647/761 [3:19:56<57:11, 30.10s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 85%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████                      | 648/761 [3:20:39<1:04:00, 33.99s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 85%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▉                      | 649/761 [3:20:58<55:01, 29.48s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 86%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▋                     | 653/761 [3:22:37<54:58, 30.54s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 86%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████                     | 655/761 [3:23:31<51:51, 29.35s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 86%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌                    | 657/761 [3:23:58<36:39, 21.15s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 87%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████                    | 660/761 [3:24:53<30:01, 17.83s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 87%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎                   | 661/761 [3:25:05<26:35, 15.95s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 87%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍                   | 662/761 [3:25:23<27:30, 16.67s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 87%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▉                   | 664/761 [3:25:52<25:17, 15.64s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 88%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍                 | 672/761 [3:28:05<22:57, 15.48s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 88%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▋                 | 673/761 [3:28:28<26:05, 17.79s/it]a lot of vad silence was found, try reducing aggressiveness\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 89%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████                 | 675/761 [3:29:02<24:40, 17.21s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 89%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▊                | 679/761 [3:30:05<22:22, 16.37s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 90%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍              | 687/761 [3:31:53<15:31, 12.59s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 91%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▊              | 689/761 [3:32:11<12:50, 10.70s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 91%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏            | 696/761 [3:34:02<13:34, 12.54s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 92%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍            | 697/761 [3:34:45<23:16, 21.82s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 92%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌            | 698/761 [3:34:54<18:44, 17.84s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 92%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▉            | 700/761 [3:35:21<16:21, 16.09s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 92%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏           | 701/761 [3:35:43<18:03, 18.06s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 93%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▉           | 705/761 [3:37:18<23:22, 25.05s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 93%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎          | 707/761 [3:38:11<22:05, 24.55s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 93%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▊          | 709/761 [3:38:34<15:47, 18.22s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 94%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎        | 717/761 [3:41:09<15:04, 20.57s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 95%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████        | 721/761 [3:42:26<13:24, 20.12s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 95%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎       | 722/761 [3:42:45<12:52, 19.81s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 95%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▌       | 723/761 [3:43:13<14:12, 22.42s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 96%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍      | 728/761 [3:45:07<10:41, 19.45s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎     | 732/761 [3:46:00<06:41, 13.84s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 96%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▋     | 734/761 [3:46:44<08:38, 19.22s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 97%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▉     | 735/761 [3:46:56<07:28, 17.24s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 97%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▋    | 739/761 [3:47:56<05:39, 15.41s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 97%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▊    | 740/761 [3:48:43<08:42, 24.90s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 97%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████    | 741/761 [3:49:05<08:02, 24.12s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 98%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▎   | 742/761 [3:49:48<09:24, 29.70s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 98%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▍   | 743/761 [3:50:06<07:55, 26.40s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      " 98%|███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▋  | 749/761 [3:52:01<03:33, 17.76s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      "100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▊| 760/761 [3:55:54<00:17, 17.38s/it]a lot of vad silence was found, try reducing aggressiveness\n",
      "100%|██████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 761/761 [3:56:37<00:00, 18.66s/it]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "61/761 files excluded\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import tqdm\n",
    "import uuid\n",
    "\n",
    "def get_hotwords_from_filename(fname):\n",
    "    fn = os.path.split(fname)[-1]\n",
    "    fn = os.path.splitext(fn)[0]\n",
    "    fn = \"_\".join(fn.split(\"_\")[:-1])\n",
    "    fn = fn.replace(\" \", \"_\").replace(\"-\", \"_\").replace(\"__\", \"_\")\n",
    "    fn = (\n",
    "        fn.replace(\"_Male_\", \"_\")\n",
    "        .replace(\"_Female_\", \"_\")\n",
    "        .replace(\"Tagalog\", \"_\")\n",
    "        .replace(\"_PH_\", \"_\")\n",
    "        .strip(\"_\")\n",
    "    )\n",
    "    return fn.split(\"_\")\n",
    "\n",
    "metadata = []\n",
    "failed_metadata = []\n",
    "# for filepath in tqdm.tqdm(filepaths_1[:10] + filepaths_2[:10]):\n",
    "for filepath in tqdm.tqdm((filepaths_1 + filepaths_2)):\n",
    "    \n",
    "    try:\n",
    "        audio = Audio.from_file(filepath, sample_rate=16_000, byte_width=2)\n",
    "        audio_rev, submission_meta = prep_annotation_audio(audio)\n",
    "    except:\n",
    "        failed_metadata.append({\n",
    "            \"original_audio_filepath\": filepath,\n",
    "        })\n",
    "        continue\n",
    "    \n",
    "    # make filter logic\n",
    "    if audio_rev is None:\n",
    "        failed_metadata.append({\n",
    "            \"original_audio_filepath\": filepath,\n",
    "            \"misc_meta\": {\n",
    "                \"tot_silence_frac\": submission_meta[\"tot_silence_frac\"],\n",
    "                \"segment_cov_frac\": submission_meta[\"segment_cov_frac\"],\n",
    "            }\n",
    "        })\n",
    "        continue\n",
    "    \n",
    "    uid = str(uuid.uuid4())\n",
    "    rev_filepath = os.path.join(TO_REV_AUDIO_DIR, uid + \".mp3\")\n",
    "    audio_rev.to_mp3(rev_filepath)\n",
    "    hotwords = get_hotwords_from_filename(filepath)\n",
    "    \n",
    "    rough_efficiency = submission_meta[\"tot_silence_frac\"] + submission_meta[\"segment_cov_frac\"]\n",
    "    if rough_efficiency > 1.5 or rough_efficiency < 0.5:\n",
    "        print(f\"weird coverage in {uid}\")\n",
    "    \n",
    "    metadata.append({\n",
    "        \"uid\": uid,\n",
    "        \"original_audio_filepath\": filepath,\n",
    "        \"segments_meta\": submission_meta[\"segments_meta\"],\n",
    "        \"audio_duration_s\": audio_rev.duration_s,\n",
    "        \"audio_filepath\": rev_filepath,\n",
    "        \"hotwords\": hotwords,\n",
    "        \"misc_meta\": {\n",
    "            \"tot_silence_frac\": submission_meta[\"tot_silence_frac\"],\n",
    "            \"segment_cov_frac\": submission_meta[\"segment_cov_frac\"],\n",
    "            \"stitch_overhead_frac\": submission_meta[\"stitch_overhead_frac\"],\n",
    "            \"tot_overhead_frac\": submission_meta[\"tot_overhead_frac\"],\n",
    "        }\n",
    "    })\n",
    "\n",
    "print(\"{}/{} files excluded\".format(len(failed_metadata), len(failed_metadata) + len(metadata)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "06ab393e",
   "metadata": {},
   "outputs": [],
   "source": [
    "# many: a lot of vad silence was found, try reducing aggressiveness\n",
    "# weird coverage in df5d1b13-a1c5-42f1-8936-69bdfc9ebe2c\n",
    "# 61/761 files excluded"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "0424cf83",
   "metadata": {},
   "outputs": [],
   "source": [
    "with open(REV_MANIFEST_FILEPATH, \"w\") as f:\n",
    "    for meta in metadata:\n",
    "        f.write(json.dumps(meta) + \"\\n\")\n",
    "        \n",
    "with open(FAILED_MANIFEST_FILEPATH, \"w\") as f:\n",
    "    for meta in failed_metadata:\n",
    "        f.write(json.dumps(meta) + \"\\n\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "376e7c6b",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 61/761 files excluded\n",
    "# 3ea5d3b3-4826-4e1e-be7a-e4d150e6f7b9 - background chatter being transcribed\n",
    "# 4cd4d2a1-99b9-4b34-9d5c-6a936d930fbd - all silence giving few empty slices"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "d19ec5ea",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "aaaf9cf0",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "80430e0e",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "149b3b8e",
   "metadata": {},
   "source": [
    "## (optional) Investigate for mistakes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "id": "143da265",
   "metadata": {},
   "outputs": [],
   "source": [
    "metadata = []\n",
    "with open(REV_MANIFEST_FILEPATH) as f:\n",
    "    for l in f.read().strip().split(\"\\n\"):\n",
    "        metadata.append(json.loads(l))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "id": "e6d1a1bc",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "found\n"
     ]
    }
   ],
   "source": [
    "for meta in metadata:\n",
    "    if meta[\"uid\"] == \"29c7be40-46ef-4000-a8e4-e0a4e4a6b828\":\n",
    "        print(\"found\")\n",
    "        break\n",
    "#     print(meta[\"misc_meta\"][\"tot_silence_frac\"] + meta[\"misc_meta\"][\"segment_cov_frac\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e0489de1",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 2 got cancelled\n",
    "# 29c7be40-46ef-4000-a8e4-e0a4e4a6b828 - \n",
    "# 48bdcb66-c070-42e4-9cec-7fa0652787e7 - 1 min of background chatter"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "id": "9fe48a0d",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<audio controls=\"controls\" autobuffer=\"autobuffer\" style=\"width:100%;\" >\n",
       "  <source src=\"data:audio/mpeg;base64,//M4xAAT6AHkAUEYAQAR9////////wAAP8AAN/AABHh4eHhgAZ0PAAAAAAP/+OAABnww8PDx7v/wwAAAAADw8PDwwR5/A8PDw9/8AAAPD3/5//+AAACMHf4AH/86ZFSx3hg6gJAFoei46Eu3//M4xA8XktYcAY0oAGYHJ5FZFInYyRN/0qzqVVWdCFaZLZlu6slDSo6NV9FZWarPd0dndFd3TsWinSdmOUkiTs75itqzT0IRt2ZMy0OrvFBKJHCByLBiSn/F/+TqIgyJAABLADiAAF2X0hgA//M4xA8Y+859l5g4APAu2Hy2ig5rIwF4UzKdC2FJq03GiKVb//////7//6GHrSYcKSP//////7VWYt1vQ8cYsICZX/cxuT+YZKDgsJnlxIzFc+XSXIjcXAtf//+OGf//ly8FUAXR7IAcZmaJ//M4xAoXUz6ZH8M4AXYIRoXoXCc9P////PdXHGPQ4aMg0NPo//p5kxv9aL9tFVGPPPM6n5k9XHz2PYkaea8+jHNPPMf7Kee9aapd9zyx5djjiDIlkZDDBwpHHOCAMDdFVRLbbaLbbf/9SzOV//M4xAsXCW7iWMhe65jtiTb3r9Nuk1wWtqxGMIyV+3wSIbSpH7edy9cb/8/PGn9pZFfu7UhjAynOhakRIt4/0LeKxgiYhz5kTjJljVDyqvvdcKCaPgfVp34Om8/BzSoAqqqk/+35TvJTEiHu//M4xA0X8W6lkMvSuL0hSETaf6dAr40ZaXANoPES5uz7wpY1cNmvfe9yTUiZp4angQ1wSw69oYQhBqUqiXlgXxuiMG0pzBDQPOAhwuzRECUZPAXFdVyLOdZEyWBquRhqpFTlZL3tAGS2tcic//M4xAwXQaLJvmPEXgUG+pDQGs4bBcs8EggjrC/fmxdjgEmc6Ihcwz/o3OZ3iLIbC2htYT05XpVDPQM50ASsgE0t8rZf/dHzP0opjkAlCJ0SgE6SX6lA2IWmviEmGIAqJN1gA/rmjMjcqQ6Y//M4xA4UUlqw/njE8gVRcm47QVRTgp0+fh9OUdvcX8IBw1HAJu5KlZzq6n5WF1SjpVgcDP1ff/oRTnqrpr0raia+/6uYQrolpu9iNLZhzjKqAKjLuswF0rjC1t4uHg0TgQWEgJ6wiRRjAw09//M4xBsTyrq8fgJKG3O66JaV2b5plL/M5SwFQBXEBo8h8lL3ECCDuzfv/79PzoxHeu6bpdvy0VV//zkYQE1c88bVABup4+4EHE7YzNt5kO2fy04C3EKWA1TmX44oRpQ2oQKoZww5TPtN/Lba//M4xCoT8gqQfgPEGGM6OxaiUpLK0rW1KMAkBiaGVrf///5jGMhoZ/+wREztmks9R5utAJoqSOi35aESTUegJKDK9NWAkvOQFFc8L4inKJdYKAiI9c28VyJbGZHapdeWkf7P3M11to9Gz/cv//M4xDkOyHZIX0wQAP/2KttzS8MGAiAqNCU2nrPMUIDuswzaNMam2uYjXABhc8oxCoAaLiSkMPBy455FW7dFFN/toIIK0/6bVuUyumgh/2TOnycKiKBQMBZ5iJ1/5fUg6a3zVJSDor//7s9B//M4xFwnC85AAZuYAAplympFNK5cPF4V8kyj//1IKXN3YUAMwVCLpuILkkaJm4rQQmEGifw4sWYA2AfAewApQBg3//+JTHH//+NkGwXVgIBIwBiQBAaY0RKwiIsy3T//////efuQlG////////M4xB4USyaMP8UoAf+SRqf9Gock4gVjoooyAQou50E3Z6iYuLj2Y5zLkZTq888TijijiiCbhxg+cyCYoBCqsioBt22i223///+hUzafegtCWyes4AKZDs8+CxIEm43L7e7Zjn/83nnb5Skb//M4xCsUMWraWMBY6g4kPC+jQxHKZmAOBswqcObvsUWHm+2eN/du0WHiQg449kbG2ie2B///valvYZZKjHdh8GFKVSmwF5ttnNMHhGago9DAjuztro2r2CYPIwHIyUoXxxnPwu6rhF9Hwl4J//M4xDkVKXKoyMFezH0onDq5t325/rD9kvBhzZgzWhPtvuHTvcJH8RWkVSWIua0Af4ZYFpDAPLMAuhDszjlW8NQwYNGMb1mxgJtbakUMSRwY/koDUZKwIvJUMApat67sat3MNod1KVtP1Q35//M4xEMU2Z7NvnsFJltf+sLLDzP8seEonPMf94PqoAfpKb2gDOtFC5Rm5mbi/NLac4ryqNAUpqXDCc4nJ3KAggItAcmPnv5nO1b9apmcOOGBoyCAUE75QBkCjsAOlzduxzbKvJ0SrtpBwDBM//M4xE4T8NrBngvMGogKEtGUR0CZncQnom/YmIeyaQwWC1kJzk7OB+PIzR0J7umpZHyprVNF8zKYUKOxMDrLfZLSLhkmxmbV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\"/>\n",
       "  Your browser does not support the audio element.\n",
       "</audio>\n"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "play_audio(\"/mnt/data-ssd-1/data/private/customer/sanas/2022-08-04-fili-callcenter/to_rev/2022_08_07/audio/29c7be40-46ef-4000-a8e4-e0a4e4a6b828.mp3\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1b79d2e8",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1b3ca219",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6c91afe9",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "0868d256",
   "metadata": {},
   "source": [
    "## (Optional) Check price"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "37decb32",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "700 files total\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "suno     2334.3\n",
       "sanas    4715.9\n",
       "dtype: float64"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "suno_price_per_hour = 72\n",
    "suno_price_per_min = suno_price_per_hour / 60\n",
    "\n",
    "sanas_price = 162 # dollars_per_hour\n",
    "sanas_price_per_s = sanas_price / 3600  # dollars per s\n",
    "\n",
    "\n",
    "costs = []\n",
    "for rm in metadata:\n",
    "    sanas_duration_s = np.sum([sm[\"duration_s\"] for sm in rm[\"segments_meta\"] if sm[\"type\"] == \"speech\"])\n",
    "    sanas_cost = sanas_price_per_s * sanas_duration_s\n",
    "    \n",
    "    suno_cost = np.ceil(rm[\"audio_duration_s\"] / 60.) * suno_price_per_min\n",
    "    costs.append({\"suno\": suno_cost, \"sanas\": sanas_cost})\n",
    "\n",
    "print(len(metadata), \"files total\")\n",
    "costs = pd.DataFrame(costs)\n",
    "# suno     2770.8\n",
    "# sanas    4715.9\n",
    "costs.sum().round(1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "def684e9",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "fcf743da",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7a31702b",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "88a9e9cc",
   "metadata": {},
   "source": [
    "## Send stuff to rev"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "613bd82e",
   "metadata": {},
   "outputs": [],
   "source": [
    "ORDER_REF_STR = \"sns\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "686b5db2",
   "metadata": {},
   "outputs": [],
   "source": [
    "metadata = []\n",
    "with open(REV_MANIFEST_FILEPATH) as f:\n",
    "    for l in f.read().strip().split(\"\\n\"):\n",
    "        metadata.append(json.loads(l))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "e282c309",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "32.4h total\n"
     ]
    }
   ],
   "source": [
    "tot_duration_s = [m[\"audio_duration_s\"] for m in metadata]\n",
    "print(len(metadata), \"files total\")\n",
    "print(\"{}h total\".format(round(sum(tot_duration_s) / 60 / 60, 1)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "81f46bd0",
   "metadata": {},
   "outputs": [],
   "source": [
    "# metadata[0]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b16a0dd0",
   "metadata": {},
   "source": [
    "### 01 - upload items"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "2453089e",
   "metadata": {},
   "outputs": [],
   "source": [
    "import json\n",
    "from suno_utils.web.rev import get_auth_string, upload_file\n",
    "\n",
    "with open(\"/home/georg/.secrets/secrets.json\") as f:\n",
    "    secrets = json.load(f)\n",
    "    \n",
    "CLIENT_API_KEY = secrets[\"REV_CLIENT_API_KEY\"]\n",
    "USER_API_KEY = secrets[\"REV_USER_API_KEY\"]\n",
    "AUTH_STR = get_auth_string(CLIENT_API_KEY, USER_API_KEY)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "8c66f7f9",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 700/700 [15:03<00:00,  1.29s/it]\n"
     ]
    }
   ],
   "source": [
    "import tqdm\n",
    "\n",
    "order_items = []\n",
    "for audio_meta in tqdm.tqdm(metadata):\n",
    "    media_loc = upload_file(AUTH_STR, audio_meta[\"audio_filepath\"], file_ref_str=audio_meta[\"uid\"])\n",
    "    order_items.append({\n",
    "        \"media_loc\": media_loc,\n",
    "        \"hotwords\": audio_meta[\"hotwords\"],\n",
    "#         \"accents\": [\"Australian\"],\n",
    "        \"duration_s\": int(round(audio_meta[\"audio_duration_s\"])),\n",
    "        \"uuid\": audio_meta[\"uid\"],\n",
    "    })"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "a0ee5f4f",
   "metadata": {},
   "outputs": [],
   "source": [
    "with open(os.path.join(TO_REV_DIR, \"01_order_items.json\"), \"w\") as f:\n",
    "    json.dump(order_items, f)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9131358e",
   "metadata": {},
   "source": [
    "### 02 - make order"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "id": "7ccf6e0a",
   "metadata": {},
   "outputs": [],
   "source": [
    "import json\n",
    "from suno_utils.web.rev import get_auth_string, make_order\n",
    "\n",
    "with open(\"/home/georg/.secrets/secrets.json\") as f:\n",
    "    secrets = json.load(f)\n",
    "    \n",
    "CLIENT_API_KEY = secrets[\"REV_CLIENT_API_KEY\"]\n",
    "USER_API_KEY = secrets[\"REV_USER_API_KEY\"]\n",
    "AUTH_STR = get_auth_string(CLIENT_API_KEY, USER_API_KEY)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "id": "0b300ef5",
   "metadata": {},
   "outputs": [],
   "source": [
    "with open(os.path.join(TO_REV_DIR, \"01_order_items.json\"), \"r\") as f:\n",
    "    order_items = json.load(f)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "8318e46f",
   "metadata": {},
   "outputs": [],
   "source": [
    "order_number = make_order(AUTH_STR, order_items, order_ref_str=ORDER_REF_STR, add_rush=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "id": "27549d51",
   "metadata": {},
   "outputs": [],
   "source": [
    "with open(os.path.join(TO_REV_DIR, \"02_order_numer.txt\"), \"w\") as f:\n",
    "    f.write(order_number)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "45935e64",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9c5f5bd2",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "f30acc60",
   "metadata": {},
   "source": [
    "### 04 - pull transcripts"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "id": "65101ca4",
   "metadata": {},
   "outputs": [],
   "source": [
    "import json\n",
    "from suno_utils.web.rev import get_auth_string, get_finished_order, get_transcript\n",
    "\n",
    "with open(\"/home/georg/.secrets/secrets.json\") as f:\n",
    "    secrets = json.load(f)\n",
    "    \n",
    "CLIENT_API_KEY = secrets[\"REV_CLIENT_API_KEY\"]\n",
    "USER_API_KEY = secrets[\"REV_USER_API_KEY\"]\n",
    "AUTH_STR = get_auth_string(CLIENT_API_KEY, USER_API_KEY)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "id": "de613d78",
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "\n",
    "with open(os.path.join(TO_REV_DIR, \"02_order_numer.txt\")) as f:\n",
    "    order_number = f.read()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "id": "9319c7f3",
   "metadata": {},
   "outputs": [],
   "source": [
    "# # get intermediate results\n",
    "# from suno_utils.web.rev import _get_order_details, _parse_order_response\n",
    "# order_details = _get_order_details(AUTH_STR, order_number)\n",
    "# order_status, transcript_metas = _parse_order_response(order_details)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 72,
   "id": "58ae9a27",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "698 transcripts\n"
     ]
    }
   ],
   "source": [
    "transcript_metas = get_finished_order(AUTH_STR, order_number, blocking=True)\n",
    "print(len(transcript_metas), \"transcripts\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 73,
   "id": "71cd19bb",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 698/698 [00:13<00:00, 51.37it/s]\n"
     ]
    }
   ],
   "source": [
    "for transcript_meta in tqdm.tqdm(transcript_metas):\n",
    "    transcript_filepath = os.path.join(FROM_REV_DIR, f\"{transcript_meta['uuid']}.json\")\n",
    "    if os.path.exists(transcript_filepath):\n",
    "        continue\n",
    "    transcript_json = get_transcript(AUTH_STR, transcript_meta[\"rev_id\"])\n",
    "    with open(transcript_filepath, \"w\") as f:\n",
    "        json.dump(transcript_json, f)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2931df3a",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5831d7d5",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6ae45fc2",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c201b924",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "da899a89",
   "metadata": {},
   "source": [
    "## Playground"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "7ca17081",
   "metadata": {},
   "outputs": [],
   "source": [
    "# def parse_hotwords(fname):\n",
    "#     fn = os.path.split(fname)[-1]\n",
    "#     fn = os.path.splitext(fn)[0]\n",
    "#     fn = \"_\".join(fn.split(\"_\")[:-1])\n",
    "#     fn = fn.replace(\" \", \"_\").replace(\"-\", \"_\").replace(\"__\", \"_\")\n",
    "#     fn = (\n",
    "#         fn.replace(\"_Male_\", \"_\")\n",
    "#         .replace(\"_Female_\", \"_\")\n",
    "#         .replace(\"Tagalog\", \"_\")\n",
    "#         .replace(\"_PH_\", \"_\")\n",
    "#         .strip(\"_\")\n",
    "#     )\n",
    "#     return fn.split(\"_\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "f2b0ac15",
   "metadata": {},
   "outputs": [],
   "source": [
    "# for start_s, end_s in speech_segments:\n",
    "#     print(start_s, end_s)\n",
    "#     audio.get_slice(start_s, end_s).play()\n",
    "#     print(\"-\"*10)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1c6f5551",
   "metadata": {},
   "outputs": [],
   "source": [
    "# a = Audio.from_file(\"audio_indicators/full_numbers.wav\")\n",
    "# a.get_slice(0.8, 1.3).to_wav(\"audio_indicators/a.wav\")\n",
    "# a.get_slice(1.4, 1.9).to_wav(\"audio_indicators/0.wav\")\n",
    "# a.get_slice(2.0, 2.5).to_wav(\"audio_indicators/1.wav\")\n",
    "# a.get_slice(2.6, 3.1).to_wav(\"audio_indicators/2.wav\")\n",
    "# a.get_slice(3.2, 3.7).to_wav(\"audio_indicators/3.wav\")\n",
    "# a.get_slice(3.8, 4.3).to_wav(\"audio_indicators/4.wav\")\n",
    "# a.get_slice(4.3, 4.8).to_wav(\"audio_indicators/5.wav\")\n",
    "# a.get_slice(4.9, 5.4).to_wav(\"audio_indicators/6.wav\")\n",
    "# a.get_slice(5.4, 5.9).to_wav(\"audio_indicators/7.wav\")\n",
    "# a.get_slice(6.0, 6.5).to_wav(\"audio_indicators/8.wav\")\n",
    "# a.get_slice(6.6, 7.1).to_wav(\"audio_indicators/9.wav\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "id": "5d5e8c4c",
   "metadata": {},
   "outputs": [],
   "source": [
    "# !sox audio_indicators/a.wav audio_indicators/a_fast.wav tempo 1.5\n",
    "# !sox audio_indicators/0.wav audio_indicators/0_fast.wav tempo 1.5\n",
    "# !sox audio_indicators/1.wav audio_indicators/1_fast.wav tempo 1.5\n",
    "# !sox audio_indicators/2.wav audio_indicators/2_fast.wav tempo 1.5\n",
    "# !sox audio_indicators/3.wav audio_indicators/3_fast.wav tempo 1.5\n",
    "# !sox audio_indicators/4.wav audio_indicators/4_fast.wav tempo 1.5\n",
    "# !sox audio_indicators/5.wav audio_indicators/5_fast.wav tempo 1.5\n",
    "# !sox audio_indicators/6.wav audio_indicators/6_fast.wav tempo 1.5\n",
    "# !sox audio_indicators/7.wav audio_indicators/7_fast.wav tempo 1.5\n",
    "# !sox audio_indicators/8.wav audio_indicators/8_fast.wav tempo 1.5\n",
    "# !sox audio_indicators/9.wav audio_indicators/9_fast.wav tempo 1.5"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "62e669ac",
   "metadata": {},
   "outputs": [],
   "source": [
    "np.sum([g.upper - g.lower for g in vad_gaps]) / get_audio_properties(filepaths_2[0])[\"duration_s\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 76,
   "id": "9de73c5a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "/home/georg/notebooks/customers/sanas\r\n"
     ]
    }
   ],
   "source": [
    "!pwd"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "849cb2ad",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "55706e93",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "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"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
