{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "7041d21c",
   "metadata": {},
   "outputs": [],
   "source": [
    "import os\n",
    "os.environ[\"CUDA_VISIBLE_DEVICES\"] = \"0\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "91212ed0",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import whisper\n",
    "import tqdm\n",
    "\n",
    "from suno_utils.utils.slicer import get_consecutive_segments\n",
    "from suno_utils.audio import Audio\n",
    "from suno_utils.utils.text import normalize_whitespace\n",
    "\n",
    "fdir = \"/home/georg/notebooks/customers/dialpad/sample_data\"\n",
    "fns = [\n",
    "    \"20050927_210848_136.wav\",\n",
    "    \"20051023_223751_324.wav\",\n",
    "    \"20051120_190412_563.wav\",\n",
    "    \"20051023_210605_323.wav\",\n",
    "    \"20051106_221653_433.wav\",\n",
    "]\n",
    "\n",
    "whisper_model = whisper.load_model(\"large\") # tiny, base, small, medium, large\n",
    "# whisper_model = whisper.load_model(\"medium\") # tiny, base, small, medium, large"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "1ea17c83",
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "100%|████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████| 5/5 [08:08<00:00, 97.65s/it]\n"
     ]
    }
   ],
   "source": [
    "data = []\n",
    "for fn in tqdm.tqdm(fns):\n",
    "    fp = os.path.join(fdir, fn)\n",
    "    audio = Audio.from_file(fp)\n",
    "    audio_arr = audio.array_float\n",
    "    out = whisper_model.transcribe(audio_arr, language=\"es\")\n",
    "    confidence = (\n",
    "        0 \n",
    "        if len(out[\"segments\"]) == 0 \n",
    "        else int(round((1 - np.mean([np.exp(s[\"avg_logprob\"]) for s in out[\"segments\"]])) * 100))\n",
    "    )\n",
    "    data.append({\n",
    "        \"id\": fn.split(\".\")[0],\n",
    "        \"confidence\": confidence,\n",
    "        \"text\": normalize_whitespace(out[\"text\"]),\n",
    "    })"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "7e04cc88",
   "metadata": {},
   "outputs": [],
   "source": [
    "with open(\"suno_preds.txt\", \"w\") as f:\n",
    "    for m in data:\n",
    "        f.write(f\"ID: {m['id']}, Confidence: {m['confidence']}/100\\n{m['text']}\\n\\n\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9d29b4ab",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1b4dece4",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "ec27d8c3",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "cbfe51c4",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "0418ec9d",
   "metadata": {},
   "source": [
    "## Playground"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "520e89d2",
   "metadata": {},
   "outputs": [],
   "source": [
    "data = []\n",
    "for fn in fns:\n",
    "    fp = os.path.join(fdir, fn)\n",
    "    audio = Audio.from_file(fp)\n",
    "    segment_times = get_consecutive_segments(audio)\n",
    "    text_segments = []\n",
    "    for start_s, end_s in tqdm.tqdm(segment_times[:3]):\n",
    "        audio_arr = audio.get_slice(start_s, end_s).array_float\n",
    "        out = whisper_model.transcribe(audio_arr, language=\"es\")\n",
    "        text = out[\"text\"].strip()\n",
    "        if len(out[\"segments\"]) == 0:\n",
    "            confidence = 0\n",
    "        else:\n",
    "            confidence = int(round((1 - np.mean([np.exp(s[\"avg_logprob\"]) for s in out[\"segments\"]])) * 100))\n",
    "        text_segments.append(((start_s, end_s), confidence, text))\n",
    "    data.append({\n",
    "        \"id\": fn.split(\".\")[0],\n",
    "        \"segments\": text_segments,\n",
    "        \"confidence\": np.mean([conf for _, conf, _ in text_segments]),\n",
    "        \"text\": normalize_whitespace(\" \".join([text for _, _, text in text_segments])),\n",
    "    })\n",
    "    break"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "96a6ee43",
   "metadata": {},
   "outputs": [],
   "source": [
    "# !sox sample_data/20050927_210848_136.wav sample_data/20050927_210848_136_c1.wav remix 1\n",
    "# !sox sample_data/20051023_223751_324.wav sample_data/20051023_223751_324_c1.wav remix 1\n",
    "# !sox sample_data/20051120_190412_563.wav sample_data/20051120_190412_563_c1.wav remix 1\n",
    "# !sox sample_data/20051023_210605_323.wav sample_data/20051023_210605_323_c1.wav remix 1\n",
    "# !sox sample_data/20051106_221653_433.wav sample_data/20051106_221653_433_c1.wav remix 1\n",
    "\n",
    "# !sox sample_data/20050927_210848_136.wav sample_data/20050927_210848_136_c2.wav remix 2\n",
    "# !sox sample_data/20051023_223751_324.wav sample_data/20051023_223751_324_c2.wav remix 2\n",
    "# !sox sample_data/20051120_190412_563.wav sample_data/20051120_190412_563_c2.wav remix 2\n",
    "# !sox sample_data/20051023_210605_323.wav sample_data/20051023_210605_323_c2.wav remix 2\n",
    "# !sox sample_data/20051106_221653_433.wav sample_data/20051106_221653_433_c2.wav remix 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "fff13f03",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "100% [......................................................................] 140216149 / 140216149"
     ]
    }
   ],
   "source": [
    "transcripts = [\n",
    "    transcribe(os.path.join(fdir, fn), model_name=\"stt_es_citrinet_512\") for fn in fns\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "9a3157c6",
   "metadata": {},
   "outputs": [],
   "source": [
    "transcripts = [\n",
    "    transcribe(os.path.join(fdir, fn), model_name=\"stt_es_citrinet_512\") for fn in fns\n",
    "]\n",
    "logits = [\n",
    "    transcribe(os.path.join(fdir, fn), model_name=\"stt_es_citrinet_512\", mode=\"logits\") for fn in fns\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "8925c7b0",
   "metadata": {},
   "outputs": [],
   "source": [
    "transcripts = []\n",
    "for fn in fns:\n",
    "    _, logits = transcribe(os.path.join(fdir, fn), model_name=\"stt_es_citrinet_512\", mode=\"logits\")\n",
    "    text = transcribe(os.path.join(fdir, fn), model_name=\"stt_es_citrinet_512\")\n",
    "    conf = np.exp(logits).max(axis=1).mean()\n",
    "    transcripts.append((round(conf, 2), text))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "3d6a7fb9",
   "metadata": {},
   "outputs": [],
   "source": [
    "with open(\"pred.txt\", \"w\") as f:\n",
    "    for conf, text in transcripts:\n",
    "        f.write(str(conf) + \"\\n\" + text + \"\\n\\n\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "3dee9ef7",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "6994831bbfff4253b8e390aeff765231",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Downloading:   0%|          | 0.00/1.98k [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "db2369ba50b047089d1d69cb0d177063",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Downloading:   0%|          | 0.00/290M [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "e230ac28d29e4e75955e71aa0ab31298",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Downloading:   0%|          | 0.00/185k [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "1abfabb7c64d49c096eaad4771a72c3e",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Downloading:   0%|          | 0.00/827 [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "fba5552bc75348f0b9d2785beab1c9e0",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Downloading:   0%|          | 0.00/1.04M [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "fb635b53c423474ba981de1f3760b0fa",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Downloading:   0%|          | 0.00/494k [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "e417a084163847878928e2b2f634577e",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Downloading:   0%|          | 0.00/52.7k [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "7262868c46c04cb09ab6988a0a2c0677",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Downloading:   0%|          | 0.00/2.11k [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "f9df811a5eb44a2892fd89bd0ebabbb6",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Downloading:   0%|          | 0.00/2.06k [00:00<?, ?B/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import torch\n",
    "from suno_utils.audio import Audio\n",
    "from transformers import WhisperForConditionalGeneration, WhisperProcessor\n",
    "\n",
    "model = WhisperForConditionalGeneration.from_pretrained(\"openai/whisper-base\").to(\"cuda\")\n",
    "processor = WhisperProcessor.from_pretrained(\"openai/whisper-base\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "779b3a4d",
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "\n",
    "%%time\n",
    "audio_arr = Audio.from_file(\"sample_audio/russia.wav\").array_float\n",
    "with torch.no_grad():\n",
    "    input_features = processor(audio_arr, return_tensors=\"pt\", sampling_rate=16_000).input_features.to(\"cuda\")\n",
    "    generated_ids = model.generate(\n",
    "        inputs=input_features,\n",
    "        num_beams=3,\n",
    "        max_length=100,\n",
    "    )\n",
    "transcription = processor.batch_decode(generated_ids, skip_special_tokens=True)[0].strip()\n",
    "del input_features, generated_ids\n",
    "print(transcription)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "586c4373",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "79096f01",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "d9f4b258",
   "metadata": {},
   "source": [
    "## Playground"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "017f15c1",
   "metadata": {},
   "outputs": [],
   "source": [
    "for fn in fns:\n",
    "    raw_tokens_1 = transcribe(\n",
    "        os.path.join(fdir, fn.split(\".\")[0] + \"_c1.wav\"),\n",
    "        model_name=\"stt_es_citrinet_512\", \n",
    "        mode=\"tokens\",\n",
    "    )\n",
    "    raw_tokens_2 = transcribe(\n",
    "        os.path.join(fdir, fn.split(\".\")[0] + \"_c2.wav\"),\n",
    "        model_name=\"stt_es_citrinet_512\", \n",
    "        mode=\"tokens\",\n",
    "    )\n",
    "    confidence = np.mean([c for _, _, c in raw_tokens_1] + [c for _, _, c in raw_tokens_2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "id": "bb5151b1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[((0.32, 1.12), 'a la buena noche'),\n",
       " ((3.92, 7.19), 'ah la matatina quien se lo de tomó esta'),\n",
       " ((9.83, 15.43),\n",
       "  'sí al principio yo creo sí como estaba mucho bulto como usted'),\n",
       " ((16.87, 19.82), 'pues bien aquí un poquito fraquito ya el tiempo'),\n",
       " ((21.98, 22.94), 'te ha puestoo'),\n",
       " ((27.34, 30.61), 'oh ma ti por aquí tan setenta y algo'),\n",
       " ((33.89, 36.61), 'en tu seye sannta es fos y como chiqueo'),\n",
       " ((38.13, 45.56),\n",
       "  'ah sé donde tal y fuerte la cosa cuando venga la nieve tiene mucho paño viendo allí'),\n",
       " ((49.16, 49.24), 'llegó'),\n",
       " ((50.84, 52.35), 'tiene die ys siete años allí'),\n",
       " ((54.03, 60.67),\n",
       "  'ah tamocastiguario tengo quince quin filodelfia nte vivía en california y no soti le conté pero'),\n",
       " ((62.59, 67.31),\n",
       "  'ah entonces bueno y como le ido con el programa la llaman todos los días'),\n",
       " ((83.06, 86.26), 'a por si porte lee por no compra por todo'),\n",
       " ((87.77, 93.13),\n",
       "  'que si te pedió cosa yo poquita pero si he comprado algo sobre todo'),\n",
       " ((97.93, 102.49),\n",
       "  'ah si viese yo no comptar pasajes y compraros la cosa por ibey'),\n",
       " ((103.53, 104.01), 'y veis'),\n",
       " ((105.69, 109.84), 'menos son bien necio pero yo me caí y sin algunos'),\n",
       " ((112.32, 126.07),\n",
       "  'que si no bien me cobraron interés de porque yo el pago mío se atrastó y eso piyojo había dicho que que no me que yo iba mandando ni ordende o camina me gustais sobre datarjetas de cdiditoría'),\n",
       " ((134.86, 135.66), 'ponerlo allí'),\n",
       " ((138.05, 138.13), 'no'),\n",
       " ((141.89, 142.61), 'y usted lo comp'),\n",
       " ((147.16, 147.96), 'y a'),\n",
       " ((153.31, 154.11), 'yo no sabe'),\n",
       " ((158.98, 159.46), 'cómo ser'),\n",
       " ((164.42, 165.54), 'y no le mandaaron más'),\n",
       " ((167.61, 168.09), 'hidalde'),\n",
       " ((170.01, 172.65), 'y y entonces tomó'),\n",
       " ((174.32, 175.52), 'no se lo devolvieron'),\n",
       " ((186.71, 189.9), 'y apareció del cobro pero no sé no se conoce la persona'),\n",
       " ((196.85, 233.44),\n",
       "  'como que yo uno que cree con un cheque pu de decir lograr el rastrear una amiga mía le pasó parecido pero con pasajes de pero no así dequélla buscó sino que le ofrecieron un crucero no para la pelill el esposo pero compañía sino comono hombre y dirección y tele de fonitos tose ella pues como que metio por la tarjeta a crédito para reservar mas como queiento mildia no seco una parte del de los pasajes pues cuando fueron aya bala en ese viaje eso le dieron que eso no exsistía'),\n",
       " ((234.48, 239.35),\n",
       "  'y mi de ni vio ni muerto le devolieron lo que parte que las tarjetas de crédito parece que si'),\n",
       " ((240.63, 241.91), 'le dan una parte a la persona'),\n",
       " ((252.69, 263.88),\n",
       "  'sí parece que la taleta le devolvió lo que pagó a principio una con sí o ya hizo como dos pagos creo y después la otra parte que pagó de otra manera el tucesoro'),\n",
       " ((281.05, 289.68),\n",
       "  'tiw yo lo uso sí también y y de y a la vez me que me agarraron de de tonta lo que llaman los pescadores fischers'),\n",
       " ((291.52, 300.07),\n",
       "  'te manda un mimel que urgente que mandes tus datos para be mece como yo yo voy tengo a me seenta para conectarme por internet'),\n",
       " ((301.19, 308.22),\n",
       "  'y todo decía que de me en ni que necesitaban to al estar mi tu lleva jué de boba ap es mi mi'),\n",
       " ((309.26, 312.3), 'que fue lo que yo puse de la cuenta del banco'),\n",
       " ((313.74, 323.97),\n",
       "  'entonces cuando llegó un punto y me pone que ponga el pin su pn nombre di yo esto no metaré esto no me gusta porque nadie quiere saber por qué tienen que estar el pie'),\n",
       " ((325.08, 344.27),\n",
       "  'a hay parís entre ella me hayme ese en portalejo no me dieron no señora o no no somos nosotros valle cambiar e irrita mismo cambia su paso tu sabes el sanu y la connecta y todo ya tú que cambia todo cambiarlas y la cuenta del banco'),\n",
       " ((358.65, 359.45), 'huye yo'),\n",
       " ((360.73, 361.37), 'mesuté'),\n",
       " ((381.66, 403.24),\n",
       "  'me si ella da también compró pia y y que isa luche pero una sola cosa compré por tallefono verdad que fue una especial que presamente la computadora que salió de giulepak que yo camino encantaba esa comarca y como tenía una rota llague que me vendieron de truco ha yo caído yo como'),\n",
       " ((409.71, 419.06),\n",
       "  'biendo el canal hipano que salía algunos tipo y que a mande pedir su computadora rebaja en especial que seiscientos dólares todo'),\n",
       " ((420.65, 422.01), 'ande sí'),\n",
       " ((425.53, 428.72), 'ay pre eso no si ni dos mes por qué la'),\n",
       " ((435.52, 438.07), 'ah por del demarca'),\n",
       " ((445.34, 447.66), 'jot anan la pidió'),\n",
       " ((452.45, 454.69), 'y lebecieron pago por por parte'),\n",
       " ((458.28, 459.96), 'hasta bueno a no hombre'),\n",
       " ((461.32, 461.88), 'yo compré'),\n",
       " ((464.04, 466.27), 'apocheverísimo pero a mí me salió'),\n",
       " ((467.31, 468.19), 'yo compré la ga'),\n",
       " ((469.87, 476.42),\n",
       "  'no de esa de los de los hipánome saló por metemet hasta viendo esto mi de pa seiscientos'),\n",
       " ((478.1, 482.9),\n",
       "  'no la compañía desapareció después todos los números de teléfono salían otra otras veinte'),\n",
       " ((484.02, 484.1), 'a'),\n",
       " ((486.57, 487.61), 'y con propagada'),\n",
       " ((489.85, 490.09), 'en nada'),\n",
       " ((492.25, 503.76),\n",
       "  'el telemundo me sacaron y después o que ahora la que comp por yo le paca no eso si fue como es dema arca y garantizada eso llegó perfecto y'),\n",
       " ((505.27, 518.14),\n",
       "  'y como comprend yoó la queywy aber secó la cabina fue oferta también que llamaran a gay wal ni la a probaron y ser le pegaría amigo la gaw preso se se pagó y no pasó mucho'),\n",
       " ((534.92, 535.8), 'como apeda'),\n",
       " ((557.45, 558.09), 'por correo'),\n",
       " ((579.42, 583.74), 'reo capititi ap llegaron a ir a méxico y todos'),\n",
       " ((585.01, 585.57), 'pero era una'),\n",
       " ((586.77, 587.41), 'un fraude'),\n",
       " ((590.85, 592.21), 'a no ocasión'),\n",
       " ((605.15, 607.23), 'en el cuarto horrible me imaginó'),\n",
       " ((616.57, 616.65), 'ma'),\n",
       " ((632.39, 637.5), 'un barquito por ahí agabay to pinta a ik roll'),\n",
       " ((644.14, 644.22), 'po'),\n",
       " ((648.69, 649.73), 'sepasron para otros'),\n",
       " ((660.35, 660.43), 'a'),\n",
       " ((667.62, 668.26), 'la ruina'),\n",
       " ((672.98, 677.61),\n",
       "  'eso se enferma uno ma nadie tiene quese de a allípo capaz de dar una infección'),\n",
       " ((681.53, 689.12),\n",
       "  'telogo rome manaique carneval cruzru carneval cruzroscinath thepati si'),\n",
       " ((709.73, 712.35), 'ah dice que nota yo ni lo he visto')]"
      ]
     },
     "execution_count": 46,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# make speech turns\n",
    "turns_1 = []\n",
    "tmp = []\n",
    "last_ts = None\n",
    "last_te = None\n",
    "for t, (ts, te), _ in raw_tokens_1:\n",
    "    if len(t.strip()) == 0:\n",
    "        continue\n",
    "    if len(tmp) > 0 and ts - last_te >= 1:\n",
    "        turns_1.append(((last_ts, last_te), \" \".join(tmp)))\n",
    "        tmp = []\n",
    "        last_ts = ts\n",
    "    if len(tmp) == 0:\n",
    "        last_ts = ts\n",
    "    tmp.append(t)\n",
    "    last_te = te\n",
    "if len(tmp) > 0:\n",
    "    turns_1.append(((last_ts, last_te), \" \".join(tmp)))\n",
    "turns_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "id": "4722f2bd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[((0.32, 1.12), 'a la buena noche'),\n",
       " ((3.92, 7.19), 'ah la matatina quien se lo de tomó esta'),\n",
       " ((9.83, 15.43),\n",
       "  'sí al principio yo creo sí como estaba mucho bulto como usted'),\n",
       " ((16.87, 19.82), 'pues bien aquí un poquito fraquito ya el tiempo'),\n",
       " ((21.98, 22.94), 'te ha puestoo'),\n",
       " ((27.34, 30.61), 'oh ma ti por aquí tan setenta y algo'),\n",
       " ((33.89, 36.61), 'en tu seye sannta es fos y como chiqueo'),\n",
       " ((38.13, 45.56),\n",
       "  'ah sé donde tal y fuerte la cosa cuando venga la nieve tiene mucho paño viendo allí'),\n",
       " ((49.16, 49.24), 'llegó'),\n",
       " ((50.84, 52.35), 'tiene die ys siete años allí'),\n",
       " ((54.03, 60.67),\n",
       "  'ah tamocastiguario tengo quince quin filodelfia nte vivía en california y no soti le conté pero'),\n",
       " ((62.59, 67.31),\n",
       "  'ah entonces bueno y como le ido con el programa la llaman todos los días'),\n",
       " ((83.06, 86.26), 'a por si porte lee por no compra por todo'),\n",
       " ((87.77, 93.13),\n",
       "  'que si te pedió cosa yo poquita pero si he comprado algo sobre todo'),\n",
       " ((97.93, 102.49),\n",
       "  'ah si viese yo no comptar pasajes y compraros la cosa por ibey'),\n",
       " ((103.53, 104.01), 'y veis'),\n",
       " ((105.69, 109.84), 'menos son bien necio pero yo me caí y sin algunos'),\n",
       " ((112.32, 126.07),\n",
       "  'que si no bien me cobraron interés de porque yo el pago mío se atrastó y eso piyojo había dicho que que no me que yo iba mandando ni ordende o camina me gustais sobre datarjetas de cdiditoría'),\n",
       " ((134.86, 135.66), 'ponerlo allí'),\n",
       " ((138.05, 138.13), 'no'),\n",
       " ((141.89, 142.61), 'y usted lo comp'),\n",
       " ((147.16, 147.96), 'y a'),\n",
       " ((153.31, 154.11), 'yo no sabe'),\n",
       " ((158.98, 159.46), 'cómo ser'),\n",
       " ((164.42, 165.54), 'y no le mandaaron más'),\n",
       " ((167.61, 168.09), 'hidalde'),\n",
       " ((170.01, 172.65), 'y y entonces tomó'),\n",
       " ((174.32, 175.52), 'no se lo devolvieron'),\n",
       " ((186.71, 189.9), 'y apareció del cobro pero no sé no se conoce la persona'),\n",
       " ((196.85, 233.44),\n",
       "  'como que yo uno que cree con un cheque pu de decir lograr el rastrear una amiga mía le pasó parecido pero con pasajes de pero no así dequélla buscó sino que le ofrecieron un crucero no para la pelill el esposo pero compañía sino comono hombre y dirección y tele de fonitos tose ella pues como que metio por la tarjeta a crédito para reservar mas como queiento mildia no seco una parte del de los pasajes pues cuando fueron aya bala en ese viaje eso le dieron que eso no exsistía'),\n",
       " ((234.48, 239.35),\n",
       "  'y mi de ni vio ni muerto le devolieron lo que parte que las tarjetas de crédito parece que si'),\n",
       " ((240.63, 241.91), 'le dan una parte a la persona'),\n",
       " ((252.69, 263.88),\n",
       "  'sí parece que la taleta le devolvió lo que pagó a principio una con sí o ya hizo como dos pagos creo y después la otra parte que pagó de otra manera el tucesoro'),\n",
       " ((281.05, 289.68),\n",
       "  'tiw yo lo uso sí también y y de y a la vez me que me agarraron de de tonta lo que llaman los pescadores fischers'),\n",
       " ((291.52, 300.07),\n",
       "  'te manda un mimel que urgente que mandes tus datos para be mece como yo yo voy tengo a me seenta para conectarme por internet'),\n",
       " ((301.19, 308.22),\n",
       "  'y todo decía que de me en ni que necesitaban to al estar mi tu lleva jué de boba ap es mi mi'),\n",
       " ((309.26, 312.3), 'que fue lo que yo puse de la cuenta del banco'),\n",
       " ((313.74, 323.97),\n",
       "  'entonces cuando llegó un punto y me pone que ponga el pin su pn nombre di yo esto no metaré esto no me gusta porque nadie quiere saber por qué tienen que estar el pie'),\n",
       " ((325.08, 344.27),\n",
       "  'a hay parís entre ella me hayme ese en portalejo no me dieron no señora o no no somos nosotros valle cambiar e irrita mismo cambia su paso tu sabes el sanu y la connecta y todo ya tú que cambia todo cambiarlas y la cuenta del banco'),\n",
       " ((358.65, 359.45), 'huye yo'),\n",
       " ((360.73, 361.37), 'mesuté'),\n",
       " ((381.66, 403.24),\n",
       "  'me si ella da también compró pia y y que isa luche pero una sola cosa compré por tallefono verdad que fue una especial que presamente la computadora que salió de giulepak que yo camino encantaba esa comarca y como tenía una rota llague que me vendieron de truco ha yo caído yo como'),\n",
       " ((409.71, 419.06),\n",
       "  'biendo el canal hipano que salía algunos tipo y que a mande pedir su computadora rebaja en especial que seiscientos dólares todo'),\n",
       " ((420.65, 422.01), 'ande sí'),\n",
       " ((425.53, 428.72), 'ay pre eso no si ni dos mes por qué la'),\n",
       " ((435.52, 438.07), 'ah por del demarca'),\n",
       " ((445.34, 447.66), 'jot anan la pidió'),\n",
       " ((452.45, 454.69), 'y lebecieron pago por por parte'),\n",
       " ((458.28, 459.96), 'hasta bueno a no hombre'),\n",
       " ((461.32, 461.88), 'yo compré'),\n",
       " ((464.04, 466.27), 'apocheverísimo pero a mí me salió'),\n",
       " ((467.31, 468.19), 'yo compré la ga'),\n",
       " ((469.87, 476.42),\n",
       "  'no de esa de los de los hipánome saló por metemet hasta viendo esto mi de pa seiscientos'),\n",
       " ((478.1, 482.9),\n",
       "  'no la compañía desapareció después todos los números de teléfono salían otra otras veinte'),\n",
       " ((484.02, 484.1), 'a'),\n",
       " ((486.57, 487.61), 'y con propagada'),\n",
       " ((489.85, 490.09), 'en nada'),\n",
       " ((492.25, 503.76),\n",
       "  'el telemundo me sacaron y después o que ahora la que comp por yo le paca no eso si fue como es dema arca y garantizada eso llegó perfecto y'),\n",
       " ((505.27, 518.14),\n",
       "  'y como comprend yoó la queywy aber secó la cabina fue oferta también que llamaran a gay wal ni la a probaron y ser le pegaría amigo la gaw preso se se pagó y no pasó mucho'),\n",
       " ((534.92, 535.8), 'como apeda'),\n",
       " ((557.45, 558.09), 'por correo'),\n",
       " ((579.42, 583.74), 'reo capititi ap llegaron a ir a méxico y todos'),\n",
       " ((585.01, 585.57), 'pero era una'),\n",
       " ((586.77, 587.41), 'un fraude'),\n",
       " ((590.85, 592.21), 'a no ocasión'),\n",
       " ((605.15, 607.23), 'en el cuarto horrible me imaginó'),\n",
       " ((616.57, 616.65), 'ma'),\n",
       " ((632.39, 637.5), 'un barquito por ahí agabay to pinta a ik roll'),\n",
       " ((644.14, 644.22), 'po'),\n",
       " ((648.69, 649.73), 'sepasron para otros'),\n",
       " ((660.35, 660.43), 'a'),\n",
       " ((667.62, 668.26), 'la ruina'),\n",
       " ((672.98, 677.61),\n",
       "  'eso se enferma uno ma nadie tiene quese de a allípo capaz de dar una infección'),\n",
       " ((681.53, 689.12),\n",
       "  'telogo rome manaique carneval cruzru carneval cruzroscinath thepati si'),\n",
       " ((709.73, 712.35), 'ah dice que nota yo ni lo he visto'),\n",
       " ((0.32, 9.2),\n",
       "  'a la buena noche buena nota te la humildad de conérico a nada tralina quien filodefi ya ya habíamos hablado verdad le trata'),\n",
       " ((10.96, 27.51),\n",
       "  'sí que yo creo y como está mucho mundo lo más bien eltaquetal muy bien aquí un poquito fraquito ya el tiempo no esto pafrito se ha puesto pri en sujójo pama con cuán pico la temperaturatada a'),\n",
       " ((29.27, 36.95),\n",
       "  'aquí tanto trenta ymos solo no ya quetamos en cuanto a la noche hasta cincuenta entonces llegaganta es priósica mo chiquero y'),\n",
       " ((38.15, 47.1),\n",
       "  'a señora mucha nada menos fuerte la cosa cuando venga no miere usted mucho caño viye yaoco'),\n",
       " ((49.18, 56.54),\n",
       "  'llegó oh tiene viti si que añadi a que ese di ah tan montigurio tengo quince que'),\n",
       " ((58.78, 61.02), 'california y con sí'),\n",
       " ((63.89, 74.84),\n",
       "  'su y cómo le yo conmallamiento de los días sé todos los días casi todos los días ve helastado sola coge la máquina pero la en san bopelón ma he salido'),\n",
       " ((76.12, 86.27),\n",
       "  'pero sin estetáco timbblará aquel lo de la compra por la interne y el servicio deja por si porte por lo comp tu'),\n",
       " ((88.43, 91.31), 'pidió con y un moquita no sé comp'),\n",
       " ((92.43, 96.9),\n",
       "  'no yo pontele para no comprado nada único caden de la indinta de pasajo'),\n",
       " ((97.94, 117.52),\n",
       "  'ah siiese yo no comppaje como una cucha por yvey ana irve no me gusta menos son bien me pero yo me creí no coge nada ve temo mucha antes de tontan ese ir de que vi no donne me cobraron interés de porquelle el pgo mío'),\n",
       " ((118.8, 140.88),\n",
       "  'yo yo les había dicho que que no me que yo ir mimonio hombre perorme el perje de yo se muta con un palmate po la es otra de las cosas que no me gusta comp pronto lantene di en que dar la información de crédito que no por lo seme muy muy confiable para mí solamente la agencia yo compró los pataje por la delu'),\n",
       " ((141.92, 146.0), 'y mi compañía amercannealnes compañía que ya que son man'),\n",
       " ((147.03, 147.67), 'feria ver'),\n",
       " ((149.03, 158.31),\n",
       "  'a fin hay cosas que ofrezcan conve y no no que un señor comproncarroy y y lotildaron donde le quitaron cinco mil libras'),\n",
       " ((159.83, 163.27),\n",
       "  'si le dijeron que mandara a los cinco mil peso ella le mandaron'),\n",
       " ((164.71, 168.87), 'no manda no nada donde el día ni el tipo'),\n",
       " ((171.43, 171.51), 'tú'),\n",
       " ((172.55, 182.23),\n",
       "  'entonces pasa queda sin dinero no se lo devolvieron no no poco que el mandócha que santificaban el tipolo lo cambiaan no otra persona que tampoco existe'),\n",
       " ((183.91, 185.43), 'con con papel falsos'),\n",
       " ((186.71, 200.3),\n",
       "  'y apareció en el cobro pero no sé no se conoce una persona exacta no era la tal la gentedonde el decía que tenía el di el de carro está más efetivo como que yo uno que cree con un cheque pudie de ser logra'),\n",
       " ((201.5, 221.65),\n",
       "  'rastrear una amiga mía le pasó parecido pero con pasajes de pero no así aquella buscó sino que lo ofrecieron un crucero después allí le puso ojos pero compañía sino con hombre dirección y teleía fnitu tose ella pues como que metió por la torta a crerédito oh mandaerva'),\n",
       " ((222.69, 224.61), 'mas como que vientomilde'),\n",
       " ((225.65, 226.37), 'una parte del'),\n",
       " ((227.89, 233.49),\n",
       "  'pues cuando fueron a llevarse este viaje riron que esto no exsistía'),\n",
       " ((234.69, 239.41),\n",
       "  'ni de mi vivo ni muerto le debe huir lo que parte que las tarjetas he creto parece que sí'),\n",
       " ((240.69, 279.8),\n",
       "  'le dan una parte la persona si todo ese dolor lo seclama dentro de cierto tiempo ellos tienen un límite de tiempo para toda hacer la reclamación te devuelva en una una paondí peroge marriita le devolvió lo que pagó al principio no con ya hizo como ungo cretide buenouelo en otra parte que pregu otra manera entonces y él le coja tal información mita para uarla en lo que quieren para hacer tengo camino este servicio de no me gusta tampoco me gustan los personales de eso pre parara trabajos de gustoa lapaucal trabajo para para mí esome para esa encuentro buena encevicia de'),\n",
       " ((281.32, 293.64),\n",
       "  'le entende yo sí también y de una vez me que me guerraron desde de tonta lo llaman los pescadores yche usted bajas que te ven re unni mi que urgente que mande'),\n",
       " ((295.48, 300.36),\n",
       "  'meté como yo yo voy tengo una mesnta a conectarme por internet todo'),\n",
       " ((301.4, 308.27),\n",
       "  'todo se de que creerme de que necesitabanto estar mito yo me juse de boa juan es mi mi'),\n",
       " ((309.31, 336.17),\n",
       "  'que fue lo que yo puse éste la cuenta del banco oh macha entonces cuando lle un punto me pone que ponga el pin su tín nombre di yo esto no me teré en esto no me gusta porque nadie quiere porque tienen que saber el pie en ta tajas a tratoria patonala y entre ya me hay ese portalejo no me diera no señora uno no somos nosotros vaye cambiar e irrita mismo cambia su pa su'),\n",
       " ((338.49, 352.4),\n",
       "  'dejada conecta y todo de todo que cambia todo cambiar tra y la cuenta del barco se la cuadra un montondo a per un montón pasa la cotaron así con esa defo van con conoce tantota los fa so da tan ca'),\n",
       " ((354.08, 356.88),\n",
       "  'para robarla toda la identidad de todas las cosas las en'),\n",
       " ((358.87, 365.75),\n",
       "  'yo yo no megunta por tal la solo que había comprado por tenermentedo por tener nuncaro que haya ganado pea'),\n",
       " ((369.18, 373.82),\n",
       "  'un malógo que pido vuelta lejos una pia y sí que hiro chino'),\n",
       " ((374.86, 375.17), 'de momento'),\n",
       " ((377.01, 379.73), 'todo polita las por si ya me he comprado nada nada'),\n",
       " ((383.33, 384.12), 'ven propi'),\n",
       " ((385.32, 403.22),\n",
       "  'está noche pero por una sola cosa nor pornezo no reca sobre una especial que prontamente la computadora que salió deji la puerta que yo me encantaba esta comarca y como tenía un roda talla de que me vendieron de truco no ha yo caído yocu'),\n",
       " ((406.66, 412.73),\n",
       "  'se ha pasado este parte por bien tener la famale en uno tipos'),\n",
       " ((414.01, 421.84),\n",
       "  'mande preo compu rebaja en mi especial que se siento una naranja computadora vi que la repara'),\n",
       " ((423.28, 459.32),\n",
       "  'si le cambian la memoria y eso ay pre eso no sirv niidome pre levantamos una po a fiel manoyo no nadie me la compró pero la él la comproponda y es muy buena la catana anda teente de que me mata al tu sacate que tú la pagas así poquita pope la ordenó así por por medio de le la la viera noche en la televisión y tocela la llenó en la azada llenada en mi lintenet y la compró y ya ha salidow y le vinie hicieron pago por por parte ah si esata pagac que treinta y siete doólares algo f'),\n",
       " ((461.0, 466.36), 'una bobada pero la termina de pagaánche b me me sonó'),\n",
       " ((467.4, 470.67), 'yo comprend que sal le dañada no es de lo'),\n",
       " ((473.07, 474.19), 'por me teme a'),\n",
       " ((475.95, 482.1),\n",
       "  'y no te no te devolviera nada no la compañía desaparecido por todos los números de teléfono con otro'),\n",
       " ((483.14, 500.64),\n",
       "  'smith pero trata una de esos agunchas revocón enta gente en el buen gran cuenta que más cosa inventarse de porquería para para sacarle dinero a la gente en del el mundo me sacaron y después que ahora la que compré por yo le paca no eso si puede con buenaja'),\n",
       " ((501.67, 503.75), 'eso llegó perfecto y'),\n",
       " ((505.27, 512.22),\n",
       "  'y como comprend yo la queywy a según la cabina oferta también que llamaban a gayw ni la probaron'),\n",
       " ((513.82, 534.19),\n",
       "  'amigo lew un precio se se pagó vino pa y mebrasó un comp compañía ya que topa des confilo se ha hallado el gota de que ve desde estos anuncio como media torulile esa ahí estas cosas que tepretan que tiene un pasaje una amiga mía le anunciaron que se había ganado un pasaje ahí para dónde fui'),\n",
       " ((535.31, 543.86),\n",
       "  'y hasta una muchacha de que de la del del ne yo me estaba riendo porque que de to que la amiga mi maridía lleva la muchacha de ay yo creo que fue de'),\n",
       " ((545.46, 546.02), 'el canal'),\n",
       " ((547.14, 579.18),\n",
       "  'que ya estaba diciendo que a ella le puso también le mandaron un papel deto que dice que te habían ganado una vacación en améñco y que sé yo ni qué y entonces a a no es estopo no por el factor prefacta que te manda que te ganaste un pasaje a que se yo ni que veto que llamas ese número y te llama ella dice que le pintaron maravilla que castilla cuando llegó al tío el hotel era una cosa horrible la piscila no tenía agua estaba llena de la ama'),\n",
       " ((581.66, 599.33),\n",
       "  'era él el hervi méjico y y ella llegaron ato que tella compraron que de gracia no tenía nada acabaron pagando casi tres mil dólares por re león a ja le robaron tenía que pagar que si impuesto de le cobrar un montón de impuesto'),\n",
       " ((600.37, 612.13),\n",
       "  'el hotel que si tenía que pagar no concluía ni propina ni el cuarto ri no el cuarto ya es buena y enseñó todo el que la muchacha come me reppotera pues allí es un reportente completo'),\n",
       " ((613.41, 631.16),\n",
       "  'entonces se sentó como le tuvieran la boca yo la mirallore que la coldaba de la amiga mía que hicieron lo mismo cuando ella llegó allá dice la eta fue un crucerof que te dice que el balco llegue ya tenía miedo que lo cogiera nada porque crea que tal co iba de ser deja del enndo canto de tal po que estaba'),\n",
       " ((637.8, 643.16),\n",
       "  'ella ferrible la comida dice que que ella dijería yo no me trae ni me po paraca mivenvenal'),\n",
       " ((644.36, 674.19),\n",
       "  'ron pagando muchísimo dinero gastando muchísimo dinero por doncellada pues este po se atrevía no si se salieron y se montaron en un avión hico y un otros dicho ve la mucha da cuando ve la muchacha ver del tenía una depontera du que la cogieron de osa y ella pero ya firmó todo y afirmó en lo el cuarto si tuviera la puerta el la helaán la puerta hacia abajo todas despegada y con como con lama deta horrible horrible los enferma uno ma'),\n",
       " ((675.79, 684.83),\n",
       "  'yp deber de comprar cosa que me mande infa y que me manden o felta de rerme manque car clu'),\n",
       " ((687.23, 691.79),\n",
       "  'en la dempa cuando todo lo lo primero que di lo ve lo que hago voy donde dice'),\n",
       " ((692.91, 701.71),\n",
       "  'cuando yo disegabaos me pongo a lela y entonces titule en las letras pequeñita te dice esta felta no no'),\n",
       " ((703.55, 717.8),\n",
       "  'da con calnival cruzro lancy y yo tan pronto veo que no ta filiara yox olvida de que lo saca dice que no si si dule las letras bien pequeñita que yo son listo ya te he como esta nepi la conre'),\n",
       " ((718.92, 719.55), 'los mensajes')]"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# make speech turns\n",
    "turns_2 = []\n",
    "tmp = []\n",
    "last_ts = None\n",
    "last_te = None\n",
    "for t, (ts, te), _ in raw_tokens_2:\n",
    "    if len(t.strip()) == 0:\n",
    "        continue\n",
    "    if len(tmp) > 0 and ts - last_te >= 1:\n",
    "        turns_1.append(((last_ts, last_te), \" \".join(tmp)))\n",
    "        tmp = []\n",
    "        last_ts = ts\n",
    "    if len(tmp) == 0:\n",
    "        last_ts = ts\n",
    "    tmp.append(t)\n",
    "    last_te = te\n",
    "if len(tmp) > 0:\n",
    "    turns_1.append(((last_ts, last_te), \" \".join(tmp)))\n",
    "turns_1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "bfe1f926",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f382529c",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3b0474c7",
   "metadata": {},
   "outputs": [],
   "source": [
    "# TODO: do channel-by-channel\n",
    "# TODO: use riva for better results\n",
    "# TODO: use riva cap model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "46a6d142",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "1fb9472d",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f34d818d",
   "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
}
