{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.13","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"nvidiaTeslaT4","dataSources":[{"sourceId":37174,"databundleVersionId":3938797,"sourceType":"competition"}],"dockerImageVersionId":30733,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":true}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import os\nimport pandas as pd\nimport librosa\nimport torch\nimport torchaudio\nimport numpy as np\nfrom sklearn.metrics import accuracy_score\nfrom tqdm import tqdm  # Import tqdm for progress tracking\n\nfrom transformers import WhisperFeatureExtractor, WhisperTokenizer, WhisperProcessor, WhisperForConditionalGeneration\n\ndevice = torch.device('cuda' if torch.cuda.is_available() else 'cpu')\n\n# Paths and URLs\nmodel_path = \"bangla-speech-processing/BanglaASR\"\n\n# Load feature extractor, tokenizer, processor, and model\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)\n\n# Function to process each audio file\ndef process_audio(file_path):\n    speech_array, sampling_rate = torchaudio.load(file_path, format=\"mp3\")\n    speech_array = speech_array[0].numpy()\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    return input_features.to(device)\n\n# Load validation data from CSV\nvalidation_csv_path = \"/kaggle/input/dlsprint/validation.csv\"\nvalidation_df = pd.read_csv(validation_csv_path)\n\n# Limit to the first 1500 rows for validation\nvalidation_df = validation_df.head(1500)\n\n# Initialize lists for true and predicted labels\ntrue_labels = []\npredicted_labels = []\nvalidation_dataset_path = \"/kaggle/input/dlsprint/validation_files/\"\n\n# Iterate through validation data and perform inference with progress tracking\nfor idx, row in tqdm(validation_df.iterrows(), total=len(validation_df)):\n    audio_file = validation_dataset_path + row['path']  # Adjust according to your CSV structure\n    input_features = process_audio(audio_file)\n    predicted_ids = model.generate(inputs=input_features)[0]\n    transcription = processor.decode(predicted_ids, skip_special_tokens=True)\n    \n    true_label = row['sentence']  # Adjust according to your CSV structure\n    true_labels.append(true_label)\n    predicted_labels.append(transcription)\n\n# Compute accuracy\naccuracy = accuracy_score(true_labels, predicted_labels)\nprint(f\"Accuracy: {accuracy}\")","metadata":{"execution":{"iopub.status.busy":"2024-06-24T01:50:28.395483Z","iopub.execute_input":"2024-06-24T01:50:28.395838Z","iopub.status.idle":"2024-06-24T02:29:43.443125Z","shell.execute_reply.started":"2024-06-24T01:50:28.395808Z","shell.execute_reply":"2024-06-24T02:29:43.442192Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"!pip install jiwer","metadata":{"execution":{"iopub.status.busy":"2024-06-24T02:35:21.065038Z","iopub.execute_input":"2024-06-24T02:35:21.065723Z","iopub.status.idle":"2024-06-24T02:35:36.496701Z","shell.execute_reply.started":"2024-06-24T02:35:21.065690Z","shell.execute_reply":"2024-06-24T02:35:36.495533Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"from sklearn.metrics import accuracy_score\nfrom jiwer import wer, cer  # Import jiwer for WER and CER calculation\n\n# Compute accuracy\naccuracy = accuracy_score(true_labels, predicted_labels)\nprint(f\"Accuracy: {accuracy}\")\n\n# Compute WER and CER\nwer_score = wer(true_labels, predicted_labels)\ncer_score = cer(true_labels, predicted_labels)\nprint(f\"Word Error Rate (WER): {wer_score}\")\nprint(f\"Character Error Rate (CER): {cer_score}\")","metadata":{"execution":{"iopub.status.busy":"2024-06-24T02:35:39.391569Z","iopub.execute_input":"2024-06-24T02:35:39.391967Z","iopub.status.idle":"2024-06-24T02:35:39.583702Z","shell.execute_reply.started":"2024-06-24T02:35:39.391933Z","shell.execute_reply":"2024-06-24T02:35:39.582755Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"for i in range(15):\n    print(f\"True Label: {true_labels[i]}\")\n    print(f\"True Label: {predicted_labels[i]}\")\n    print(\"------------------------------------\")","metadata":{"execution":{"iopub.status.busy":"2024-06-24T02:44:14.165344Z","iopub.execute_input":"2024-06-24T02:44:14.166141Z","iopub.status.idle":"2024-06-24T02:44:14.171202Z","shell.execute_reply.started":"2024-06-24T02:44:14.166105Z","shell.execute_reply":"2024-06-24T02:44:14.170414Z"},"trusted":true},"execution_count":null,"outputs":[]},{"cell_type":"code","source":"","metadata":{},"execution_count":null,"outputs":[]}]}