{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "b304dfff",
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Populating the interactive namespace from numpy and matplotlib\n"
     ]
    }
   ],
   "source": [
    "%pylab inline"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "f955e852",
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "os.environ[\"CUDA_VISIBLE_DEVICES\"] = \"1\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "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, get_duration_s\n",
    "from suno_utils.utils.slicer import get_vad_gaps, get_intervals_from_gaps\n",
    "\n",
    "\n",
    "DATE_DIR = \"2022_10_13\"\n",
    "\n",
    "BASE_DIR = \"/mnt/data-ssd-1/data/private/customer/ring_central/2022-10-13-poc/\"\n",
    "\n",
    "RAW_AUDIO_DIR = os.path.join(BASE_DIR, \"raw_audio\")\n",
    "TO_REV_DIR = os.path.join(BASE_DIR, \"to_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\")\n",
    "FROM_REV_DIR = os.path.join(BASE_DIR, \"from_rev\", DATE_DIR)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "e22f6da7",
   "metadata": {},
   "outputs": [],
   "source": [
    "# shutil.rmtree(FROM_REV_DIR, ignore_errors=True)\n",
    "# shutil.rmtree(TO_REV_DIR, ignore_errors=True)\n",
    "# shutil.rmtree(TO_REV_AUDIO_DIR, ignore_errors=True)\n",
    "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": 11,
   "id": "93a2b6e9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 failed\n",
      "1426 files - 2.8 hours\n"
     ]
    }
   ],
   "source": [
    "l1 = []\n",
    "e1 = []\n",
    "for fn in os.listdir(RAW_AUDIO_DIR):\n",
    "    try:\n",
    "        l1.append(get_duration_s(os.path.join(RAW_AUDIO_DIR, fn)))\n",
    "    except:\n",
    "        e1.append(fn)  \n",
    "print(len(e1), \"failed\")\n",
    "print(len(l1), \"files -\", round(sum(l1) / 60 / 60, 1), \"hours\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "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, silent=True)\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": null,
   "id": "c7f5de1e",
   "metadata": {},
   "outputs": [],
   "source": [
    "# filepath = filepaths[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": 8,
   "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": 14,
   "id": "96d0f32a",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      " 65%|████████████████████████████████████████████████████████████████████████████████████████████▉                                                  | 6898/10614 [38:44:13<17:47:49, 17.24s/it]IOPub message rate exceeded.\n",
      "The notebook server will temporarily stop sending output\n",
      "to the client in order to avoid crashing it.\n",
      "To change this limit, set the config variable\n",
      "`--NotebookApp.iopub_msg_rate_limit`.\n",
      "\n",
      "Current values:\n",
      "NotebookApp.iopub_msg_rate_limit=1000.0 (msgs/sec)\n",
      "NotebookApp.rate_limit_window=3.0 (secs)\n",
      "\n",
      "100%|█████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 10614/10614 [59:10:39<00:00, 20.07s/it]\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "242/10614 files excluded\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 n, filepath in tqdm.tqdm(enumerate(filepaths), total=len(filepaths)):\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",
    "    if n % 100 == 0:\n",
    "        with open(REV_MANIFEST_FILEPATH, \"w\") as f:\n",
    "            for meta in metadata:\n",
    "                f.write(json.dumps(meta) + \"\\n\")\n",
    "        with open(FAILED_MANIFEST_FILEPATH, \"w\") as f:\n",
    "            for meta in failed_metadata:\n",
    "                f.write(json.dumps(meta) + \"\\n\")\n",
    "    \n",
    "with open(REV_MANIFEST_FILEPATH, \"w\") as f:\n",
    "    for meta in metadata:\n",
    "        f.write(json.dumps(meta) + \"\\n\")\n",
    "with open(FAILED_MANIFEST_FILEPATH, \"w\") as f:\n",
    "    for meta in failed_metadata:\n",
    "        f.write(json.dumps(meta) + \"\\n\")\n",
    "print(\"{}/{} files excluded\".format(len(failed_metadata), len(failed_metadata) + len(metadata)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "73860040",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10372 files total\n",
      "1959.1h total\n",
      "482.0h rev total\n",
      "433.3h segment total\n"
     ]
    }
   ],
   "source": [
    "tot_duration_s = [get_audio_properties(m[\"original_audio_filepath\"])[\"duration_s\"] for m in metadata]\n",
    "tot_rev_duration_s = [m[\"audio_duration_s\"] for m in metadata]\n",
    "tot_seg_duration_s = 0\n",
    "for m in metadata:\n",
    "    for e in m[\"segments_meta\"]:\n",
    "        if e[\"type\"] == \"speech\":\n",
    "            tot_seg_duration_s += e[\"duration_s\"]\n",
    "print(len(metadata), \"files total\")\n",
    "print(\"{}h total\".format(round(sum(tot_duration_s) / 60 / 60, 1)))\n",
    "print(\"{}h rev total\".format(round(sum(tot_rev_duration_s) / 60 / 60, 1)))\n",
    "print(\"{}h segment total\".format(round(tot_seg_duration_s / 60 / 60, 1)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e8faa9b6",
   "metadata": {},
   "outputs": [],
   "source": [
    "# !cat /mnt/data-ssd-1/data/private/customer/sanas/2022-08-04-fili-callcenter/to_rev/2022_08_11/rev_manifest.jsonl | wc -l"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b36ebbe9",
   "metadata": {},
   "outputs": [],
   "source": [
    "# rough estimates\n",
    "# 3 days of prep-time\n",
    "# 2k hours total\n",
    "# 500 hours rev submission\n",
    "# 450 hours segments\n",
    "# 400 hours final segments"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "102c0781",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "588f5904",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5172e5ef",
   "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": null,
   "id": "62b680f9",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b99cfa4e",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ce556216",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "302e99c8",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "5dac9a4c",
   "metadata": {},
   "source": [
    "## Playground"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "bf2eecb1",
   "metadata": {},
   "outputs": [],
   "source": [
    "d = os.path.join(BASE_DIR, \"Continuum_GSDExtracts\")\n",
    "a = [os.path.join(d, fn) for fn in os.listdir(d)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "dbc6cb5c",
   "metadata": {},
   "outputs": [],
   "source": [
    "d = os.path.join(BASE_DIR, \"Continuum-PH-ASR-1\")\n",
    "b = [os.path.join(d, fn) for fn in os.listdir(d)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "806a7d38",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "s1 = pd.Series([os.path.getsize(e) for e in a])\n",
    "s1.hist(bins=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "fe3e73ea",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "s2 = pd.Series([os.path.getsize(e) for e in b])\n",
    "s2.hist(bins=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "9eb867c7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 38,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "pd.Series([\n",
    "    get_audio_properties(e)[\"duration_s\"]\n",
    "    for e in a\n",
    "]).hist(bins=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "97c36287",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<AxesSubplot:>"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "pd.Series([\n",
    "    get_audio_properties(e)[\"duration_s\"]\n",
    "    for e in b\n",
    "]).hist(bins=100)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "id": "ea68418a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x7f02a920e160>"
      ]
     },
     "execution_count": 44,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "l1 = [\n",
    "    (os.path.getsize(e), get_audio_properties(e)[\"duration_s\"])  \n",
    "    for e in a\n",
    "]\n",
    "plt.scatter([e[0] for e in l1], [e[1] for e in l1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "id": "01a60b78",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x7f02a92e33d0>"
      ]
     },
     "execution_count": 42,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "l2 = [\n",
    "    (os.path.getsize(e), get_audio_properties(e)[\"duration_s\"])  \n",
    "    for e in b\n",
    "]\n",
    "plt.scatter([e[0] for e in l2], [e[1] for e in l2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "id": "646d7d4a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'/mnt/data-ssd-1/data/private/customer/sanas/2022-08-04-fili-callcenter/Continuum_GSDExtracts/2022061308183549909558765181264101.wav'"
      ]
     },
     "execution_count": 45,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "a[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "fec704ec",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'/mnt/data-ssd-1/data/private/customer/sanas/2022-08-04-fili-callcenter/Continuum-PH-ASR-1/JohnCedrick_Deri_Male_PH-Tagalog_1658860181906.wav'"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "b[0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "ee500d58",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\r\n",
      "Input File     : '/mnt/data-ssd-1/data/private/customer/sanas/2022-08-04-fili-callcenter/Continuum_GSDExtracts/2022061308183549909558765181264101.wav'\r\n",
      "Channels       : 1\r\n",
      "Sample Rate    : 8000\r\n",
      "Precision      : 14-bit\r\n",
      "Duration       : 00:23:25.49 = 11243920 samples ~ 105412 CDDA sectors\r\n",
      "File Size      : 11.2M\r\n",
      "Bit Rate       : 64.0k\r\n",
      "Sample Encoding: 8-bit u-law\r\n",
      "\r\n"
     ]
    }
   ],
   "source": [
    "!soxi /mnt/data-ssd-1/data/private/customer/sanas/2022-08-04-fili-callcenter/Continuum_GSDExtracts/2022061308183549909558765181264101.wav"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "id": "6fb90311",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\r\n",
      "Input File     : '/mnt/data-ssd-1/data/private/customer/sanas/2022-08-04-fili-callcenter/Continuum-PH-ASR-1/JohnCedrick_Deri_Male_PH-Tagalog_1658860181906.wav'\r\n",
      "Channels       : 1\r\n",
      "Sample Rate    : 44100\r\n",
      "Precision      : 16-bit\r\n",
      "Duration       : 13:31:35.77 = 2147483625 samples = 3.65218e+06 CDDA sectors\r\n",
      "File Size      : 159M\r\n",
      "Bit Rate       : 26.1k\r\n",
      "Sample Encoding: 16-bit Signed Integer PCM\r\n",
      "\r\n"
     ]
    }
   ],
   "source": [
    "!soxi /mnt/data-ssd-1/data/private/customer/sanas/2022-08-04-fili-callcenter/Continuum-PH-ASR-1/JohnCedrick_Deri_Male_PH-Tagalog_1658860181906.wav"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "985526ee",
   "metadata": {},
   "outputs": [],
   "source": [
    "Channels       : 1\n",
    "Sample Rate    : 8000\n",
    "Precision      : 14-bit\n",
    "Duration       : 00:23:25.49 = 11243920 samples ~ 105412 CDDA sectors\n",
    "File Size      : 11.2M\n",
    "Bit Rate       : 64.0k\n",
    "Sample Encoding: 8-bit u-law\n",
    "    \n",
    "Channels       : 1\n",
    "Sample Rate    : 44100\n",
    "Precision      : 16-bit\n",
    "Duration       : 13:31:35.77 = 2147483625 samples = 3.65218e+06 CDDA sectors\n",
    "File Size      : 159M\n",
    "Bit Rate       : 26.1k\n",
    "Sample Encoding: 16-bit Signed Integer PCM"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "82925a7f",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "40d8029a",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ed6af4ce",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e0c52c3c",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4bc8931d",
   "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
}
