{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"pygments_lexer":"ipython3","nbconvert_exporter":"python","version":"3.6.4","file_extension":".py","codemirror_mode":{"name":"ipython","version":3},"name":"python","mimetype":"text/x-python"}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"markdown","source":"# Direct Inference on Test Data using Whisper Pretrained Models\n\ncredits to https://www.kaggle.com/code/mbmmurad/first-submission for providing inference function.","metadata":{}},{"cell_type":"code","source":"import os\nimport librosa\nimport torch\nimport torchaudio\nimport numpy as np\n\nfrom transformers import WhisperTokenizer\nfrom transformers import WhisperProcessor\nfrom transformers import WhisperFeatureExtractor\nfrom transformers import WhisperForConditionalGeneration\nfrom tqdm import tqdm\nimport pandas as pd\nimport soundfile as sf\nfrom pydub import AudioSegment","metadata":{"execution":{"iopub.status.busy":"2023-07-18T09:34:11.239413Z","iopub.execute_input":"2023-07-18T09:34:11.240458Z","iopub.status.idle":"2023-07-18T09:34:26.702579Z","shell.execute_reply.started":"2023-07-18T09:34:11.240418Z","shell.execute_reply":"2023-07-18T09:34:26.701619Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"model_path = '/kaggle/input/whisper-models-bengaliai-asr/whisper-large-v2'\n\ndevice = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\nfeature_extractor = WhisperFeatureExtractor.from_pretrained(model_path)\ntokenizer = WhisperTokenizer.from_pretrained(model_path)\nprocessor = WhisperProcessor.from_pretrained(model_path)\nmodel = WhisperForConditionalGeneration.from_pretrained(model_path).to(device)\nforced_decoder_ids = processor.get_decoder_prompt_ids(language=\"bengali\", task=\"transcribe\")","metadata":{"execution":{"iopub.status.busy":"2023-07-18T09:34:26.704474Z","iopub.execute_input":"2023-07-18T09:34:26.704831Z","iopub.status.idle":"2023-07-18T09:35:51.924144Z","shell.execute_reply.started":"2023-07-18T09:34:26.704799Z","shell.execute_reply":"2023-07-18T09:35:51.922353Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"def inference_fn(mp3_path):\n    speech_array, sampling_rate = sf.read(mp3_path)\n    speech_array = librosa.resample(np.asarray(speech_array), orig_sr=sampling_rate, target_sr=16000)\n    input_features = feature_extractor(speech_array, sampling_rate=16000, return_tensors=\"pt\").input_features\n    predicted_ids = model.generate(inputs=input_features.to(device), forced_decoder_ids=forced_decoder_ids)[0]\n    transcription = processor.decode(predicted_ids, skip_special_tokens=True)\n    return transcription","metadata":{"execution":{"iopub.status.busy":"2023-07-18T09:35:51.930398Z","iopub.execute_input":"2023-07-18T09:35:51.931536Z","iopub.status.idle":"2023-07-18T09:35:51.940076Z","shell.execute_reply.started":"2023-07-18T09:35:51.931497Z","shell.execute_reply":"2023-07-18T09:35:51.939101Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"ids = []\ntest_transcriptions = []\nfor i in tqdm(os.listdir('/kaggle/input/bengaliai-speech/test_mp3s')):\n    ids.append(i.split('.')[0])\n    test_transcriptions.append(inference_fn('/kaggle/input/bengaliai-speech/test_mp3s/'+i))","metadata":{"execution":{"iopub.status.busy":"2023-07-18T09:35:51.944575Z","iopub.execute_input":"2023-07-18T09:35:51.947292Z","iopub.status.idle":"2023-07-18T09:36:57.994459Z","shell.execute_reply.started":"2023-07-18T09:35:51.947246Z","shell.execute_reply":"2023-07-18T09:36:57.993350Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sub = pd.DataFrame({\n    'id':ids,\n    'sentence':test_transcriptions\n})\nsub.head()","metadata":{"execution":{"iopub.status.busy":"2023-07-18T09:36:57.996122Z","iopub.execute_input":"2023-07-18T09:36:57.997595Z","iopub.status.idle":"2023-07-18T09:36:58.038044Z","shell.execute_reply.started":"2023-07-18T09:36:57.997558Z","shell.execute_reply":"2023-07-18T09:36:58.037086Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"sub.to_csv('submission.csv', index = False)","metadata":{"execution":{"iopub.status.busy":"2023-07-18T09:36:58.041405Z","iopub.execute_input":"2023-07-18T09:36:58.042421Z","iopub.status.idle":"2023-07-18T09:36:58.055543Z","shell.execute_reply.started":"2023-07-18T09:36:58.042378Z","shell.execute_reply":"2023-07-18T09:36:58.054542Z"},"trusted":true},"execution_count":null,"outputs":[]}]}