--- language: - en license: apache-2.0 tags: - audio - medical - cardiopulmonary - auscultation - instruction-tuning - lora - medgemma base_model: google/medgemma-4b-it datasets: - askyishan/StethoBench --- # StethoLM **StethoLM** is the first audio–language model specialized for cardiopulmonary auscultation, capable of performing instruction-driven clinical tasks across the full spectrum of auscultation analysis. It integrates a cardiopulmonary audio encoder with a medical language model backbone, trained on [StethoBench](https://huggingface.co/datasets/askyishan/StethoBench) — a comprehensive benchmark of 77,027 instruction–response pairs from 16,125 labeled recordings. This work is published in the Transactions on Machine Learning Research (TMLR). --- ## Model Description StethoLM connects a **COLA audio encoder** (EfficientNet-based, pre-trained on cardiopulmonary sounds via [CaReAQA](https://arxiv.org/abs/2505.01199)) to **MedGemma-4B-IT** via a learned MLP prefix projector. The audio is encoded into a short sequence of prefix tokens that are prepended to the text input of the language model. All components — audio encoder, prefix projector, and language model (via LoRA) — are jointly fine-tuned end-to-end. **Architecture:** - **Audio encoder:** COLA (EfficientNet backbone), pre-trained on cardiopulmonary audio, outputs 1280-dim embeddings; **fine-tuned** during StethoLM training - **Prefix projector:** 3-layer MLP mapping audio features to 4 LM prefix tokens - **Language model backbone:** [google/medgemma-4b-it](https://huggingface.co/google/medgemma-4b-it) fine-tuned with LoRA (r=8, α=32) **Training:** - **Stage 1:** Supervised fine-tuning (SFT) on StethoBench training split - **Stage 2:** Multimodal Direct Preference Optimization (mDPO) with audio degradation-based conditional preference --- ## Intended Use StethoLM is designed for **research** on AI-assisted cardiopulmonary auscultation. It supports seven clinical task categories: | Task | Description | |------|-------------| | **Classification** | Binary normal/abnormal classification | | **Identification** | Identifying specific sound types (e.g., wheezing, crackles) | | **Report** | Generating a structured auscultation report | | **Reasoning** | Explaining clinical findings | | **Differential Diagnosis (DDx)** | Listing possible diagnoses | | **Comparison** | Comparing findings across recordings | | **Location** | Identifying anatomical auscultation site | > ⚠️ **Not for clinical use.** This model is intended for research purposes only and has not been validated for clinical decision-making. --- ## How to Use This repository contains the **adapter weights** (fine-tuned audio encoder + LoRA adapters + prefix projector, ~713 MB). The base MedGemma-4B model is downloaded automatically from HuggingFace on first run. ### 1. Clone the code repository ```bash git clone https://github.com/askyishan/StethoLM cd StethoLM pip install -r requirements.txt ``` ### 2. Download the adapter checkpoint ```bash huggingface-cli download askyishan/StethoLM stetholm_adapter.pt --local-dir checkpoints/ ``` ### 3. Run inference ```bash python predict.py \ --input_jsonl data/stethobench.jsonl \ --output_jsonl predictions.jsonl \ --audio_dir /path/to/audio_files \ --checkpoint checkpoints/stetholm_adapter.pt \ --model_name google/medgemma-4b-it \ --audio_encoder cola \ --split test ``` --- ## Training Data StethoLM was trained on [StethoBench](https://huggingface.co/datasets/askyishan/StethoBench). The training split comprises recordings from 7 in-domain datasets; 4 additional datasets are held out as out-of-distribution (OOD) test sets. **In-domain training datasets:** | Dataset | Domain | |---------|--------| | CirCor DigiScope (heart-circor) | Heart | | SPRSound (spr) | Lung | | COVID-UK (coviduk) | Cough | | CoughVid (coughvid) | Cough | | ICBHI (icbhi) | Lung | | ZCHSound (heart-zch) | Heart | | KAUH (kauh) | Cardiopulmonary | **Out-of-distribution (OOD) test datasets:** | Dataset | Domain | |---------|--------| | BMD-HS | Heart | | CINC | Cardiopulmonary | | TR | Lung | | FluSense | Cough | --- ## Citation If you use StethoLM or StethoBench in your research, please cite: ```bibtex @article{stetholm2025, title = {StethoLM: An Audio–Language Model for Cardiopulmonary Auscultation}, author = {}, journal = {Transactions on Machine Learning Research}, year = {2025}, url = {https://huggingface.co/askyishan/StethoLM} } ```