{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "58108e9b",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-25T14:46:09.139805Z",
     "start_time": "2023-10-25T14:46:09.138371Z"
    }
   },
   "outputs": [],
   "source": [
    "TEXT_CORPUS = [\n",
    "  \"hello world\",\n",
    "  \"today is a good day\",\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "50c86373",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-25T14:46:09.203624Z",
     "start_time": "2023-10-25T14:46:09.140754Z"
    }
   },
   "outputs": [],
   "source": [
    "def char_tokenize(text):\n",
    "    tokens = []\n",
    "    for char in text:\n",
    "        tokens.append(ord(char))\n",
    "    return tokens\n",
    "\n",
    "\n",
    "def char_detokenize(tokens):\n",
    "    tokens = [chr(t) for t in tokens]\n",
    "    text = \"\".join(tokens)\n",
    "    return text"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "1b58f43a",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-25T14:46:09.250395Z",
     "start_time": "2023-10-25T14:46:09.204608Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Tokenized tokens : [104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]\n",
      "Detokenized text : hello world\n",
      "Tokenized tokens : [104, 101, 108, 108, 111, 32, 119, 111, 114, 108, 100]\n",
      "Detokenized text : hello world\n"
     ]
    }
   ],
   "source": [
    "char_tokens = char_tokenize(TEXT_CORPUS[0])\n",
    "print(\"Tokenized tokens :\", char_tokens)\n",
    "text = char_detokenize(char_tokens)\n",
    "print(\"Detokenized text :\", text)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "531ad143",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-25T14:46:09.293618Z",
     "start_time": "2023-10-25T14:46:09.251959Z"
    }
   },
   "outputs": [],
   "source": [
    "def dict_tokenize(text, vocabulary):\n",
    "    tokens = []\n",
    "\n",
    "    # first do full word searches\n",
    "    split_text = text.split()\n",
    "    for split in split_text:\n",
    "        if split in vocabulary:\n",
    "            tokens.append(vocabulary[split])\n",
    "        else:\n",
    "            chars = list(split)\n",
    "            t_chars = [vocabulary[c] for c in chars]\n",
    "            tokens.extend(t_chars)\n",
    "        tokens.append(vocabulary[\" \"])\n",
    "\n",
    "    # remove extra space token\n",
    "    tokens.pop(-1)\n",
    "    return tokens\n",
    "\n",
    "\n",
    "def dict_detokenize(tokens, vocabulary):\n",
    "    text = \"\"\n",
    "    reverse_vocab = {v: k for k, v in vocabulary.items()}\n",
    "    for token in tokens:\n",
    "        if token in reverse_vocab:\n",
    "            text = text + reverse_vocab[token]\n",
    "        else:\n",
    "            text = text + \"\".join(token)\n",
    "    return text"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "e9faa21f",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-25T14:46:09.339646Z",
     "start_time": "2023-10-25T14:46:09.295003Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6, 'g': 7, 'h': 8, 'i': 9, 'j': 10, 'k': 11, 'l': 12, 'm': 13, 'n': 14, 'o': 15, 'p': 16, 'q': 17, 'r': 18, 's': 19, 't': 20, 'u': 21, 'v': 22, 'w': 23, 'x': 24, 'y': 25, 'z': 26, ' ': 0, 'hello': 28, 'today': 29, 'good': 30}\n",
      "{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6, 'g': 7, 'h': 8, 'i': 9, 'j': 10, 'k': 11, 'l': 12, 'm': 13, 'n': 14, 'o': 15, 'p': 16, 'q': 17, 'r': 18, 's': 19, 't': 20, 'u': 21, 'v': 22, 'w': 23, 'x': 24, 'y': 25, 'z': 26, ' ': 0, 'hello': 28, 'today': 29, 'good': 30}\n"
     ]
    }
   ],
   "source": [
    "vocabulary = {chr(i + ord(\"a\")) : (i + 1) for i in range(26)}\n",
    "# add whole words and special tokens\n",
    "vocabulary[\" \"] = 0\n",
    "vocabulary[\"hello\"] = len(vocabulary) + 1\n",
    "vocabulary[\"today\"] = len(vocabulary) + 1\n",
    "vocabulary[\"good\"] = len(vocabulary) + 1\n",
    "print(vocabulary)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "a5e6f668",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-25T14:46:09.381567Z",
     "start_time": "2023-10-25T14:46:09.340585Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Tokenized tokens : [28, 0, 23, 15, 18, 12, 4]\n",
      "Detokenized text : hello world\n",
      "Tokenized tokens : [28, 0, 23, 15, 18, 12, 4]\n",
      "Detokenized text : hello world\n"
     ]
    }
   ],
   "source": [
    "dict_tokens = dict_tokenize(TEXT_CORPUS[0], vocabulary)\n",
    "print(\"Tokenized tokens :\", dict_tokens)\n",
    "text = dict_detokenize(dict_tokens, vocabulary)\n",
    "print(\"Detokenized text :\", text)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "b45badbe",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-25T14:46:09.430141Z",
     "start_time": "2023-10-25T14:46:09.382503Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Character tokenization length - 11\n",
      "Dict tokenization length - 7\n",
      "Character tokenization length - 11\n",
      "Dict tokenization length - 7\n"
     ]
    }
   ],
   "source": [
    "print(\"Character tokenization length -\", len(char_tokens))\n",
    "print(\"Dict tokenization length -\", len(dict_tokens))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "e414e1c8",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-29T22:19:29.894559Z",
     "start_time": "2023-10-29T22:19:29.892695Z"
    }
   },
   "outputs": [],
   "source": [
    "# This is where the an4/ directory will be placed.\n",
    "# Change this if you don't want the data to be extracted in the current directory.\n",
    "# The directory should exist.\n",
    "data_dir = \".\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "7e73668f",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-25T14:46:09.523391Z",
     "start_time": "2023-10-25T14:46:09.476794Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "******\n",
      "Tarfile already exists.\n",
      "Finished conversion.\n",
      "******\n",
      "******\n",
      "Tarfile already exists.\n",
      "Finished conversion.\n",
      "******\n"
     ]
    }
   ],
   "source": [
    "import glob\n",
    "import os\n",
    "import subprocess\n",
    "import tarfile\n",
    "import wget\n",
    "\n",
    "# Download the dataset. This will take a few moments...\n",
    "print(\"******\")\n",
    "if not os.path.exists(data_dir + '/an4_sphere.tar.gz'):\n",
    "    an4_url = 'https://dldata-public.s3.us-east-2.amazonaws.com/an4_sphere.tar.gz'\n",
    "    an4_path = wget.download(an4_url, data_dir)\n",
    "    print(f\"Dataset downloaded at: {an4_path}\")\n",
    "else:\n",
    "    print(\"Tarfile already exists.\")\n",
    "    an4_path = data_dir + '/an4_sphere.tar.gz'\n",
    "\n",
    "if not os.path.exists(data_dir + '/an4/'):\n",
    "    # Untar and convert .sph to .wav (using sox)\n",
    "    tar = tarfile.open(an4_path)\n",
    "    tar.extractall(path=data_dir)\n",
    "\n",
    "    print(\"Converting .sph to .wav...\")\n",
    "    sph_list = glob.glob(data_dir + '/an4/**/*.sph', recursive=True)\n",
    "    for sph_path in sph_list:\n",
    "        wav_path = sph_path[:-4] + '.wav'\n",
    "        cmd = [\"sox\", sph_path, wav_path]\n",
    "        subprocess.run(cmd)\n",
    "print(\"Finished conversion.\\n******\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "18ae1025",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-25T14:46:09.571973Z",
     "start_time": "2023-10-25T14:46:09.524408Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "******\n",
      "***Done***\n",
      "******\n",
      "***Done***\n"
     ]
    }
   ],
   "source": [
    "# --- Building Manifest Files --- #\n",
    "import json\n",
    "import librosa\n",
    "\n",
    "# Function to build a manifest\n",
    "def build_manifest(transcripts_path, manifest_path, wav_path):\n",
    "    with open(transcripts_path, 'r') as fin:\n",
    "        with open(manifest_path, 'w') as fout:\n",
    "            for line in fin:\n",
    "                # Lines look like this:\n",
    "                # <s> transcript </s> (fileID)\n",
    "                transcript = line[: line.find('(')-1].lower()\n",
    "                transcript = transcript.replace('<s>', '').replace('</s>', '')\n",
    "                transcript = transcript.strip()\n",
    "\n",
    "                file_id = line[line.find('(')+1 : -2]  # e.g. \"cen4-fash-b\"\n",
    "                audio_path = os.path.join(\n",
    "                    data_dir, wav_path,\n",
    "                    file_id[file_id.find('-')+1 : file_id.rfind('-')],\n",
    "                    file_id + '.wav')\n",
    "\n",
    "                duration = librosa.core.get_duration(filename=audio_path)\n",
    "\n",
    "                # Write the metadata to the manifest\n",
    "                metadata = {\n",
    "                    \"audio_filepath\": audio_path,\n",
    "                    \"duration\": duration,\n",
    "                    \"text\": transcript\n",
    "                }\n",
    "                json.dump(metadata, fout)\n",
    "                fout.write('\\n')\n",
    "                \n",
    "# Building Manifests\n",
    "print(\"******\")\n",
    "train_transcripts = data_dir + '/an4/etc/an4_train.transcription'\n",
    "train_manifest = data_dir + '/an4/train_manifest.json'\n",
    "if not os.path.isfile(train_manifest):\n",
    "    build_manifest(train_transcripts, train_manifest, 'an4/wav/an4_clstk')\n",
    "    print(\"Training manifest created.\")\n",
    "\n",
    "test_transcripts = data_dir + '/an4/etc/an4_test.transcription'\n",
    "test_manifest = data_dir + '/an4/test_manifest.json'\n",
    "if not os.path.isfile(test_manifest):\n",
    "    build_manifest(test_transcripts, test_manifest, 'an4/wav/an4test_clstk')\n",
    "    print(\"Test manifest created.\")\n",
    "print(\"***Done***\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "10662744",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-29T22:19:34.160775Z",
     "start_time": "2023-10-29T22:19:34.035654Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{\"audio_filepath\": \"./an4/wav/an4_clstk/fash/an251-fash-b.wav\", \"duration\": 1.0, \"text\": \"yes\"}\r\n",
      "{\"audio_filepath\": \"./an4/wav/an4_clstk/fash/an253-fash-b.wav\", \"duration\": 0.7, \"text\": \"go\"}\r\n",
      "{\"audio_filepath\": \"./an4/wav/an4_clstk/fash/an254-fash-b.wav\", \"duration\": 0.9, \"text\": \"yes\"}\r\n",
      "{\"audio_filepath\": \"./an4/wav/an4_clstk/fash/an255-fash-b.wav\", \"duration\": 2.6, \"text\": \"u m n y h six\"}\r\n",
      "{\"audio_filepath\": \"./an4/wav/an4_clstk/fash/cen1-fash-b.wav\", \"duration\": 3.5, \"text\": \"h i n i c h\"}\r\n"
     ]
    }
   ],
   "source": [
    "!head -n 5 {data_dir}/an4/train_manifest.json"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "06c06aef",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-11-02T20:31:32.147167Z",
     "start_time": "2023-11-02T20:31:31.923751Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "{\"audio_filepath\": \"/home/tony/Data/Hoot/exp/5PMQmKsOuuM.wav\", \"duration\": 179, \"text\": \"twenty eight flow what would you choose between a car and plane im patient im patient you know how i lose it when i get impatient they say that im guilty yall already know i aint guilty a bit bit i sat back relaxed and finally decided to roll a stick roll a stick huh so many bruises everyone loses just remember you still dont got nothin to prove huh racks vince brought out them lil boogies boogies ima get me a uzi uh gotta check out santorini what ima just dive in jacuzzis splash splash splash on vacay actin foolish woo me and my girl we still boogie i was feelin the stuff but still had to make my own music make my own what woo hold on i see a light i be posing flash we had to bounce so we moving caught you sucking why you ducking huh we tryna get it my nigga my nigga we lit when i got some free time you know that i flex we tryna get it oh we tryna get it my nigga we lit my nigga we huh huh huh from time to time i check on my labs just like dex milly rock for that ho wow milly rock for that dough wow i got the cash but i gotta get me some mo some what milly rock for that ho wow milly rock for that dough yeah we busy we busy so tell me what you lookin fo racks i dont rock gucci nah i fingered her puss she was juicy i kicked a tree i saw money was fallin like loose leaf fallin like whew maserati comin fool speed whew dont come see me when you need nah my bro had the plug on reserve just in case he had that good weed i had that thing on my plate plate you wanna know what i ate ate so hard i be workin im making it work because more is at stake facts cant sleep on minimum wage yah ima get it cause i say it yah lil mama told me i was late but i aint know it was a date yah we tryna get it my nigga my nigga we lit when i got some free time you know that i flex we tryna get it oh we tryna get it my nigga we lit my nigga we huh huh huh from time to time i check on my labs just like dex milly rock for that ho wow milly rock for that dough wow i got the cash but i gotta get me some mo some what milly rock for that ho wow milly rock for that dough yeah we busy we busy so tell me what you lookin fo racks rack woo woo racks woo yeah\"}\r\n",
      "{\"audio_filepath\": \"/home/tony/Data/Hoot/exp/dr3Su_UNyw0.wav\", \"duration\": 132, \"text\": \"metro mrx arriving in his car metro mrx is wanted on the phone metro mrx executive dinner metro mrx is never on his own hes my favourite mutant hes my favourite mutant metro mrx is a cog in the machinery metro mrx polished shoes and pin stripe metro mrx impersonal and straight faced metro mrx expensive talc and aftershave hes my favourite mutant hes my favourite mutant metro mrx not a clone but a look alike metro mrx the citys full of him metro mrx is only part of business metro mrx a persona in a briefcase hes my favourite mutant hes my favourite mutant mutant mutant mutant\"}\r\n",
      "{\"audio_filepath\": \"/home/tony/Data/Hoot/exp/_FriNPCVc9U.wav\", \"duration\": 164, \"text\": \"every man is not created equal were all created mad different some are bad people the bald eagles mad evil place you into class c feed you placebo chick the cops were caught spooning caught it sooner than the pack think they tapping your computer your computer is a tap human traffickers wanna track you your computer is a map forget whoever fingerprints they got a match they got a mac every app thats on your jacks for getting jacked every act on every bill and every law and every bill and every act is game thats run so they can run up where you at they got patting down down packed i gotta give them that now its money that i never had im supposed to give it back they keep statistics on the gifted young and black they put out statistics people read em act like they been given fact think theyve been given lean when they been giving fat chem trails the m o arrest then raise the rent in jails gmos the monkey wrench in your entrails all you see is shop and save sales wheres the dough you sent to try and save whales well that was took and added to the money from the breast cancer walk who knows whats the answer to what it bought the grief with which you have been wrought was all for naught its too high a cost trying to save the orphans just keep them off the lawn the war on drugs been going on for awful long so folks married to the game instead of dating off and on but theres no poppy fields in harlem look around for some reason all the brown niños turn to nino brown we used to beat on bush but now hes not around so people have found a different bush to beat around favorite noise of boys in blue ka pow youre bound to catch a round youre almost lucky when they only beat you down tight girls straighten out their tight curls everybody wants to be a skinny white girl cause all you see is skinny white girls though black girls are allowed if they getting loud or if they getting plowed keep em from being proud its easy to keep em down keep em drowning in doubt keep em down and out favor flavor chuck the chuck d you can say that black is ugly long as you say it round about its not the type of ish with which to clown around rap to them about cap and pow instead of cap and gowns tell them they bugging out if they dont get around itll bug them out too much to wrap their head around release the hounds how create an enemy to hate by then its wont be tough by then theyll hate themselves so much they couldnt wait theyll drown in booze that which they couldnt take and debtll make them slaves and then we cut the pay and lengthen days provide the drugs to medicate then cut the medicaid and institute a military state and provide israel with military aid just to rub it in their face theyll be afraid because they dont have any faith theyll claim that they believe but that is not how they behave as money comes to power over power thats divine they will all turn into cowards cause theyre all afraid to die theyll never form alliance theyll be content to live a lie as long as theyre alive the sirs and madams will surmise that its on us which they rely theyll never realize that we rely on them any moment they decide they can make it end instead just make some ends cause life is hopeless times is hard and keep em focused on religion so they never look for god\"}\r\n",
      "{\"audio_filepath\": \"/home/tony/Data/Hoot/exp/ffmouvNh9BA.wav\", \"duration\": 212, \"text\": \"baby girl so excited cause something like this made this be on the low she keeps me so high like i never have it before i plan on never letting go shes the one that completes me whenever you see me its going to be heard by night sound im going to sing for my lady i dont play when it come to my baby im telling you shes a major part of my life shes got a love that a man would kill for thats why im never ever letting go shes the one shes the one shes the one that i talk to whenever im feeling down shes my baby whenever i need her shell be there no matter what the situation is oh because shes my baby shes my lady even when she aint cant be gone too long to be heard by night sound make the way for my lady dont play when it comes to my baby im telling you youre a major part of my life shes got a love that a man would kill for thats why im never ever letting go shes the one shes the one ill be damned if another come and take whats mine wanna search and theres no where to find but above all things shes a dream to have all of what i am needing shes my number one and im not afraid to let the world knows that shes my baby thats my lady if you waving at my girl ll let you know that my lady youre my number one baby shes a major part of my life shes got a love that a man would kill for thats why im never ever letting go shes the one shes the one let her go no no no no then i will never let her go no no no my baby ahh shes my number one shes my number one yea i got my number one shes got that number one get your hands up get your hands up you got that number one\"}\r\n",
      "{\"audio_filepath\": \"/home/tony/Data/Hoot/exp/_bdW5HC456o.wav\", \"duration\": 202, \"text\": \"day by day i search for you like the sun chases the moon let me eclipse you lead me wherever the stars point you just dont leave me alone oh oh feel me travel through my bloodstream but dont fight the tides just go oh oh its hard for me to take things slow cause its not long before i go back into my orbit let me eclipse you let me eclipse you\"}\r\n"
     ]
    }
   ],
   "source": [
    "!head -n 5 /home/tony/Data/Hoot/en_train_manifest_fast_longer.json"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cd2b823f",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-25T14:46:10.031892Z",
     "start_time": "2023-10-25T14:46:09.756799Z"
    }
   },
   "source": [
    "##### if not os.path.exists(\"scripts/tokenizers/process_asr_text_tokenizer.py\"):\n",
    "  !mkdir scripts\n",
    "  !wget -P scripts/ https://raw.githubusercontent.com/NVIDIA/NeMo/main/scripts/tokenizers/process_asr_text_tokenizer.py"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "c6f389d6",
   "metadata": {},
   "outputs": [],
   "source": [
    "python ./scripts/process_asr_text_tokenizer.py \\\n",
    "  --manifest=\"/home/tony/Data/Hoot/exp_train_manifest.json\" \\\n",
    "  --data_root=\"./tokenizers/exp/\" \\\n",
    "  --vocab_size=2304 \\\n",
    "  --tokenizer=\"spe\" \\\n",
    "  --spe_character_coverage=0.996 \\\n",
    "  --no_lower_case \\\n",
    "  --spe_type=\"unigram\" \\\n",
    "  --log"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "906b2391",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-25T14:46:16.604615Z",
     "start_time": "2023-10-25T14:46:16.436091Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Traceback (most recent call last):\n",
      "  File \"/home/tony/Work/tony/hoot/./scripts/process_asr_text_tokenizer.py\", line 106, in <module>\n",
      "    from nemo.collections.common.tokenizers.sentencepiece_tokenizer import create_spt_model\n",
      "ModuleNotFoundError: No module named 'nemo'\n",
      "Traceback (most recent call last):\n",
      "  File \"/home/tony/Work/tony/hoot/./scripts/process_asr_text_tokenizer.py\", line 106, in <module>\n",
      "    from nemo.collections.common.tokenizers.sentencepiece_tokenizer import create_spt_model\n",
      "ModuleNotFoundError: No module named 'nemo'\n"
     ]
    }
   ],
   "source": [
    "# python ./scripts/process_asr_text_tokenizer.py \\\n",
    "#   --manifest=\"./an4/train_manifest.json\" \\\n",
    "#   --data_root=\"./tokenizers/an4/\" \\\n",
    "#   --vocab_size=32 \\\n",
    "#   --tokenizer=\"spe\" \\\n",
    "#   --no_lower_case \\\n",
    "#   --spe_type=\"unigram\" \\\n",
    "#   --log"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1d024074",
   "metadata": {},
   "source": [
    "# TRAINING THIS MUTHER F*CKDR"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "8c2b8192",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-30T18:22:23.645948Z",
     "start_time": "2023-10-30T18:22:21.147429Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[NeMo W 2023-10-30 18:22:21 nemo_logging:349] /home/tony/anaconda3/envs/nemo/lib/python3.10/site-packages/pytorch_lightning/loggers/wandb.py:395: UserWarning: There is a wandb run already in progress and newly created instances of `WandbLogger` will reuse this run. If this is not desired, call `wandb.finish()` before instantiating `WandbLogger`.\n",
      "      rank_zero_warn(\n",
      "    \n",
      "GPU available: True (cuda), used: True\n",
      "TPU available: False, using: 0 TPU cores\n",
      "IPU available: False, using: 0 IPUs\n",
      "HPU available: False, using: 0 HPUs\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[NeMo I 2023-10-30 18:22:21 mixins:170] Tokenizer SentencePieceTokenizer initialized with 2304 tokens\n",
      "[NeMo I 2023-10-30 18:22:21 ctc_bpe_models:63] \n",
      "    Replacing placeholder number of classes (-1) with actual number of classes - 2304\n",
      "[NeMo I 2023-10-30 18:22:22 collections:196] Dataset loaded with 1779 files totalling 106.86 hours\n",
      "[NeMo I 2023-10-30 18:22:22 collections:197] 210 files were filtered totalling 20.27 hours\n",
      "[NeMo I 2023-10-30 18:22:22 collections:196] Dataset loaded with 99 files totalling 5.93 hours\n",
      "[NeMo I 2023-10-30 18:22:22 collections:197] 6 files were filtered totalling 0.62 hours\n",
      "[NeMo I 2023-10-30 18:22:22 features:289] PADDING: 16\n"
     ]
    }
   ],
   "source": [
    "# NeMo's \"core\" package\n",
    "import nemo\n",
    "\n",
    "# NeMo's ASR collection - this collections contains complete ASR models and\n",
    "# building blocks (modules) for ASR\n",
    "import nemo.collections.asr as nemo_asr\n",
    "from omegaconf import OmegaConf, open_dict\n",
    "from pytorch_lightning.loggers import WandbLogger\n",
    "import pytorch_lightning as pl\n",
    "\n",
    "wandb_logger = WandbLogger(log_model=\"all\", project=\"hoot\", name=\"test_subword_lyrics\")\n",
    "\n",
    "params = OmegaConf.load(\"./configs/config_bpe.yaml\")\n",
    "\n",
    "params.model.tokenizer.dir = \"./tokenizers/exp/tokenizer_spe_unigram_v2304/\"  # note this is a directory, not a path to a vocabulary file\n",
    "params.model.tokenizer.type = \"bpe\"\n",
    "\n",
    "trainer = pl.Trainer(devices=1, accelerator=\"gpu\", max_epochs=50, logger=wandb_logger)\n",
    "\n",
    "train_manifest = \"/home/tony/Data/Hoot/exp_train_manifest.json\"\n",
    "test_manifest = \"/home/tony/Data/Hoot/exp_test_manifest.json\"\n",
    "\n",
    "# Update paths to dataset\n",
    "params.model.train_ds.manifest_filepath = train_manifest\n",
    "params.model.validation_ds.manifest_filepath = test_manifest\n",
    "\n",
    "# remove spec augment for this dataset\n",
    "params.model.spec_augment.rect_masks = 0\n",
    "\n",
    "first_asr_model = nemo_asr.models.EncDecCTCModelBPE(cfg=params.model, trainer=trainer)\n",
    "\n",
    "# # Start training!!!\n",
    "# trainer.fit(first_asr_model)\n",
    "# print(\n",
    "#     first_asr_model.transcribe(\n",
    "#         paths2audio_files=[\"/home/tony/Data/Hoot/exp/NSmn1VUnOH0.wav\"], batch_size=4\n",
    "#     )\n",
    "# )\n",
    "# first_asr_model.save_to(\"first_model_lyrics.nemo\")\n",
    "# print(\"done!\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "d1f473f3",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-10-30T00:46:51.795961Z",
     "start_time": "2023-10-30T00:46:51.280730Z"
    }
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "ed38291f86694f699cf8983de57bc035",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Transcribing:   0%|          | 0/1 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['']\n"
     ]
    }
   ],
   "source": [
    "print(first_asr_model.transcribe(paths2audio_files=[\"/home/tony/Data/Hoot/exp/NSmn1VUnOH0.wav\"],batch_size=4))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8d2534ad",
   "metadata": {},
   "source": [
    "# Checkpiont"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "4fa9be91",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-11-03T00:07:33.094808Z",
     "start_time": "2023-11-03T00:06:59.367884Z"
    }
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Failed to detect the name of this notebook, you can set it manually with the WANDB_NOTEBOOK_NAME environment variable to enable code saving.\n",
      "\u001b[34m\u001b[1mwandb\u001b[0m: Currently logged in as: \u001b[33mtonytongsuno\u001b[0m (\u001b[33msuno\u001b[0m). Use \u001b[1m`wandb login --relogin`\u001b[0m to force relogin\n"
     ]
    },
    {
     "data": {
      "text/html": [
       "Tracking run with wandb version 0.15.12"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "Run data is saved locally in <code>/home/tony/Work/tony/hoot/wandb/run-20231103_000701-sszy54m2</code>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       "Syncing run <strong><a href='https://wandb.ai/suno/tony-hoot/runs/sszy54m2' target=\"_blank\">devout-fog-5</a></strong> to <a href='https://wandb.ai/suno/tony-hoot' target=\"_blank\">Weights & Biases</a> (<a href='https://wandb.me/run' target=\"_blank\">docs</a>)<br/>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       " View project at <a href='https://wandb.ai/suno/tony-hoot' target=\"_blank\">https://wandb.ai/suno/tony-hoot</a>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/html": [
       " View run at <a href='https://wandb.ai/suno/tony-hoot/runs/sszy54m2' target=\"_blank\">https://wandb.ai/suno/tony-hoot/runs/sszy54m2</a>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\u001b[34m\u001b[1mwandb\u001b[0m: Downloading large artifact model-jnzrcftg:v19, 1342.56MB. 1 files... \n",
      "\u001b[34m\u001b[1mwandb\u001b[0m:   1 of 1 files downloaded.  \n",
      "Done. 0:0:13.0\n"
     ]
    }
   ],
   "source": [
    "import wandb\n",
    "run = wandb.init()\n",
    "artifact = run.use_artifact('suno/hoot/model-jnzrcftg:v19', type='model')\n",
    "artifact_dir = artifact.download()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "3087edde",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-11-03T00:07:33.098906Z",
     "start_time": "2023-11-03T00:07:33.096202Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "'./artifacts/model-jnzrcftg:v19'"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "artifact_dir"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "8e98b586",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-11-03T00:08:45.336487Z",
     "start_time": "2023-11-03T00:08:34.381011Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[NeMo I 2023-11-03 00:08:42 mixins:170] Tokenizer SentencePieceTokenizer initialized with 4096 tokens\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[NeMo W 2023-11-03 00:08:43 modelPT:161] If you intend to do training or fine-tuning, please call the ModelPT.setup_training_data() method and provide a valid configuration file to setup the train data loader.\n",
      "    Train config : \n",
      "    manifest_filepath: /home/tony/Data/Hoot/en_train_manifest.json\n",
      "    sample_rate: 16000\n",
      "    batch_size: 1\n",
      "    shuffle: true\n",
      "    num_workers: 8\n",
      "    pin_memory: true\n",
      "    max_duration: 375\n",
      "    min_duration: 10\n",
      "    is_tarred: false\n",
      "    tarred_audio_filepaths: null\n",
      "    shuffle_n: 2048\n",
      "    bucketing_strategy: fully_randomized\n",
      "    bucketing_batch_size: null\n",
      "    \n",
      "[NeMo W 2023-11-03 00:08:43 modelPT:168] If you intend to do validation, please call the ModelPT.setup_validation_data() or ModelPT.setup_multiple_validation_data() method and provide a valid configuration file to setup the validation data loader(s). \n",
      "    Validation config : \n",
      "    manifest_filepath: /home/tony/Data/Hoot/en_test_manifest.json\n",
      "    sample_rate: 16000\n",
      "    batch_size: 1\n",
      "    max_duration: 375\n",
      "    shuffle: false\n",
      "    use_start_end_token: false\n",
      "    num_workers: 8\n",
      "    pin_memory: true\n",
      "    \n",
      "[NeMo W 2023-11-03 00:08:43 modelPT:174] Please call the ModelPT.setup_test_data() or ModelPT.setup_multiple_test_data() method and provide a valid configuration file to setup the test data loader(s).\n",
      "    Test config : \n",
      "    manifest_filepath: null\n",
      "    sample_rate: 16000\n",
      "    batch_size: 1\n",
      "    shuffle: false\n",
      "    use_start_end_token: false\n",
      "    num_workers: 8\n",
      "    pin_memory: true\n",
      "    \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[NeMo I 2023-11-03 00:08:43 features:289] PADDING: 0\n"
     ]
    }
   ],
   "source": [
    "import nemo.collections.asr as nemo_asr\n",
    "import os\n",
    "first_asr_model = nemo_asr.models.EncDecCTCModelBPE.load_from_checkpoint(os.path.join(artifact_dir, \"model.ckpt\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "c9cb6b33",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-11-03T00:08:45.897299Z",
     "start_time": "2023-11-03T00:08:45.338780Z"
    }
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "1f5eb2d3873242f089376ab2979f160d",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Transcribing:   0%|          | 0/1 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['i']\n"
     ]
    }
   ],
   "source": [
    "print(\n",
    "    first_asr_model.transcribe(\n",
    "        paths2audio_files=[\"/home/tony/Data/Hoot/exp/ffmouvNh9BA.wav\"], batch_size=4\n",
    "    )\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c7e02f86",
   "metadata": {},
   "source": [
    "# From NEMO"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "490ab7bd",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-11-03T00:08:55.507540Z",
     "start_time": "2023-11-03T00:08:55.505500Z"
    }
   },
   "outputs": [],
   "source": [
    "import os\n",
    "import nemo.collections.asr as nemo_asr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "df47959a",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-11-03T00:09:27.231299Z",
     "start_time": "2023-11-03T00:09:21.388651Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[NeMo I 2023-11-03 00:09:24 mixins:170] Tokenizer SentencePieceTokenizer initialized with 4096 tokens\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[NeMo W 2023-11-03 00:09:25 modelPT:161] If you intend to do training or fine-tuning, please call the ModelPT.setup_training_data() method and provide a valid configuration file to setup the train data loader.\n",
      "    Train config : \n",
      "    manifest_filepath: /home/tony/Data/Hoot/en_train_manifest_fast_longer.json\n",
      "    sample_rate: 16000\n",
      "    batch_size: 1\n",
      "    shuffle: true\n",
      "    num_workers: 8\n",
      "    pin_memory: true\n",
      "    max_duration: 240\n",
      "    min_duration: 10\n",
      "    is_tarred: false\n",
      "    tarred_audio_filepaths: null\n",
      "    shuffle_n: 2048\n",
      "    bucketing_strategy: fully_randomized\n",
      "    bucketing_batch_size: null\n",
      "    \n",
      "[NeMo W 2023-11-03 00:09:25 modelPT:168] If you intend to do validation, please call the ModelPT.setup_validation_data() or ModelPT.setup_multiple_validation_data() method and provide a valid configuration file to setup the validation data loader(s). \n",
      "    Validation config : \n",
      "    manifest_filepath: /home/tony/Data/Hoot/en_test_manifest_fast.json\n",
      "    sample_rate: 16000\n",
      "    batch_size: 1\n",
      "    max_duration: 240\n",
      "    shuffle: false\n",
      "    use_start_end_token: false\n",
      "    num_workers: 8\n",
      "    pin_memory: true\n",
      "    \n",
      "[NeMo W 2023-11-03 00:09:25 modelPT:174] Please call the ModelPT.setup_test_data() or ModelPT.setup_multiple_test_data() method and provide a valid configuration file to setup the test data loader(s).\n",
      "    Test config : \n",
      "    manifest_filepath: null\n",
      "    sample_rate: 16000\n",
      "    batch_size: 1\n",
      "    shuffle: false\n",
      "    use_start_end_token: false\n",
      "    num_workers: 8\n",
      "    pin_memory: true\n",
      "    \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[NeMo I 2023-11-03 00:09:25 features:289] PADDING: 0\n",
      "[NeMo I 2023-11-03 00:09:27 save_restore_connector:249] Model EncDecCTCModelBPE was successfully restored from /home/tony/Work/tony/hoot/first_model_lyrics_en_fast.nemo.\n"
     ]
    }
   ],
   "source": [
    "model = nemo_asr.models.EncDecCTCModelBPE.restore_from(\"first_model_lyrics_en_fast.nemo\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "26fc230f",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-11-03T00:09:34.037898Z",
     "start_time": "2023-11-03T00:09:33.676507Z"
    }
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "a78b87eda48e4a69a1689f22f32fde7e",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Transcribing:   0%|          | 0/1 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['baby girl so excited cause something like this made this be on time so high like going to by to telling you shes a major part of my got love that a man would kill thats never letting go shes one shes one that whenever im my whenever her shell matter what situation up be heard by night sound make the for my comes to of shes got love that would why never ever shesed if theres no where but above one to shes my baby thats my lady if you waving know my lady youre number one baby shes major part of life shes got a love the let her go no no no my ahh shes my number shes my number one yea got number got your get hands get your hands up you got that number one']\n"
     ]
    }
   ],
   "source": [
    "print(\n",
    "    model.transcribe(\n",
    "        paths2audio_files=[\"/home/tony/Data/Hoot/exp/ffmouvNh9BA.wav\"], batch_size=4\n",
    "    )\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "90b760cd",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-11-03T01:14:45.659142Z",
     "start_time": "2023-11-03T01:14:45.297174Z"
    }
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "8d1c029fbd7949a3b03a95ac1c0cc656",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Transcribing:   0%|          | 0/1 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "torch.Size([2651, 4097])"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "out = model.transcribe(\n",
    "        paths2audio_files=[\"/home/tony/Data/Hoot/exp/ffmouvNh9BA.wav\"], batch_size=4, return_hypotheses=True\n",
    "    )\n",
    "out[0].y_sequence.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1b17733a",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-11-01T17:31:56.619633Z",
     "start_time": "2023-11-01T17:31:56.618169Z"
    }
   },
   "source": [
    "# From Pretrained"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "100d76ea",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-11-03T00:09:35.322042Z",
     "start_time": "2023-11-03T00:09:35.320106Z"
    }
   },
   "outputs": [],
   "source": [
    "import os\n",
    "import nemo.collections.asr as nemo_asr"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "015cec91",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-11-03T00:09:37.981958Z",
     "start_time": "2023-11-03T00:09:35.620233Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[NeMo I 2023-11-03 00:09:35 cloud:58] Found existing object /home/tony/.cache/torch/NeMo/NeMo_1.21.0/stt_en_fastconformer_ctc_large/00a071a9dac048acc3aeea942b0bfa40/stt_en_fastconformer_ctc_large.nemo.\n",
      "[NeMo I 2023-11-03 00:09:35 cloud:64] Re-using file from: /home/tony/.cache/torch/NeMo/NeMo_1.21.0/stt_en_fastconformer_ctc_large/00a071a9dac048acc3aeea942b0bfa40/stt_en_fastconformer_ctc_large.nemo\n",
      "[NeMo I 2023-11-03 00:09:35 common:913] Instantiating model from pre-trained checkpoint\n",
      "[NeMo I 2023-11-03 00:09:36 mixins:170] Tokenizer SentencePieceTokenizer initialized with 1024 tokens\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[NeMo W 2023-11-03 00:09:36 modelPT:161] If you intend to do training or fine-tuning, please call the ModelPT.setup_training_data() method and provide a valid configuration file to setup the train data loader.\n",
      "    Train config : \n",
      "    manifest_filepath: null\n",
      "    sample_rate: 16000\n",
      "    batch_size: 1\n",
      "    shuffle: true\n",
      "    num_workers: 8\n",
      "    pin_memory: true\n",
      "    use_start_end_token: false\n",
      "    trim_silence: false\n",
      "    max_duration: 20\n",
      "    min_duration: 0.1\n",
      "    is_tarred: false\n",
      "    tarred_audio_filepaths: null\n",
      "    shuffle_n: 2048\n",
      "    bucketing_strategy: fully_randomized\n",
      "    bucketing_batch_size: null\n",
      "    \n",
      "[NeMo W 2023-11-03 00:09:36 modelPT:168] If you intend to do validation, please call the ModelPT.setup_validation_data() or ModelPT.setup_multiple_validation_data() method and provide a valid configuration file to setup the validation data loader(s). \n",
      "    Validation config : \n",
      "    manifest_filepath: null\n",
      "    sample_rate: 16000\n",
      "    batch_size: 32\n",
      "    shuffle: false\n",
      "    num_workers: 8\n",
      "    pin_memory: true\n",
      "    use_start_end_token: false\n",
      "    max_duration: 20\n",
      "    \n",
      "[NeMo W 2023-11-03 00:09:36 modelPT:174] Please call the ModelPT.setup_test_data() or ModelPT.setup_multiple_test_data() method and provide a valid configuration file to setup the test data loader(s).\n",
      "    Test config : \n",
      "    manifest_filepath: null\n",
      "    sample_rate: 16000\n",
      "    batch_size: 16\n",
      "    shuffle: false\n",
      "    num_workers: 8\n",
      "    pin_memory: true\n",
      "    use_start_end_token: false\n",
      "    \n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[NeMo I 2023-11-03 00:09:36 features:289] PADDING: 0\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "[NeMo W 2023-11-03 00:09:37 asr_confidence_utils:195] `method_cfg` is deprecated and will be removed in the future. Please use `measure_cfg` instead.\n",
      "[NeMo W 2023-11-03 00:09:37 asr_confidence_utils:200] Re-writing `measure_cfg` with the value of `method_cfg`.\n",
      "[NeMo W 2023-11-03 00:09:37 asr_confidence_utils:95] `temperature` is deprecated and will be removed in the future. Please use `alpha` instead.\n",
      "[NeMo W 2023-11-03 00:09:37 asr_confidence_utils:100] Re-writing `alpha` with the value of `temperature`.\n",
      "[NeMo W 2023-11-03 00:09:37 asr_confidence_utils:195] `method_cfg` is deprecated and will be removed in the future. Please use `measure_cfg` instead.\n",
      "[NeMo W 2023-11-03 00:09:37 asr_confidence_utils:200] Re-writing `measure_cfg` with the value of `method_cfg`.\n",
      "[NeMo W 2023-11-03 00:09:37 asr_confidence_utils:95] `temperature` is deprecated and will be removed in the future. Please use `alpha` instead.\n",
      "[NeMo W 2023-11-03 00:09:37 asr_confidence_utils:100] Re-writing `alpha` with the value of `temperature`.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[NeMo I 2023-11-03 00:09:37 save_restore_connector:249] Model EncDecCTCModelBPE was successfully restored from /home/tony/.cache/torch/NeMo/NeMo_1.21.0/stt_en_fastconformer_ctc_large/00a071a9dac048acc3aeea942b0bfa40/stt_en_fastconformer_ctc_large.nemo.\n"
     ]
    }
   ],
   "source": [
    "pre_trained_model = nemo_asr.models.EncDecCTCModelBPE.from_pretrained(\"stt_en_fastconformer_ctc_large\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "b20d5c27",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-11-03T00:09:41.827489Z",
     "start_time": "2023-11-03T00:09:41.465302Z"
    }
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "5cfc73a1c7e34a11a7e35c9c2e61c718",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Transcribing:   0%|          | 0/1 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[\"ba girl so excited somethingmoke she keeps me i may have happy that can please me when my don' my baby the one that i talk to situation another\"]\n"
     ]
    }
   ],
   "source": [
    "print(\n",
    "    pre_trained_model.transcribe(\n",
    "        paths2audio_files=[\"/home/tony/Data/Hoot/exp/ffmouvNh9BA.wav\"], batch_size=4\n",
    "    )\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "1a7e8094",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-11-03T01:09:14.175091Z",
     "start_time": "2023-11-03T01:09:13.819869Z"
    }
   },
   "outputs": [
    {
     "data": {
      "application/vnd.jupyter.widget-view+json": {
       "model_id": "39d43f19c9bb4b8aa7f4b553d38c60fc",
       "version_major": 2,
       "version_minor": 0
      },
      "text/plain": [
       "Transcribing:   0%|          | 0/1 [00:00<?, ?it/s]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "out = pre_trained_model.transcribe(\n",
    "        paths2audio_files=[\"/home/tony/Data/Hoot/exp/ffmouvNh9BA.wav\"], batch_size=4, return_hypotheses=True\n",
    "    )"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "81e809ad",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-11-03T01:09:44.818994Z",
     "start_time": "2023-11-03T01:09:44.816271Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "torch.Size([2651, 1025])"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "out[0].y_sequence.shape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "1b109aae",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-11-03T01:15:06.238447Z",
     "start_time": "2023-11-03T01:15:06.235759Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "12.504716981132075"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "2651 / 212"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "115ce507",
   "metadata": {},
   "source": [
    "# Some Model IO stuff"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "b7bedbd7",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-11-09T17:11:43.592848Z",
     "start_time": "2023-11-09T17:11:43.590838Z"
    }
   },
   "outputs": [],
   "source": [
    "import nemo.collections.asr as nemo_asr\n",
    "model_name = \"stt_multilingual_fastconformer_hybrid_large_pc\"\n",
    "# asr_model = nemo_asr.models.EncDecCTCModelBPE.from_pretrained(model_name=\"stt_en_fastconformer_ctc_large\")\n",
    "asr_model = nemo_asr.models.EncDecHybridRNNTCTCBPEModel.from_pretrained(model_name=model_name)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "23b8c947",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-11-09T17:11:51.468261Z",
     "start_time": "2023-11-09T17:11:51.413558Z"
    }
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "tensor(0.3661, device='cuda:0', grad_fn=<StdBackward0>)"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "asr_model.encoder.layers[-1].self_attn.linear_q.weight.std()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "90c701a0",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-11-09T17:11:53.208610Z",
     "start_time": "2023-11-09T17:11:52.303424Z"
    }
   },
   "outputs": [],
   "source": [
    "import torch\n",
    "torch.save(asr_model.state_dict(), f\"/home/tony/Data/Hoot/{model_name}.pt\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "fee9443f",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-11-09T17:11:57.624380Z",
     "start_time": "2023-11-09T17:11:54.950960Z"
    }
   },
   "outputs": [],
   "source": [
    "checkpoint = torch.load(f\"/home/tony/Data/Hoot/{model_name}.pt\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "dd6c5026",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-11-09T17:11:58.430515Z",
     "start_time": "2023-11-09T17:11:58.428143Z"
    }
   },
   "outputs": [],
   "source": [
    "state_dict = checkpoint #checkpoint[\"model\"] if \"model\" in checkpoint else checkpoint\n",
    "# fix the keys of the state dictionary :(\n",
    "# honestly no idea how checkpoints sometimes get this prefix, have to debug more\n",
    "unwanted_prefix = \"_orig_mod.\"\n",
    "for k, v in list(state_dict.items()):\n",
    "    if k.startswith(unwanted_prefix):\n",
    "        state_dict[k[len(unwanted_prefix) :]] = state_dict.pop(k)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "54a67295",
   "metadata": {
    "ExecuteTime": {
     "end_time": "2023-11-09T17:11:58.728133Z",
     "start_time": "2023-11-09T17:11:58.724902Z"
    }
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "preprocessor.featurizer.window\n",
      "preprocessor.featurizer.fb\n",
      "encoder.pre_encode.out.weight\n",
      "encoder.pre_encode.out.bias\n",
      "encoder.pre_encode.conv.0.weight\n",
      "encoder.pre_encode.conv.0.bias\n",
      "encoder.pre_encode.conv.2.weight\n",
      "encoder.pre_encode.conv.2.bias\n",
      "encoder.pre_encode.conv.3.weight\n",
      "encoder.pre_encode.conv.3.bias\n",
      "encoder.pre_encode.conv.5.weight\n",
      "encoder.pre_encode.conv.5.bias\n",
      "encoder.pre_encode.conv.6.weight\n",
      "encoder.pre_encode.conv.6.bias\n",
      "encoder.layers.0.norm_feed_forward1.weight\n",
      "encoder.layers.0.norm_feed_forward1.bias\n",
      "encoder.layers.0.feed_forward1.linear1.weight\n",
      "encoder.layers.0.feed_forward1.linear1.bias\n",
      "encoder.layers.0.feed_forward1.linear2.weight\n",
      "encoder.layers.0.feed_forward1.linear2.bias\n",
      "encoder.layers.0.norm_conv.weight\n",
      "encoder.layers.0.norm_conv.bias\n",
      "encoder.layers.0.conv.pointwise_conv1.weight\n",
      "encoder.layers.0.conv.pointwise_conv1.bias\n",
      "encoder.layers.0.conv.depthwise_conv.weight\n",
      "encoder.layers.0.conv.depthwise_conv.bias\n",
      "encoder.layers.0.conv.batch_norm.weight\n",
      "encoder.layers.0.conv.batch_norm.bias\n",
      "encoder.layers.0.conv.batch_norm.running_mean\n",
      "encoder.layers.0.conv.batch_norm.running_var\n",
      "encoder.layers.0.conv.batch_norm.num_batches_tracked\n",
      "encoder.layers.0.conv.pointwise_conv2.weight\n",
      "encoder.layers.0.conv.pointwise_conv2.bias\n",
      "encoder.layers.0.norm_self_att.weight\n",
      "encoder.layers.0.norm_self_att.bias\n",
      "encoder.layers.0.self_attn.pos_bias_u\n",
      "encoder.layers.0.self_attn.pos_bias_v\n",
      "encoder.layers.0.self_attn.linear_q.weight\n",
      "encoder.layers.0.self_attn.linear_q.bias\n",
      "encoder.layers.0.self_attn.linear_k.weight\n",
      "encoder.layers.0.self_attn.linear_k.bias\n",
      "encoder.layers.0.self_attn.linear_v.weight\n",
      "encoder.layers.0.self_attn.linear_v.bias\n",
      "encoder.layers.0.self_attn.linear_out.weight\n",
      "encoder.layers.0.self_attn.linear_out.bias\n",
      "encoder.layers.0.self_attn.linear_pos.weight\n",
      "encoder.layers.0.norm_feed_forward2.weight\n",
      "encoder.layers.0.norm_feed_forward2.bias\n",
      "encoder.layers.0.feed_forward2.linear1.weight\n",
      "encoder.layers.0.feed_forward2.linear1.bias\n",
      "encoder.layers.0.feed_forward2.linear2.weight\n",
      "encoder.layers.0.feed_forward2.linear2.bias\n",
      "encoder.layers.0.norm_out.weight\n",
      "encoder.layers.0.norm_out.bias\n",
      "encoder.layers.1.norm_feed_forward1.weight\n",
      "encoder.layers.1.norm_feed_forward1.bias\n",
      "encoder.layers.1.feed_forward1.linear1.weight\n",
      "encoder.layers.1.feed_forward1.linear1.bias\n",
      "encoder.layers.1.feed_forward1.linear2.weight\n",
      "encoder.layers.1.feed_forward1.linear2.bias\n",
      "encoder.layers.1.norm_conv.weight\n",
      "encoder.layers.1.norm_conv.bias\n",
      "encoder.layers.1.conv.pointwise_conv1.weight\n",
      "encoder.layers.1.conv.pointwise_conv1.bias\n",
      "encoder.layers.1.conv.depthwise_conv.weight\n",
      "encoder.layers.1.conv.depthwise_conv.bias\n",
      "encoder.layers.1.conv.batch_norm.weight\n",
      "encoder.layers.1.conv.batch_norm.bias\n",
      "encoder.layers.1.conv.batch_norm.running_mean\n",
      "encoder.layers.1.conv.batch_norm.running_var\n",
      "encoder.layers.1.conv.batch_norm.num_batches_tracked\n",
      "encoder.layers.1.conv.pointwise_conv2.weight\n",
      "encoder.layers.1.conv.pointwise_conv2.bias\n",
      "encoder.layers.1.norm_self_att.weight\n",
      "encoder.layers.1.norm_self_att.bias\n",
      "encoder.layers.1.self_attn.pos_bias_u\n",
      "encoder.layers.1.self_attn.pos_bias_v\n",
      "encoder.layers.1.self_attn.linear_q.weight\n",
      "encoder.layers.1.self_attn.linear_q.bias\n",
      "encoder.layers.1.self_attn.linear_k.weight\n",
      "encoder.layers.1.self_attn.linear_k.bias\n",
      "encoder.layers.1.self_attn.linear_v.weight\n",
      "encoder.layers.1.self_attn.linear_v.bias\n",
      "encoder.layers.1.self_attn.linear_out.weight\n",
      "encoder.layers.1.self_attn.linear_out.bias\n",
      "encoder.layers.1.self_attn.linear_pos.weight\n",
      "encoder.layers.1.norm_feed_forward2.weight\n",
      "encoder.layers.1.norm_feed_forward2.bias\n",
      "encoder.layers.1.feed_forward2.linear1.weight\n",
      "encoder.layers.1.feed_forward2.linear1.bias\n",
      "encoder.layers.1.feed_forward2.linear2.weight\n",
      "encoder.layers.1.feed_forward2.linear2.bias\n",
      "encoder.layers.1.norm_out.weight\n",
      "encoder.layers.1.norm_out.bias\n",
      "encoder.layers.2.norm_feed_forward1.weight\n",
      "encoder.layers.2.norm_feed_forward1.bias\n",
      "encoder.layers.2.feed_forward1.linear1.weight\n",
      "encoder.layers.2.feed_forward1.linear1.bias\n",
      "encoder.layers.2.feed_forward1.linear2.weight\n",
      "encoder.layers.2.feed_forward1.linear2.bias\n",
      "encoder.layers.2.norm_conv.weight\n",
      "encoder.layers.2.norm_conv.bias\n",
      "encoder.layers.2.conv.pointwise_conv1.weight\n",
      "encoder.layers.2.conv.pointwise_conv1.bias\n",
      "encoder.layers.2.conv.depthwise_conv.weight\n",
      "encoder.layers.2.conv.depthwise_conv.bias\n",
      "encoder.layers.2.conv.batch_norm.weight\n",
      "encoder.layers.2.conv.batch_norm.bias\n",
      "encoder.layers.2.conv.batch_norm.running_mean\n",
      "encoder.layers.2.conv.batch_norm.running_var\n",
      "encoder.layers.2.conv.batch_norm.num_batches_tracked\n",
      "encoder.layers.2.conv.pointwise_conv2.weight\n",
      "encoder.layers.2.conv.pointwise_conv2.bias\n",
      "encoder.layers.2.norm_self_att.weight\n",
      "encoder.layers.2.norm_self_att.bias\n",
      "encoder.layers.2.self_attn.pos_bias_u\n",
      "encoder.layers.2.self_attn.pos_bias_v\n",
      "encoder.layers.2.self_attn.linear_q.weight\n",
      "encoder.layers.2.self_attn.linear_q.bias\n",
      "encoder.layers.2.self_attn.linear_k.weight\n",
      "encoder.layers.2.self_attn.linear_k.bias\n",
      "encoder.layers.2.self_attn.linear_v.weight\n",
      "encoder.layers.2.self_attn.linear_v.bias\n",
      "encoder.layers.2.self_attn.linear_out.weight\n",
      "encoder.layers.2.self_attn.linear_out.bias\n",
      "encoder.layers.2.self_attn.linear_pos.weight\n",
      "encoder.layers.2.norm_feed_forward2.weight\n",
      "encoder.layers.2.norm_feed_forward2.bias\n",
      "encoder.layers.2.feed_forward2.linear1.weight\n",
      "encoder.layers.2.feed_forward2.linear1.bias\n",
      "encoder.layers.2.feed_forward2.linear2.weight\n",
      "encoder.layers.2.feed_forward2.linear2.bias\n",
      "encoder.layers.2.norm_out.weight\n",
      "encoder.layers.2.norm_out.bias\n",
      "encoder.layers.3.norm_feed_forward1.weight\n",
      "encoder.layers.3.norm_feed_forward1.bias\n",
      "encoder.layers.3.feed_forward1.linear1.weight\n",
      "encoder.layers.3.feed_forward1.linear1.bias\n",
      "encoder.layers.3.feed_forward1.linear2.weight\n",
      "encoder.layers.3.feed_forward1.linear2.bias\n",
      "encoder.layers.3.norm_conv.weight\n",
      "encoder.layers.3.norm_conv.bias\n",
      "encoder.layers.3.conv.pointwise_conv1.weight\n",
      "encoder.layers.3.conv.pointwise_conv1.bias\n",
      "encoder.layers.3.conv.depthwise_conv.weight\n",
      "encoder.layers.3.conv.depthwise_conv.bias\n",
      "encoder.layers.3.conv.batch_norm.weight\n",
      "encoder.layers.3.conv.batch_norm.bias\n",
      "encoder.layers.3.conv.batch_norm.running_mean\n",
      "encoder.layers.3.conv.batch_norm.running_var\n",
      "encoder.layers.3.conv.batch_norm.num_batches_tracked\n",
      "encoder.layers.3.conv.pointwise_conv2.weight\n",
      "encoder.layers.3.conv.pointwise_conv2.bias\n",
      "encoder.layers.3.norm_self_att.weight\n",
      "encoder.layers.3.norm_self_att.bias\n",
      "encoder.layers.3.self_attn.pos_bias_u\n",
      "encoder.layers.3.self_attn.pos_bias_v\n",
      "encoder.layers.3.self_attn.linear_q.weight\n",
      "encoder.layers.3.self_attn.linear_q.bias\n",
      "encoder.layers.3.self_attn.linear_k.weight\n",
      "encoder.layers.3.self_attn.linear_k.bias\n",
      "encoder.layers.3.self_attn.linear_v.weight\n",
      "encoder.layers.3.self_attn.linear_v.bias\n",
      "encoder.layers.3.self_attn.linear_out.weight\n",
      "encoder.layers.3.self_attn.linear_out.bias\n",
      "encoder.layers.3.self_attn.linear_pos.weight\n",
      "encoder.layers.3.norm_feed_forward2.weight\n",
      "encoder.layers.3.norm_feed_forward2.bias\n",
      "encoder.layers.3.feed_forward2.linear1.weight\n",
      "encoder.layers.3.feed_forward2.linear1.bias\n",
      "encoder.layers.3.feed_forward2.linear2.weight\n",
      "encoder.layers.3.feed_forward2.linear2.bias\n",
      "encoder.layers.3.norm_out.weight\n",
      "encoder.layers.3.norm_out.bias\n",
      "encoder.layers.4.norm_feed_forward1.weight\n",
      "encoder.layers.4.norm_feed_forward1.bias\n",
      "encoder.layers.4.feed_forward1.linear1.weight\n",
      "encoder.layers.4.feed_forward1.linear1.bias\n",
      "encoder.layers.4.feed_forward1.linear2.weight\n",
      "encoder.layers.4.feed_forward1.linear2.bias\n",
      "encoder.layers.4.norm_conv.weight\n",
      "encoder.layers.4.norm_conv.bias\n",
      "encoder.layers.4.conv.pointwise_conv1.weight\n",
      "encoder.layers.4.conv.pointwise_conv1.bias\n",
      "encoder.layers.4.conv.depthwise_conv.weight\n",
      "encoder.layers.4.conv.depthwise_conv.bias\n",
      "encoder.layers.4.conv.batch_norm.weight\n",
      "encoder.layers.4.conv.batch_norm.bias\n",
      "encoder.layers.4.conv.batch_norm.running_mean\n",
      "encoder.layers.4.conv.batch_norm.running_var\n",
      "encoder.layers.4.conv.batch_norm.num_batches_tracked\n",
      "encoder.layers.4.conv.pointwise_conv2.weight\n",
      "encoder.layers.4.conv.pointwise_conv2.bias\n",
      "encoder.layers.4.norm_self_att.weight\n",
      "encoder.layers.4.norm_self_att.bias\n",
      "encoder.layers.4.self_attn.pos_bias_u\n",
      "encoder.layers.4.self_attn.pos_bias_v\n",
      "encoder.layers.4.self_attn.linear_q.weight\n",
      "encoder.layers.4.self_attn.linear_q.bias\n",
      "encoder.layers.4.self_attn.linear_k.weight\n",
      "encoder.layers.4.self_attn.linear_k.bias\n",
      "encoder.layers.4.self_attn.linear_v.weight\n",
      "encoder.layers.4.self_attn.linear_v.bias\n",
      "encoder.layers.4.self_attn.linear_out.weight\n",
      "encoder.layers.4.self_attn.linear_out.bias\n",
      "encoder.layers.4.self_attn.linear_pos.weight\n",
      "encoder.layers.4.norm_feed_forward2.weight\n",
      "encoder.layers.4.norm_feed_forward2.bias\n",
      "encoder.layers.4.feed_forward2.linear1.weight\n",
      "encoder.layers.4.feed_forward2.linear1.bias\n",
      "encoder.layers.4.feed_forward2.linear2.weight\n",
      "encoder.layers.4.feed_forward2.linear2.bias\n",
      "encoder.layers.4.norm_out.weight\n",
      "encoder.layers.4.norm_out.bias\n",
      "encoder.layers.5.norm_feed_forward1.weight\n",
      "encoder.layers.5.norm_feed_forward1.bias\n",
      "encoder.layers.5.feed_forward1.linear1.weight\n",
      "encoder.layers.5.feed_forward1.linear1.bias\n",
      "encoder.layers.5.feed_forward1.linear2.weight\n",
      "encoder.layers.5.feed_forward1.linear2.bias\n",
      "encoder.layers.5.norm_conv.weight\n",
      "encoder.layers.5.norm_conv.bias\n",
      "encoder.layers.5.conv.pointwise_conv1.weight\n",
      "encoder.layers.5.conv.pointwise_conv1.bias\n",
      "encoder.layers.5.conv.depthwise_conv.weight\n",
      "encoder.layers.5.conv.depthwise_conv.bias\n",
      "encoder.layers.5.conv.batch_norm.weight\n",
      "encoder.layers.5.conv.batch_norm.bias\n",
      "encoder.layers.5.conv.batch_norm.running_mean\n",
      "encoder.layers.5.conv.batch_norm.running_var\n",
      "encoder.layers.5.conv.batch_norm.num_batches_tracked\n",
      "encoder.layers.5.conv.pointwise_conv2.weight\n",
      "encoder.layers.5.conv.pointwise_conv2.bias\n",
      "encoder.layers.5.norm_self_att.weight\n",
      "encoder.layers.5.norm_self_att.bias\n",
      "encoder.layers.5.self_attn.pos_bias_u\n",
      "encoder.layers.5.self_attn.pos_bias_v\n",
      "encoder.layers.5.self_attn.linear_q.weight\n",
      "encoder.layers.5.self_attn.linear_q.bias\n",
      "encoder.layers.5.self_attn.linear_k.weight\n",
      "encoder.layers.5.self_attn.linear_k.bias\n",
      "encoder.layers.5.self_attn.linear_v.weight\n",
      "encoder.layers.5.self_attn.linear_v.bias\n",
      "encoder.layers.5.self_attn.linear_out.weight\n",
      "encoder.layers.5.self_attn.linear_out.bias\n",
      "encoder.layers.5.self_attn.linear_pos.weight\n",
      "encoder.layers.5.norm_feed_forward2.weight\n",
      "encoder.layers.5.norm_feed_forward2.bias\n",
      "encoder.layers.5.feed_forward2.linear1.weight\n",
      "encoder.layers.5.feed_forward2.linear1.bias\n",
      "encoder.layers.5.feed_forward2.linear2.weight\n",
      "encoder.layers.5.feed_forward2.linear2.bias\n",
      "encoder.layers.5.norm_out.weight\n",
      "encoder.layers.5.norm_out.bias\n",
      "encoder.layers.6.norm_feed_forward1.weight\n",
      "encoder.layers.6.norm_feed_forward1.bias\n",
      "encoder.layers.6.feed_forward1.linear1.weight\n",
      "encoder.layers.6.feed_forward1.linear1.bias\n",
      "encoder.layers.6.feed_forward1.linear2.weight\n",
      "encoder.layers.6.feed_forward1.linear2.bias\n",
      "encoder.layers.6.norm_conv.weight\n",
      "encoder.layers.6.norm_conv.bias\n",
      "encoder.layers.6.conv.pointwise_conv1.weight\n",
      "encoder.layers.6.conv.pointwise_conv1.bias\n",
      "encoder.layers.6.conv.depthwise_conv.weight\n",
      "encoder.layers.6.conv.depthwise_conv.bias\n",
      "encoder.layers.6.conv.batch_norm.weight\n",
      "encoder.layers.6.conv.batch_norm.bias\n",
      "encoder.layers.6.conv.batch_norm.running_mean\n",
      "encoder.layers.6.conv.batch_norm.running_var\n",
      "encoder.layers.6.conv.batch_norm.num_batches_tracked\n",
      "encoder.layers.6.conv.pointwise_conv2.weight\n",
      "encoder.layers.6.conv.pointwise_conv2.bias\n",
      "encoder.layers.6.norm_self_att.weight\n",
      "encoder.layers.6.norm_self_att.bias\n",
      "encoder.layers.6.self_attn.pos_bias_u\n",
      "encoder.layers.6.self_attn.pos_bias_v\n",
      "encoder.layers.6.self_attn.linear_q.weight\n",
      "encoder.layers.6.self_attn.linear_q.bias\n",
      "encoder.layers.6.self_attn.linear_k.weight\n",
      "encoder.layers.6.self_attn.linear_k.bias\n",
      "encoder.layers.6.self_attn.linear_v.weight\n",
      "encoder.layers.6.self_attn.linear_v.bias\n",
      "encoder.layers.6.self_attn.linear_out.weight\n",
      "encoder.layers.6.self_attn.linear_out.bias\n",
      "encoder.layers.6.self_attn.linear_pos.weight\n",
      "encoder.layers.6.norm_feed_forward2.weight\n",
      "encoder.layers.6.norm_feed_forward2.bias\n",
      "encoder.layers.6.feed_forward2.linear1.weight\n",
      "encoder.layers.6.feed_forward2.linear1.bias\n",
      "encoder.layers.6.feed_forward2.linear2.weight\n",
      "encoder.layers.6.feed_forward2.linear2.bias\n",
      "encoder.layers.6.norm_out.weight\n",
      "encoder.layers.6.norm_out.bias\n",
      "encoder.layers.7.norm_feed_forward1.weight\n",
      "encoder.layers.7.norm_feed_forward1.bias\n",
      "encoder.layers.7.feed_forward1.linear1.weight\n",
      "encoder.layers.7.feed_forward1.linear1.bias\n",
      "encoder.layers.7.feed_forward1.linear2.weight\n",
      "encoder.layers.7.feed_forward1.linear2.bias\n",
      "encoder.layers.7.norm_conv.weight\n",
      "encoder.layers.7.norm_conv.bias\n",
      "encoder.layers.7.conv.pointwise_conv1.weight\n",
      "encoder.layers.7.conv.pointwise_conv1.bias\n",
      "encoder.layers.7.conv.depthwise_conv.weight\n",
      "encoder.layers.7.conv.depthwise_conv.bias\n",
      "encoder.layers.7.conv.batch_norm.weight\n",
      "encoder.layers.7.conv.batch_norm.bias\n",
      "encoder.layers.7.conv.batch_norm.running_mean\n",
      "encoder.layers.7.conv.batch_norm.running_var\n",
      "encoder.layers.7.conv.batch_norm.num_batches_tracked\n",
      "encoder.layers.7.conv.pointwise_conv2.weight\n",
      "encoder.layers.7.conv.pointwise_conv2.bias\n",
      "encoder.layers.7.norm_self_att.weight\n",
      "encoder.layers.7.norm_self_att.bias\n",
      "encoder.layers.7.self_attn.pos_bias_u\n",
      "encoder.layers.7.self_attn.pos_bias_v\n",
      "encoder.layers.7.self_attn.linear_q.weight\n",
      "encoder.layers.7.self_attn.linear_q.bias\n",
      "encoder.layers.7.self_attn.linear_k.weight\n",
      "encoder.layers.7.self_attn.linear_k.bias\n",
      "encoder.layers.7.self_attn.linear_v.weight\n",
      "encoder.layers.7.self_attn.linear_v.bias\n",
      "encoder.layers.7.self_attn.linear_out.weight\n",
      "encoder.layers.7.self_attn.linear_out.bias\n",
      "encoder.layers.7.self_attn.linear_pos.weight\n",
      "encoder.layers.7.norm_feed_forward2.weight\n",
      "encoder.layers.7.norm_feed_forward2.bias\n",
      "encoder.layers.7.feed_forward2.linear1.weight\n",
      "encoder.layers.7.feed_forward2.linear1.bias\n",
      "encoder.layers.7.feed_forward2.linear2.weight\n",
      "encoder.layers.7.feed_forward2.linear2.bias\n",
      "encoder.layers.7.norm_out.weight\n",
      "encoder.layers.7.norm_out.bias\n",
      "encoder.layers.8.norm_feed_forward1.weight\n",
      "encoder.layers.8.norm_feed_forward1.bias\n",
      "encoder.layers.8.feed_forward1.linear1.weight\n",
      "encoder.layers.8.feed_forward1.linear1.bias\n",
      "encoder.layers.8.feed_forward1.linear2.weight\n",
      "encoder.layers.8.feed_forward1.linear2.bias\n",
      "encoder.layers.8.norm_conv.weight\n",
      "encoder.layers.8.norm_conv.bias\n",
      "encoder.layers.8.conv.pointwise_conv1.weight\n",
      "encoder.layers.8.conv.pointwise_conv1.bias\n",
      "encoder.layers.8.conv.depthwise_conv.weight\n",
      "encoder.layers.8.conv.depthwise_conv.bias\n",
      "encoder.layers.8.conv.batch_norm.weight\n",
      "encoder.layers.8.conv.batch_norm.bias\n",
      "encoder.layers.8.conv.batch_norm.running_mean\n",
      "encoder.layers.8.conv.batch_norm.running_var\n",
      "encoder.layers.8.conv.batch_norm.num_batches_tracked\n",
      "encoder.layers.8.conv.pointwise_conv2.weight\n",
      "encoder.layers.8.conv.pointwise_conv2.bias\n",
      "encoder.layers.8.norm_self_att.weight\n",
      "encoder.layers.8.norm_self_att.bias\n",
      "encoder.layers.8.self_attn.pos_bias_u\n",
      "encoder.layers.8.self_attn.pos_bias_v\n",
      "encoder.layers.8.self_attn.linear_q.weight\n",
      "encoder.layers.8.self_attn.linear_q.bias\n",
      "encoder.layers.8.self_attn.linear_k.weight\n",
      "encoder.layers.8.self_attn.linear_k.bias\n",
      "encoder.layers.8.self_attn.linear_v.weight\n",
      "encoder.layers.8.self_attn.linear_v.bias\n",
      "encoder.layers.8.self_attn.linear_out.weight\n",
      "encoder.layers.8.self_attn.linear_out.bias\n",
      "encoder.layers.8.self_attn.linear_pos.weight\n",
      "encoder.layers.8.norm_feed_forward2.weight\n",
      "encoder.layers.8.norm_feed_forward2.bias\n",
      "encoder.layers.8.feed_forward2.linear1.weight\n",
      "encoder.layers.8.feed_forward2.linear1.bias\n",
      "encoder.layers.8.feed_forward2.linear2.weight\n",
      "encoder.layers.8.feed_forward2.linear2.bias\n",
      "encoder.layers.8.norm_out.weight\n",
      "encoder.layers.8.norm_out.bias\n",
      "encoder.layers.9.norm_feed_forward1.weight\n",
      "encoder.layers.9.norm_feed_forward1.bias\n",
      "encoder.layers.9.feed_forward1.linear1.weight\n",
      "encoder.layers.9.feed_forward1.linear1.bias\n",
      "encoder.layers.9.feed_forward1.linear2.weight\n",
      "encoder.layers.9.feed_forward1.linear2.bias\n",
      "encoder.layers.9.norm_conv.weight\n",
      "encoder.layers.9.norm_conv.bias\n",
      "encoder.layers.9.conv.pointwise_conv1.weight\n",
      "encoder.layers.9.conv.pointwise_conv1.bias\n",
      "encoder.layers.9.conv.depthwise_conv.weight\n",
      "encoder.layers.9.conv.depthwise_conv.bias\n",
      "encoder.layers.9.conv.batch_norm.weight\n",
      "encoder.layers.9.conv.batch_norm.bias\n",
      "encoder.layers.9.conv.batch_norm.running_mean\n",
      "encoder.layers.9.conv.batch_norm.running_var\n",
      "encoder.layers.9.conv.batch_norm.num_batches_tracked\n",
      "encoder.layers.9.conv.pointwise_conv2.weight\n",
      "encoder.layers.9.conv.pointwise_conv2.bias\n",
      "encoder.layers.9.norm_self_att.weight\n",
      "encoder.layers.9.norm_self_att.bias\n",
      "encoder.layers.9.self_attn.pos_bias_u\n",
      "encoder.layers.9.self_attn.pos_bias_v\n",
      "encoder.layers.9.self_attn.linear_q.weight\n",
      "encoder.layers.9.self_attn.linear_q.bias\n",
      "encoder.layers.9.self_attn.linear_k.weight\n",
      "encoder.layers.9.self_attn.linear_k.bias\n",
      "encoder.layers.9.self_attn.linear_v.weight\n",
      "encoder.layers.9.self_attn.linear_v.bias\n",
      "encoder.layers.9.self_attn.linear_out.weight\n",
      "encoder.layers.9.self_attn.linear_out.bias\n",
      "encoder.layers.9.self_attn.linear_pos.weight\n",
      "encoder.layers.9.norm_feed_forward2.weight\n",
      "encoder.layers.9.norm_feed_forward2.bias\n",
      "encoder.layers.9.feed_forward2.linear1.weight\n",
      "encoder.layers.9.feed_forward2.linear1.bias\n",
      "encoder.layers.9.feed_forward2.linear2.weight\n",
      "encoder.layers.9.feed_forward2.linear2.bias\n",
      "encoder.layers.9.norm_out.weight\n",
      "encoder.layers.9.norm_out.bias\n",
      "encoder.layers.10.norm_feed_forward1.weight\n",
      "encoder.layers.10.norm_feed_forward1.bias\n",
      "encoder.layers.10.feed_forward1.linear1.weight\n",
      "encoder.layers.10.feed_forward1.linear1.bias\n",
      "encoder.layers.10.feed_forward1.linear2.weight\n",
      "encoder.layers.10.feed_forward1.linear2.bias\n",
      "encoder.layers.10.norm_conv.weight\n",
      "encoder.layers.10.norm_conv.bias\n",
      "encoder.layers.10.conv.pointwise_conv1.weight\n",
      "encoder.layers.10.conv.pointwise_conv1.bias\n",
      "encoder.layers.10.conv.depthwise_conv.weight\n",
      "encoder.layers.10.conv.depthwise_conv.bias\n",
      "encoder.layers.10.conv.batch_norm.weight\n",
      "encoder.layers.10.conv.batch_norm.bias\n",
      "encoder.layers.10.conv.batch_norm.running_mean\n",
      "encoder.layers.10.conv.batch_norm.running_var\n",
      "encoder.layers.10.conv.batch_norm.num_batches_tracked\n",
      "encoder.layers.10.conv.pointwise_conv2.weight\n",
      "encoder.layers.10.conv.pointwise_conv2.bias\n",
      "encoder.layers.10.norm_self_att.weight\n",
      "encoder.layers.10.norm_self_att.bias\n",
      "encoder.layers.10.self_attn.pos_bias_u\n",
      "encoder.layers.10.self_attn.pos_bias_v\n",
      "encoder.layers.10.self_attn.linear_q.weight\n",
      "encoder.layers.10.self_attn.linear_q.bias\n",
      "encoder.layers.10.self_attn.linear_k.weight\n",
      "encoder.layers.10.self_attn.linear_k.bias\n",
      "encoder.layers.10.self_attn.linear_v.weight\n",
      "encoder.layers.10.self_attn.linear_v.bias\n",
      "encoder.layers.10.self_attn.linear_out.weight\n",
      "encoder.layers.10.self_attn.linear_out.bias\n",
      "encoder.layers.10.self_attn.linear_pos.weight\n",
      "encoder.layers.10.norm_feed_forward2.weight\n",
      "encoder.layers.10.norm_feed_forward2.bias\n",
      "encoder.layers.10.feed_forward2.linear1.weight\n",
      "encoder.layers.10.feed_forward2.linear1.bias\n",
      "encoder.layers.10.feed_forward2.linear2.weight\n",
      "encoder.layers.10.feed_forward2.linear2.bias\n",
      "encoder.layers.10.norm_out.weight\n",
      "encoder.layers.10.norm_out.bias\n",
      "encoder.layers.11.norm_feed_forward1.weight\n",
      "encoder.layers.11.norm_feed_forward1.bias\n",
      "encoder.layers.11.feed_forward1.linear1.weight\n",
      "encoder.layers.11.feed_forward1.linear1.bias\n",
      "encoder.layers.11.feed_forward1.linear2.weight\n",
      "encoder.layers.11.feed_forward1.linear2.bias\n",
      "encoder.layers.11.norm_conv.weight\n",
      "encoder.layers.11.norm_conv.bias\n",
      "encoder.layers.11.conv.pointwise_conv1.weight\n",
      "encoder.layers.11.conv.pointwise_conv1.bias\n",
      "encoder.layers.11.conv.depthwise_conv.weight\n",
      "encoder.layers.11.conv.depthwise_conv.bias\n",
      "encoder.layers.11.conv.batch_norm.weight\n",
      "encoder.layers.11.conv.batch_norm.bias\n",
      "encoder.layers.11.conv.batch_norm.running_mean\n",
      "encoder.layers.11.conv.batch_norm.running_var\n",
      "encoder.layers.11.conv.batch_norm.num_batches_tracked\n",
      "encoder.layers.11.conv.pointwise_conv2.weight\n",
      "encoder.layers.11.conv.pointwise_conv2.bias\n",
      "encoder.layers.11.norm_self_att.weight\n",
      "encoder.layers.11.norm_self_att.bias\n",
      "encoder.layers.11.self_attn.pos_bias_u\n",
      "encoder.layers.11.self_attn.pos_bias_v\n",
      "encoder.layers.11.self_attn.linear_q.weight\n",
      "encoder.layers.11.self_attn.linear_q.bias\n",
      "encoder.layers.11.self_attn.linear_k.weight\n",
      "encoder.layers.11.self_attn.linear_k.bias\n",
      "encoder.layers.11.self_attn.linear_v.weight\n",
      "encoder.layers.11.self_attn.linear_v.bias\n",
      "encoder.layers.11.self_attn.linear_out.weight\n",
      "encoder.layers.11.self_attn.linear_out.bias\n",
      "encoder.layers.11.self_attn.linear_pos.weight\n",
      "encoder.layers.11.norm_feed_forward2.weight\n",
      "encoder.layers.11.norm_feed_forward2.bias\n",
      "encoder.layers.11.feed_forward2.linear1.weight\n",
      "encoder.layers.11.feed_forward2.linear1.bias\n",
      "encoder.layers.11.feed_forward2.linear2.weight\n",
      "encoder.layers.11.feed_forward2.linear2.bias\n",
      "encoder.layers.11.norm_out.weight\n",
      "encoder.layers.11.norm_out.bias\n",
      "encoder.layers.12.norm_feed_forward1.weight\n",
      "encoder.layers.12.norm_feed_forward1.bias\n",
      "encoder.layers.12.feed_forward1.linear1.weight\n",
      "encoder.layers.12.feed_forward1.linear1.bias\n",
      "encoder.layers.12.feed_forward1.linear2.weight\n",
      "encoder.layers.12.feed_forward1.linear2.bias\n",
      "encoder.layers.12.norm_conv.weight\n",
      "encoder.layers.12.norm_conv.bias\n",
      "encoder.layers.12.conv.pointwise_conv1.weight\n",
      "encoder.layers.12.conv.pointwise_conv1.bias\n",
      "encoder.layers.12.conv.depthwise_conv.weight\n",
      "encoder.layers.12.conv.depthwise_conv.bias\n",
      "encoder.layers.12.conv.batch_norm.weight\n",
      "encoder.layers.12.conv.batch_norm.bias\n",
      "encoder.layers.12.conv.batch_norm.running_mean\n",
      "encoder.layers.12.conv.batch_norm.running_var\n",
      "encoder.layers.12.conv.batch_norm.num_batches_tracked\n",
      "encoder.layers.12.conv.pointwise_conv2.weight\n",
      "encoder.layers.12.conv.pointwise_conv2.bias\n",
      "encoder.layers.12.norm_self_att.weight\n",
      "encoder.layers.12.norm_self_att.bias\n",
      "encoder.layers.12.self_attn.pos_bias_u\n",
      "encoder.layers.12.self_attn.pos_bias_v\n",
      "encoder.layers.12.self_attn.linear_q.weight\n",
      "encoder.layers.12.self_attn.linear_q.bias\n",
      "encoder.layers.12.self_attn.linear_k.weight\n",
      "encoder.layers.12.self_attn.linear_k.bias\n",
      "encoder.layers.12.self_attn.linear_v.weight\n",
      "encoder.layers.12.self_attn.linear_v.bias\n",
      "encoder.layers.12.self_attn.linear_out.weight\n",
      "encoder.layers.12.self_attn.linear_out.bias\n",
      "encoder.layers.12.self_attn.linear_pos.weight\n",
      "encoder.layers.12.norm_feed_forward2.weight\n",
      "encoder.layers.12.norm_feed_forward2.bias\n",
      "encoder.layers.12.feed_forward2.linear1.weight\n",
      "encoder.layers.12.feed_forward2.linear1.bias\n",
      "encoder.layers.12.feed_forward2.linear2.weight\n",
      "encoder.layers.12.feed_forward2.linear2.bias\n",
      "encoder.layers.12.norm_out.weight\n",
      "encoder.layers.12.norm_out.bias\n",
      "encoder.layers.13.norm_feed_forward1.weight\n",
      "encoder.layers.13.norm_feed_forward1.bias\n",
      "encoder.layers.13.feed_forward1.linear1.weight\n",
      "encoder.layers.13.feed_forward1.linear1.bias\n",
      "encoder.layers.13.feed_forward1.linear2.weight\n",
      "encoder.layers.13.feed_forward1.linear2.bias\n",
      "encoder.layers.13.norm_conv.weight\n",
      "encoder.layers.13.norm_conv.bias\n",
      "encoder.layers.13.conv.pointwise_conv1.weight\n",
      "encoder.layers.13.conv.pointwise_conv1.bias\n",
      "encoder.layers.13.conv.depthwise_conv.weight\n",
      "encoder.layers.13.conv.depthwise_conv.bias\n",
      "encoder.layers.13.conv.batch_norm.weight\n",
      "encoder.layers.13.conv.batch_norm.bias\n",
      "encoder.layers.13.conv.batch_norm.running_mean\n",
      "encoder.layers.13.conv.batch_norm.running_var\n",
      "encoder.layers.13.conv.batch_norm.num_batches_tracked\n",
      "encoder.layers.13.conv.pointwise_conv2.weight\n",
      "encoder.layers.13.conv.pointwise_conv2.bias\n",
      "encoder.layers.13.norm_self_att.weight\n",
      "encoder.layers.13.norm_self_att.bias\n",
      "encoder.layers.13.self_attn.pos_bias_u\n",
      "encoder.layers.13.self_attn.pos_bias_v\n",
      "encoder.layers.13.self_attn.linear_q.weight\n",
      "encoder.layers.13.self_attn.linear_q.bias\n",
      "encoder.layers.13.self_attn.linear_k.weight\n",
      "encoder.layers.13.self_attn.linear_k.bias\n",
      "encoder.layers.13.self_attn.linear_v.weight\n",
      "encoder.layers.13.self_attn.linear_v.bias\n",
      "encoder.layers.13.self_attn.linear_out.weight\n",
      "encoder.layers.13.self_attn.linear_out.bias\n",
      "encoder.layers.13.self_attn.linear_pos.weight\n",
      "encoder.layers.13.norm_feed_forward2.weight\n",
      "encoder.layers.13.norm_feed_forward2.bias\n",
      "encoder.layers.13.feed_forward2.linear1.weight\n",
      "encoder.layers.13.feed_forward2.linear1.bias\n",
      "encoder.layers.13.feed_forward2.linear2.weight\n",
      "encoder.layers.13.feed_forward2.linear2.bias\n",
      "encoder.layers.13.norm_out.weight\n",
      "encoder.layers.13.norm_out.bias\n",
      "encoder.layers.14.norm_feed_forward1.weight\n",
      "encoder.layers.14.norm_feed_forward1.bias\n",
      "encoder.layers.14.feed_forward1.linear1.weight\n",
      "encoder.layers.14.feed_forward1.linear1.bias\n",
      "encoder.layers.14.feed_forward1.linear2.weight\n",
      "encoder.layers.14.feed_forward1.linear2.bias\n",
      "encoder.layers.14.norm_conv.weight\n",
      "encoder.layers.14.norm_conv.bias\n",
      "encoder.layers.14.conv.pointwise_conv1.weight\n",
      "encoder.layers.14.conv.pointwise_conv1.bias\n",
      "encoder.layers.14.conv.depthwise_conv.weight\n",
      "encoder.layers.14.conv.depthwise_conv.bias\n",
      "encoder.layers.14.conv.batch_norm.weight\n",
      "encoder.layers.14.conv.batch_norm.bias\n",
      "encoder.layers.14.conv.batch_norm.running_mean\n",
      "encoder.layers.14.conv.batch_norm.running_var\n",
      "encoder.layers.14.conv.batch_norm.num_batches_tracked\n",
      "encoder.layers.14.conv.pointwise_conv2.weight\n",
      "encoder.layers.14.conv.pointwise_conv2.bias\n",
      "encoder.layers.14.norm_self_att.weight\n",
      "encoder.layers.14.norm_self_att.bias\n",
      "encoder.layers.14.self_attn.pos_bias_u\n",
      "encoder.layers.14.self_attn.pos_bias_v\n",
      "encoder.layers.14.self_attn.linear_q.weight\n",
      "encoder.layers.14.self_attn.linear_q.bias\n",
      "encoder.layers.14.self_attn.linear_k.weight\n",
      "encoder.layers.14.self_attn.linear_k.bias\n",
      "encoder.layers.14.self_attn.linear_v.weight\n",
      "encoder.layers.14.self_attn.linear_v.bias\n",
      "encoder.layers.14.self_attn.linear_out.weight\n",
      "encoder.layers.14.self_attn.linear_out.bias\n",
      "encoder.layers.14.self_attn.linear_pos.weight\n",
      "encoder.layers.14.norm_feed_forward2.weight\n",
      "encoder.layers.14.norm_feed_forward2.bias\n",
      "encoder.layers.14.feed_forward2.linear1.weight\n",
      "encoder.layers.14.feed_forward2.linear1.bias\n",
      "encoder.layers.14.feed_forward2.linear2.weight\n",
      "encoder.layers.14.feed_forward2.linear2.bias\n",
      "encoder.layers.14.norm_out.weight\n",
      "encoder.layers.14.norm_out.bias\n",
      "encoder.layers.15.norm_feed_forward1.weight\n",
      "encoder.layers.15.norm_feed_forward1.bias\n",
      "encoder.layers.15.feed_forward1.linear1.weight\n",
      "encoder.layers.15.feed_forward1.linear1.bias\n",
      "encoder.layers.15.feed_forward1.linear2.weight\n",
      "encoder.layers.15.feed_forward1.linear2.bias\n",
      "encoder.layers.15.norm_conv.weight\n",
      "encoder.layers.15.norm_conv.bias\n",
      "encoder.layers.15.conv.pointwise_conv1.weight\n",
      "encoder.layers.15.conv.pointwise_conv1.bias\n",
      "encoder.layers.15.conv.depthwise_conv.weight\n",
      "encoder.layers.15.conv.depthwise_conv.bias\n",
      "encoder.layers.15.conv.batch_norm.weight\n",
      "encoder.layers.15.conv.batch_norm.bias\n",
      "encoder.layers.15.conv.batch_norm.running_mean\n",
      "encoder.layers.15.conv.batch_norm.running_var\n",
      "encoder.layers.15.conv.batch_norm.num_batches_tracked\n",
      "encoder.layers.15.conv.pointwise_conv2.weight\n",
      "encoder.layers.15.conv.pointwise_conv2.bias\n",
      "encoder.layers.15.norm_self_att.weight\n",
      "encoder.layers.15.norm_self_att.bias\n",
      "encoder.layers.15.self_attn.pos_bias_u\n",
      "encoder.layers.15.self_attn.pos_bias_v\n",
      "encoder.layers.15.self_attn.linear_q.weight\n",
      "encoder.layers.15.self_attn.linear_q.bias\n",
      "encoder.layers.15.self_attn.linear_k.weight\n",
      "encoder.layers.15.self_attn.linear_k.bias\n",
      "encoder.layers.15.self_attn.linear_v.weight\n",
      "encoder.layers.15.self_attn.linear_v.bias\n",
      "encoder.layers.15.self_attn.linear_out.weight\n",
      "encoder.layers.15.self_attn.linear_out.bias\n",
      "encoder.layers.15.self_attn.linear_pos.weight\n",
      "encoder.layers.15.norm_feed_forward2.weight\n",
      "encoder.layers.15.norm_feed_forward2.bias\n",
      "encoder.layers.15.feed_forward2.linear1.weight\n",
      "encoder.layers.15.feed_forward2.linear1.bias\n",
      "encoder.layers.15.feed_forward2.linear2.weight\n",
      "encoder.layers.15.feed_forward2.linear2.bias\n",
      "encoder.layers.15.norm_out.weight\n",
      "encoder.layers.15.norm_out.bias\n",
      "encoder.layers.16.norm_feed_forward1.weight\n",
      "encoder.layers.16.norm_feed_forward1.bias\n",
      "encoder.layers.16.feed_forward1.linear1.weight\n",
      "encoder.layers.16.feed_forward1.linear1.bias\n",
      "encoder.layers.16.feed_forward1.linear2.weight\n",
      "encoder.layers.16.feed_forward1.linear2.bias\n",
      "encoder.layers.16.norm_conv.weight\n",
      "encoder.layers.16.norm_conv.bias\n",
      "encoder.layers.16.conv.pointwise_conv1.weight\n",
      "encoder.layers.16.conv.pointwise_conv1.bias\n",
      "encoder.layers.16.conv.depthwise_conv.weight\n",
      "encoder.layers.16.conv.depthwise_conv.bias\n",
      "encoder.layers.16.conv.batch_norm.weight\n",
      "encoder.layers.16.conv.batch_norm.bias\n",
      "encoder.layers.16.conv.batch_norm.running_mean\n",
      "encoder.layers.16.conv.batch_norm.running_var\n",
      "encoder.layers.16.conv.batch_norm.num_batches_tracked\n",
      "encoder.layers.16.conv.pointwise_conv2.weight\n",
      "encoder.layers.16.conv.pointwise_conv2.bias\n",
      "encoder.layers.16.norm_self_att.weight\n",
      "encoder.layers.16.norm_self_att.bias\n",
      "encoder.layers.16.self_attn.pos_bias_u\n",
      "encoder.layers.16.self_attn.pos_bias_v\n",
      "encoder.layers.16.self_attn.linear_q.weight\n",
      "encoder.layers.16.self_attn.linear_q.bias\n",
      "encoder.layers.16.self_attn.linear_k.weight\n",
      "encoder.layers.16.self_attn.linear_k.bias\n",
      "encoder.layers.16.self_attn.linear_v.weight\n",
      "encoder.layers.16.self_attn.linear_v.bias\n",
      "encoder.layers.16.self_attn.linear_out.weight\n",
      "encoder.layers.16.self_attn.linear_out.bias\n",
      "encoder.layers.16.self_attn.linear_pos.weight\n",
      "encoder.layers.16.norm_feed_forward2.weight\n",
      "encoder.layers.16.norm_feed_forward2.bias\n",
      "encoder.layers.16.feed_forward2.linear1.weight\n",
      "encoder.layers.16.feed_forward2.linear1.bias\n",
      "encoder.layers.16.feed_forward2.linear2.weight\n",
      "encoder.layers.16.feed_forward2.linear2.bias\n",
      "encoder.layers.16.norm_out.weight\n",
      "encoder.layers.16.norm_out.bias\n",
      "decoder.prediction.embed.weight\n",
      "decoder.prediction.dec_rnn.lstm.weight_ih_l0\n",
      "decoder.prediction.dec_rnn.lstm.weight_hh_l0\n",
      "decoder.prediction.dec_rnn.lstm.bias_ih_l0\n",
      "decoder.prediction.dec_rnn.lstm.bias_hh_l0\n",
      "joint.pred.weight\n",
      "joint.pred.bias\n",
      "joint.enc.weight\n",
      "joint.enc.bias\n",
      "joint.joint_net.2.weight\n",
      "joint.joint_net.2.bias\n",
      "ctc_decoder.decoder_layers.0.weight\n",
      "ctc_decoder.decoder_layers.0.bias\n"
     ]
    }
   ],
   "source": [
    "for k, v in list(state_dict.items()):\n",
    "    print(k)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "b76a633c",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "nemo",
   "language": "python",
   "name": "nemo"
  },
  "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.10.12"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": false,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {},
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
