brainworkup/medasr-bucket / notebook.ipynb
brainworkup's picture
download
raw
118 kB
{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"id": "1fgVWTMK9SNz"
},
"source": [
"~~~\n",
"Copyright 2025 Google LLC\n",
"\n",
"Licensed under the Apache License, Version 2.0 (the \"License\");\n",
"you may not use this file except in compliance with the License.\n",
"You may obtain a copy of the License at\n",
"\n",
" https://www.apache.org/licenses/LICENSE-2.0\n",
"\n",
"Unless required by applicable law or agreed to in writing, software\n",
"distributed under the License is distributed on an \"AS IS\" BASIS,\n",
"WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n",
"See the License for the specific language governing permissions and\n",
"limitations under the License.\n",
"~~~\n",
"\n",
"# Quick start with Hugging Face\n",
"\n",
"<table><tbody><tr>\n",
" <td style=\"text-align: center\">\n",
" <a href=\"https://colab.research.google.com/github/google-health/medasr/blob/main/notebooks/quick_start_with_hugging_face.ipynb\">\n",
" <img alt=\"Google Colab logo\" src=\"https://www.tensorflow.org/images/colab_logo_32px.png\" width=\"32px\"><br> Run in Google Colab\n",
" </a>\n",
" </td>\n",
" <td style=\"text-align: center\">\n",
" <a href=\"https://console.cloud.google.com/vertex-ai/colab/import/https:%2F%2Fraw.githubusercontent.com%2Fgoogle-health%2Fmedasr%2Fmain%2Fnotebooks%2Fquick_start_with_hugging_face.ipynb\">\n",
" <img alt=\"Google Cloud Colab Enterprise logo\" src=\"https://lh3.googleusercontent.com/JmcxdQi-qOpctIvWKgPtrzZdJJK-J3sWE1RsfjZNwshCFgE_9fULcNpuXYTilIR2hjwN\" width=\"32px\"><br> Run in Colab Enterprise\n",
" </a>\n",
" </td>\n",
" <td style=\"text-align: center\">\n",
" <a href=\"https://github.com/google-health/medasr/blob/main/notebooks/quick_start_with_hugging_face.ipynb\">\n",
" <img alt=\"GitHub logo\" src=\"https://github.githubassets.com/assets/GitHub-Mark-ea2971cee799.png\" width=\"32px\"><br> View on GitHub\n",
" </a>\n",
" </td>\n",
" <td style=\"text-align: center\">\n",
" <a href=\"https://huggingface.co/google/medasr\">\n",
" <img alt=\"Hugging Face logo\" src=\"https://huggingface.co/front/assets/huggingface_logo-noborder.svg\" width=\"32px\"><br> View on Hugging Face\n",
" </a>\n",
" </td>\n",
"</tr></tbody></table>\n",
"\n",
"This notebook provides a basic demo of using MedASR (Medical Automatic Speech Recognition), an automatic speech recognition model trained for medical terms. MedASR is intended to accelerate building healthcare-based AI applications that require audio input.\n",
"\n",
"Learn more about the model on the [HAI-DEF developer site](https://developers.google.com/health-ai-developer-foundations/medasr).\n",
"\n",
"This notebook is for educational purposes only and does not represent a finished or approved product."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "t9xt2XZgaaH2"
},
"source": [
"## Setup\n",
"\n",
"For an optimal experience, we recommend running this tutorial on a system equipped with an NVIDIA Tesla T4 GPU or higher. While the tutorial can run on a CPU, performance will be significantly slower.\n",
"\n",
"You can try running the notebook on Google Colab with a free T4 GPU:\n",
"\n",
"1. In the upper-right of the Colab window where it reads **Connect**, select **▾ (Additional connection options)**.\n",
"2. Select **Change runtime type**.\n",
"3. Under Hardware accelerator, select **T4 GPU**."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "L9ITcQtdal7J"
},
"source": [
"### Get access to MedASR\n",
"\n",
"Before you get started, make sure that you have access to MedASR models on Hugging Face:\n",
"\n",
"1. If you don't already have a Hugging Face account, you can create one for free by clicking [here](https://huggingface.co/join).\n",
"2. Head over to the [MedASR model page](https://huggingface.co/google/medasr) and accept the usage conditions."
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "W7xTbWg6pY4W"
},
"source": [
"### Install dependencies"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "CulOXOrhpY4W"
},
"outputs": [],
"source": [
"! uv pip install accelerate bitsandbytes git+https://github.com/huggingface/transformers.git@65dc261512cbdb1ee72b88ae5b222f2605aad8e5 levenshtein jiwer librosa"
]
},
{
"cell_type": "markdown",
"source": [
"**Important**: Please restart your runtime after reinstalling transformers from Git.\n",
"![Screenshot.png](data:image/png;base64,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)"
],
"metadata": {
"id": "HWWViEDHUR_5"
}
},
{
"cell_type": "markdown",
"metadata": {
"id": "qRFQnPL2a9Dj"
},
"source": [
"### Authenticate with Hugging Face\n",
"\n",
"Generate a Hugging Face `read` access token by going to [settings](https://huggingface.co/settings/tokens).\n",
"\n",
"If you are using Google Colab, add your access token to the Colab Secrets manager to securely store it. If not, proceed to run the cell below to authenticate with Hugging Face.\n",
"\n",
"1. Open your Google Colab notebook and click on the 🔑 Secrets tab in the left panel. <img src=\"https://storage.googleapis.com/generativeai-downloads/images/secrets.jpg\" alt=\"The Secrets tab is found on the left panel.\" width=50%>\n",
"2. Create a new secret with the name `HF_TOKEN`.\n",
"3. Copy/paste your token key into the Value input box of `HF_TOKEN`.\n",
"4. Toggle the button on the left to allow notebook access to the secret."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "ZwUUIY0gpY4W"
},
"outputs": [],
"source": [
"import os\n",
"import sys\n",
"\n",
"google_colab = \"google.colab\" in sys.modules and not os.environ.get(\"VERTEX_PRODUCT\")\n",
"\n",
"if google_colab:\n",
" # Use secret if running in Google Colab\n",
" from google.colab import userdata\n",
" os.environ[\"HF_TOKEN\"] = userdata.get(\"HF_TOKEN\")\n",
"else:\n",
" # Store Hugging Face data under `/content` if running in Colab Enterprise\n",
" if os.environ.get(\"VERTEX_PRODUCT\") == \"COLAB_ENTERPRISE\":\n",
" os.environ[\"HF_HOME\"] = \"/content/hf\"\n",
" # Authenticate with Hugging Face\n",
" ! uv pip install huggingface_hub\n",
" from huggingface_hub import get_token\n",
" if get_token() is None:\n",
" from huggingface_hub import notebook_login\n",
" notebook_login()"
]
},
{
"cell_type": "markdown",
"source": [
"### Retrieve sample data\n"
],
"metadata": {
"id": "HC1wQReWHBlx"
}
},
{
"cell_type": "code",
"source": [
"import huggingface_hub\n",
"from IPython.display import Audio, display\n",
"\n",
"audio = huggingface_hub.hf_hub_download('google/medasr', 'test_audio.wav')\n",
"sample_transcript = \"Exam type CT chest PE protocol period. Indication 54 year old female, shortness of breath, evaluate for PE period. Technique standard protocol period. Findings colon. Pulmonary vasculature colon. The main PA is patent period. There are filling defects in the segmental branches of the right lower lobe comma compatible with acute PE period. No saddle embolus period. Lungs colon. No pneumothorax period. Small bilateral effusions comma right greater than left period. New paragraph. Impression colon Acute segmental PE right lower lobe period.\"\n",
"display(Audio(audio, autoplay=False))\n",
"model_id = \"google/medasr\"\n"
],
"metadata": {
"id": "I7n1Fm0GHBsT"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"### Define utility functions to evaluate Word Error Rate (WER)"
],
"metadata": {
"id": "RM9legibu-Lk"
}
},
{
"cell_type": "code",
"source": [
"# @title\n",
"import re\n",
"import jiwer\n",
"import Levenshtein\n",
"\n",
"def normalize(s: str) -> str:\n",
" s = s.lower()\n",
" s = s.replace('</s>', '')\n",
" s = re.sub(r\"[^ a-z0-9']\", ' ', s)\n",
" s = ' '.join(s.split())\n",
" return s\n",
"\n",
"def _colored(text, color):\n",
" if color == 'red':\n",
" return f\"\\033[91m{text}\\033[0m\"\n",
" elif color == 'green':\n",
" return f\"\\033[92m{text}\\033[0m\"\n",
" return text\n",
"\n",
"def evaluate(\n",
" ref_text: str,\n",
" hyp_text: str,\n",
" delete_color: str = 'red',\n",
" insert_color: str = 'green',\n",
") -> None:\n",
" print('HYP:', hyp_text)\n",
" normalized_ref = normalize(ref_text)\n",
" normalized_hyp = normalize(hyp_text)\n",
"\n",
" # Calculate word lists early so we can use them for both jiwer and diffs\n",
" ref_words = normalized_ref.split()\n",
" hyp_words = normalized_hyp.split()\n",
"\n",
" # jiwer.process_words expects a list of strings (sentences) or list of list of words\n",
" measures = jiwer.process_words([normalized_ref], [normalized_hyp])\n",
"\n",
" # Calculate edit operations using Levenshtein for the colored diff\n",
" edits = Levenshtein.editops(ref_words, hyp_words)\n",
"\n",
" r = 0 # Index for the reference words for diff building\n",
" diff = ''\n",
"\n",
" for op, i, j in edits:\n",
" # Add matched words before the current edit\n",
" if r < i:\n",
" diff += ' ' + ' '.join(ref_words[r:i])\n",
" r = i # Update reference index for next iteration\n",
"\n",
" if op == 'replace':\n",
" diff += (\n",
" f' {_colored(f\"{{-{ref_words[i]}-}}\", delete_color)}'\n",
" f' {_colored(f\"{{+{hyp_words[j]}+}}\", insert_color)}'\n",
" )\n",
" r += 1 # Advance reference index after replacement\n",
" elif op == 'insert':\n",
" diff += f' {_colored(f\"{{+{hyp_words[j]}+}}\", insert_color)}'\n",
" # Reference index `r` does not advance for an insertion\n",
" elif op == 'delete':\n",
" diff += f' {_colored(f\"{{-{ref_words[i]}-}}\", delete_color)}'\n",
" r += 1 # Advance reference index after deletion\n",
"\n",
" # Add any remaining matched words from the reference\n",
" if r < len(ref_words):\n",
" diff += ' ' + ' '.join(ref_words[r:])\n",
"\n",
" print(\n",
" f'WER: {measures.wer * 100:.2f}%: '\n",
" f'insertions {measures.insertions}, deletions {measures.deletions}, substitutions {measures.substitutions}, '\n",
" f'ref tokens {len(ref_words)}'\n",
" )\n",
" print(diff)"
],
"metadata": {
"id": "72oc8l3bfMb4",
"cellView": "form"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "GRN9Yg_kpY4X"
},
"source": [
"## Run inference on sample audio"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "oPhEFjiOTpcM"
},
"source": [
"The following sections contain standalone examples demonstrating how to use the model both directly and with the [`pipeline`](https://huggingface.co/docs/transformers/en/main_classes/pipelines) API. The `pipeline` API provides a simple way to use the model for inference while abstracting away complex details, while directly using the model gives you complete control over the inference process, including preprocessing and postprocessing. In practice, you should select the method that is best suited for your use case.\n",
"\n"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "T2Of7LKuT_Sz"
},
"source": [
"**Run model with the `pipeline` API**"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "YORs_sDfpY4X"
},
"outputs": [],
"source": [
"from transformers import pipeline\n",
"\n",
"pipe = pipeline(\"automatic-speech-recognition\", model=model_id)\n",
"result = pipe(audio,chunk_length_s=20, stride_length_s=2)\n",
"# the chunk length is how long in seconds MedASR segments audio and the stride length is the overlap between chunks.\n",
"print(result)\n",
"evaluate(ref_text=sample_transcript, hyp_text=result['text'])"
]
},
{
"cell_type": "markdown",
"source": [
"**Use a language model to further improve MedASR**\n",
"\n",
"We also include a n-gram SentencePiece language model for improving the output quality. Here's an example of how it can be used."
],
"metadata": {
"id": "9K2G-kOJxXns"
}
},
{
"cell_type": "code",
"source": [
"# We must install a modified version of pyctcdecode which is compatible with\n",
"# newer versions of `transformers`.\n",
"#\n",
"# Please use Python 3.12 (e.g. `uv venv --python=3.12`) if kenlm cannot be\n",
"# installed under newer Python versions [https://github.com/kpu/kenlm/pull/473].\n",
"! uv pip install kenlm==0.3.0 git+https://github.com/mediacatch/pyctcdecode.git@ff49fc562bf8fc5d6697d4dcd34188dd630cc977\n",
"\n",
"import dataclasses\n",
"import pyctcdecode\n",
"import transformers\n",
"\n",
"def _restore_text(text: str) -> str:\n",
" return text.replace(\" \", \"\").replace(\"#\", \" \").replace(\"</s>\", \"\").strip()\n",
"\n",
"\n",
"class LasrCtcBeamSearchDecoder:\n",
"\n",
" def __init__(\n",
" self,\n",
" tokenizer: transformers.LasrTokenizer,\n",
" kenlm_model_path=None,\n",
" **kwargs,\n",
" ):\n",
" vocab = [None for _ in range(tokenizer.vocab_size)]\n",
" for k, v in tokenizer.vocab.items():\n",
" if v < tokenizer.vocab_size:\n",
" vocab[v] = k\n",
" assert not [i for i in vocab if i is None]\n",
" # pyctcdecode also expect the blank label to map to the empty string.\n",
" vocab[0] = \"\"\n",
" # Replace '▁' with '#' and prefix each token with a '▁'. This way, pyctcdecode\n",
" # treats each token as a \"word\".\n",
" for i in range(1, len(vocab)):\n",
" piece = vocab[i]\n",
" if not piece.startswith(\"<\") and not piece.endswith(\">\"):\n",
" piece = \"\" + piece.replace(\"\", \"#\")\n",
" vocab[i] = piece\n",
" self._decoder = pyctcdecode.build_ctcdecoder(\n",
" vocab, kenlm_model_path, **kwargs\n",
" )\n",
"\n",
" def decode_beams(self, *args, **kwargs):\n",
" beams = self._decoder.decode_beams(*args, **kwargs)\n",
" return [dataclasses.replace(i, text=_restore_text(i.text)) for i in beams]\n",
"\n",
"\n",
"def beam_search_pipe(model: str, lm: str):\n",
" feature_extractor = transformers.LasrFeatureExtractor.from_pretrained(model)\n",
" feature_extractor._processor_class = \"LasrProcessorWithLM\"\n",
" pipe = transformers.pipeline(\n",
" task=\"automatic-speech-recognition\",\n",
" model=model,\n",
" feature_extractor=feature_extractor,\n",
" decoder=LasrCtcBeamSearchDecoder(\n",
" transformers.AutoTokenizer.from_pretrained(model), lm\n",
" ),\n",
" )\n",
" assert pipe.type == \"ctc_with_lm\"\n",
" return pipe\n",
"\n",
"pipe_with_lm = beam_search_pipe(\n",
" model_id,\n",
" huggingface_hub.hf_hub_download(model_id, filename='lm_6.kenlm'),\n",
")\n",
"\n",
"result_with_lm = pipe_with_lm(\n",
" audio,\n",
" chunk_length_s=20,\n",
" stride_length_s=2,\n",
" decoder_kwargs=dict(beam_width=8),\n",
")\n",
"evaluate(ref_text=sample_transcript, hyp_text=result_with_lm[\"text\"])"
],
"metadata": {
"id": "dzxdX-QAxWyt"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "b9F5HEr6UMqO"
},
"source": [
"**Run model directly**"
]
},
{
"cell_type": "code",
"source": [
"import librosa\n",
"import torch\n",
"from transformers import AutoModelForCTC, AutoProcessor\n",
"\n",
"device = \"cuda\" if torch.cuda.is_available() else \"cpu\"\n",
"\n",
"# 1. Setup\n",
"processor = AutoProcessor.from_pretrained(model_id)\n",
"model = AutoModelForCTC.from_pretrained(model_id).to(device)\n",
"\n",
"# 2. Load audio with librosa\n",
"# We use the 'audio' variable from the earlier cell which contains the local path to the downloaded file.\n",
"# We explicitly set sr=16000 because most speech models expect 16kHz audio.\n",
"speech, sample_rate = librosa.load(audio, sr=16000)\n",
"\n",
"# 3. Preprocess\n",
"inputs = processor(speech, sampling_rate=sample_rate)\n",
"inputs = inputs.to(device)\n",
"\n",
"# 4. Inference\n",
"# Here we do not segment audio at all.\n",
"outputs = model.generate(**inputs)\n",
"decoded_text = processor.batch_decode(outputs)[0]\n",
"evaluate(ref_text=sample_transcript, hyp_text=decoded_text)"
],
"metadata": {
"id": "DVhxeWCBGqKn"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "_3M0Hyl3pY4X"
},
"source": [
"## Run inference on your own audio recording\n",
"\n",
"This section demonstrates how you can record your own speech and test the model.\n"
]
},
{
"cell_type": "markdown",
"source": [
"### Write transcript of recording\n",
"\n",
"Start by editing the transcript field below to reflect the speech you'd like to record."
],
"metadata": {
"id": "NG0IN3WPxsfv"
}
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "qunAkiKspY4X"
},
"outputs": [],
"source": [
"import pprint\n",
"\n",
"transcript = \"FINDINGS: LUNGS AND PLEURA: There is a focal airspace opacity in the right lower lobe, consistent with airspace disease. The remaining lung parenchyma is clear. There is no evidence of pneumothorax or significant pleural effusion. HEART AND MEDIASTINUM: The cardiac silhouette is normal in size. The mediastinal and hilar contours are unremarkable. BONES: The visualized osseous structures, including the ribs, clavicles, and thoracic spine, are unremarkable for acute fracture or lytic lesion. SOFT TISSUES: The overlying soft tissues are unremarkable.\" # @param {type: \"string\"}\n",
"pprint.pprint(transcript)"
]
},
{
"cell_type": "markdown",
"source": [
"### Record audio\n"
],
"metadata": {
"id": "o9ovgI6Vd8AP"
}
},
{
"cell_type": "code",
"metadata": {
"id": "208abe81",
"cellView": "form"
},
"source": [
"# @title #### Define helper functions to record audio\n",
"\n",
"import base64\n",
"from google.colab import output\n",
"\n",
"def receive_audio_data_simplified(base64_audio, filename):\n",
" # Decode the base64 string\n",
" audio_bytes = base64.b64decode(base64_audio)\n",
"\n",
" # Save the file to the Colab local filesystem\n",
" with open(filename, 'wb') as f:\n",
" f.write(audio_bytes)\n",
"\n",
" print(f\"Saved audio file to: {filename}\")\n",
"\n",
"# Register the callback so JavaScript can call it\n",
"output.register_callback('receive_audio_data_simplified', receive_audio_data_simplified)"
],
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"source": [
"Now press play in the next code cell and dictate the words in the transcript above and we'll see how good MedASR is at recognizing your voice."
],
"metadata": {
"id": "tkUDGUuw_pTQ"
}
},
{
"cell_type": "code",
"source": [
"# @title\n",
"%%javascript\n",
"(async () => {\n",
" const display = (msg) => {\n",
" const div = document.createElement('div');\n",
" div.innerHTML = msg;\n",
" document.body.appendChild(div);\n",
" };\n",
"\n",
" const html = `\n",
" <div>\n",
" <button id=\"record\">Start Recording</button>\n",
" <button id=\"stop\" disabled>Stop Recording</button>\n",
" <button id=\"play\" disabled>Play Recording</button>\n",
" <audio id=\"audioPlayback\" controls style=\"margin-top: 10px;\"></audio>\n",
" <div id=\"status\" style=\"margin-top: 10px;\">Click \"Start Recording\" to begin.</div>\n",
" </div>\n",
" `;\n",
" display(html);\n",
"\n",
" const recordButton = document.getElementById('record');\n",
" const stopButton = document.getElementById('stop');\n",
" const playButton = document.getElementById('play');\n",
" const audioPlayback = document.getElementById('audioPlayback');\n",
" const statusDiv = document.getElementById('status');\n",
"\n",
" let mediaRecorder;\n",
" let audioChunks = [];\n",
" let audioBlob;\n",
"\n",
" const enableButtons = (record, stop, play) => {\n",
" recordButton.disabled = !record;\n",
" stopButton.disabled = !stop;\n",
" playButton.disabled = !play;\n",
" };\n",
"\n",
" const sendAudioToPython = async (blob, filename) => {\n",
" if (!blob) {\n",
" statusDiv.innerText = 'No audio recorded to save.';\n",
" return;\n",
" }\n",
" enableButtons(false, false, false);\n",
" statusDiv.innerText = 'Sending audio data to Python...';\n",
" const reader = new FileReader();\n",
" reader.onloadend = async () => {\n",
" const base64data = reader.result.split(',')[1];\n",
" try {\n",
" await google.colab.kernel.invokeFunction('receive_audio_data_simplified', [base64data, filename], {});\n",
" statusDiv.innerText = 'Audio data sent to Python successfully.';\n",
" enableButtons(true, false, true);\n",
" } catch (e) {\n",
" statusDiv.innerText = 'Error sending audio data to Python: ' + e.message;\n",
" enableButtons(true, false, true);\n",
" }\n",
" };\n",
" reader.readAsDataURL(blob);\n",
" };\n",
"\n",
" recordButton.onclick = async () => {\n",
" statusDiv.innerText = 'Requesting microphone access...';\n",
" try {\n",
" if (!mediaRecorder) {\n",
" const stream = await navigator.mediaDevices.getUserMedia({ audio: true });\n",
" mediaRecorder = new MediaRecorder(stream);\n",
"\n",
" mediaRecorder.ondataavailable = event => {\n",
" audioChunks.push(event.data);\n",
" };\n",
"\n",
" mediaRecorder.onstop = async () => {\n",
" audioBlob = new Blob(audioChunks, { type: 'audio/webm' });\n",
" const audioUrl = URL.createObjectURL(audioBlob);\n",
" audioPlayback.src = audioUrl;\n",
" statusDiv.innerText = 'Recording stopped. Saving audio...';\n",
" enableButtons(false, false, false);\n",
" const filename = \"test_audio_1.webm\";\n",
" sendAudioToPython(audioBlob, filename);\n",
" audioChunks = [];\n",
" };\n",
" }\n",
"\n",
" audioChunks = [];\n",
" mediaRecorder.start();\n",
" statusDiv.innerText = 'Recording... Click \"Stop Recording\" to finish.';\n",
" enableButtons(false, true, false);\n",
" } catch (err) {\n",
" statusDiv.innerText = 'Error accessing microphone: ' + err.message;\n",
" console.error(err);\n",
" }\n",
" };\n",
"\n",
" stopButton.onclick = () => {\n",
" mediaRecorder.stop();\n",
" statusDiv.innerText = 'Processing recording...';\n",
" enableButtons(false, false, false);\n",
" };\n",
"\n",
" playButton.onclick = () => {\n",
" audioPlayback.play();\n",
" statusDiv.innerText = 'Playing recorded audio.';\n",
" };\n",
"\n",
"})();"
],
"metadata": {
"id": "bC3DPYO5cnIB",
"cellView": "form"
},
"execution_count": null,
"outputs": []
},
{
"cell_type": "markdown",
"metadata": {
"id": "_-4LriNOpY4X"
},
"source": [
"### Run inference on recorded audio"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"id": "fgL2JLlGpY4X"
},
"outputs": [],
"source": [
"hyp_text = pipe(\"test_audio_1.webm\")['text']\n",
"print(hyp_text)\n",
"evaluate(ref_text=transcript, hyp_text=hyp_text)"
]
},
{
"cell_type": "markdown",
"metadata": {
"id": "PHTxQttKYNpa"
},
"source": [
"## Next steps\n",
"\n",
"Explore the other [notebooks](https://github.com/google-health/medasr/blob/main/notebooks) to learn what else you can do with the model."
]
}
],
"metadata": {
"accelerator": "GPU",
"colab": {
"gpuType": "T4",
"toc_visible": true,
"private_outputs": true
},
"kernelspec": {
"display_name": "Python 3",
"name": "python3"
}
},
"nbformat": 4,
"nbformat_minor": 0
}

Xet Storage Details

Size:
118 kB
·
Xet hash:
19904425a69d07f1461912cac5e9c45967182aab28b4ce63293735a48dbe03ac

Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.