PPG-LM: A Photoplethysmography-Language Model with Multi-Level Clinical Alignment
Organizations: Emory University · University of California, Los Angeles · Google · Stanford University · University of Southern California · University of Wisconsin–Madison
Abstract
Photoplethysmography (PPG) is widely recorded by clinical monitors and consumer wearables, providing a scalable source of continuous physiological information. These recordings offer an opportunity for physiological assessment at scale, but realizing this potential requires models to learn from both signal-derived physiological supervision and broader clinical context captured in electronic health records (EHRs). This involves aligning information spanning local observations, care events, and entire visits with PPG representations at corresponding temporal scales. However, existing PPG foundation models primarily rely on task-specific prediction heads, while the medical knowledge of large language models does not necessarily translate into waveform understanding. To bridge this gap, we introduce PPG-LM, the first PPG-language model family to learn physiological representations from both signal-derived supervision and broader clinical context captured in EHRs. To construct clinically grounded captions, we develop an automatic captioning pipeline that generates segment-, event-, and visit-level descriptions from signal measurements and structured EHR records. We then learn from these pairs through a two-stage framework that first establishes segment-language correspondence through contrastive learning and waveform-conditioned captioning, then extends alignment to events and visits through time-aware aggregation and temporal statement matching. Pretrained on approximately 73k hours of PPG, PPG-LM supports language-based recognition, cross-modal retrieval, and segment captioning. Experiments on MC-MED, MIMIC-III, and VitalDB show improved retrieval and caption factuality over language-model baselines and gains over PPG and time-series foundation models on multiple clinical prediction tasks.
Figures & tables
| Study | Signal | Text Source | Text scope | |||
|---|---|---|---|---|---|---|
| Raw | Context | Segment | Event | Visit | ||
| SensorLM ( Zhang et al., 2026a ) | ✗ | 1 day | Sensor | ✓ | ✗ | ✗ |
| NormWear ( Luo et al., 2024 ) | ✓ | 6 s | Labels | ✓ | ✗ | ✗ |
| CSFM ( Gu et al., 2026 ) | ✓ | 10 s | Labels | ✓ | ✗ | ✗ |
| PulseLM ( Pham et al., 2026 ) | ✓ | 10 s | Labels | ✓ | ✗ | ✗ |
| CAP ( He et al., 2026 ) | ✓ | 5 min | EHR | ✓ | ✗ | ✗ |
| Model | MC-MED | MIMIC-III | VitalDB | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Rhythm | Qual. | Perf. | Morph. | RR | Rhythm | Qual. | RR | Rhythm | Qual. | RR | |
| GPT-5.6-luna | 0.322 | 0.314 | 0.174 | 0.259 | 0.332 | 0.376 | 0.291 | 0.266 | 0.317 | 0.162 | 0.313 |
| GPT-6-luna | 0.319 | 0.361 | 0.193 | 0.263 | 0.259 | 0.357 | 0.315 | 0.253 | 0.326 | 0.175 | 0.307 |
| GPT-6-sol | 0.560 | 0.332 | 0.250 | 0.354 | 0.390 | 0.572 | 0.295 | 0.380 | 0.375 | 0.128 | 0.326 |
| Opus 5.5 | 0.508 | 0.436 | 0.521 | 0.284 | 0.380 | 0.598 | 0.343 | 0.397 | 0.330 | 0.228 | 0.330 |
| PulseLM | 0.319 | 0.199 | 0.188 | 0.195 | 0.405 | 0.242 | 0.297 | 0.354 | 0.181 | 0.326 | 0.165 |
| Model | MC-MED | MIMIC-III | VitalDB | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| HR | RR | SBP | MAP | Fact | HR | RR | Fact | HR | RR | Fact | |
| GPT-5.6-luna | 10.06 | 3.95 | 21.73 | 15.12 | 0.499 | 9.42 | 5.15 | 0.456 | 8.49 | 2.99 | 0.486 |
| GPT-6-luna | 11.24 | 3.93 | 22.24 | 14.51 | 0.559 | 11.52 | 4.71 | 0.533 | 8.86 | 2.34 | 0.579 |
| GPT-6-sol | 4.58 | 3.85 | 21.56 | 14.48 | 0.659 | 5.21 | 5.10 | 0.660 | 5.51 | 2.26 | 0.619 |
| Opus 5.5 | 4.67 | 3.32 | 19.80 | 14.26 | 0.696 | 4.37 | 3.99 | 0.647 | 4.88 | 2.44 | 0.642 |
| PulseLM | 29.20 | 4.21 | 20.44 | 15.47 | 0.356 | 29.44 | 4.59 | 0.440 | 37.12 | 7.03 | 0.481 |
| Model | MC-MED | MIMIC-III | VitalDB500 | |||
|---|---|---|---|---|---|---|
| S2T | T2S | S2T | T2S | S2T | T2S | |
| GPT-5.6-luna | 0.105 | — | 0.090 | — | 0.075 | — |
| GPT-6-luna | 0.110 | — | 0.085 | — | 0.085 | — |
| GPT-6-sol | 0.240 | — | 0.260 | — | 0.200 | — |
| Opus 5.5 | 0.190 | — | 0.275 | — | 0.230 | — |
| Qwen3-4B (SFT) | 0.385 | 0.600 | 0.160 | 0.185 | 0.125 | 0.180 |
| Model | MC-MED | VitalDB | |||||||
|---|---|---|---|---|---|---|---|---|---|
| Rate ctrl. | Vasopress. | Vasodil. | IV fluid | Diuretic | Opioid | Sedative | Vasopress. | Vasodil. | |
| GPT-5.6-luna | 0.674 | 0.707 | 0.553 | 0.587 | 0.499 | 0.567 | 0.641 | 0.578 | 0.614 |
| GPT-6-luna | 0.626 | 0.715 | 0.648 | 0.530 | 0.478 | 0.600 | 0.594 | 0.480 | 0.693 |
| GPT-6-sol | 0.651 | 0.699 | 0.648 | 0.536 | 0.467 | 0.663 | 0.679 | 0.480 | 0.585 |
| Opus 5.5 | 0.595 | 0.707 | 0.636 | 0.633 | 0.460 | 0.722 | 0.766 | 0.571 | 0.634 |
| PulseLM | 0.591 | 0.589 | 0.458 | 0.493 | 0.553 | 0.591 | 0.613 | 0.602 | 0.480 |
| Model | MC-MED | VitalDB | ||||||
|---|---|---|---|---|---|---|---|---|
| CCB | AntiHTN | AntiPL | AntiDM | HTN | DM | Anemia | eGFR | |
| GPT-5.6-luna | 0.468 | 0.509 | 0.477 | 0.520 | 0.500 | 0.465 | 0.487 | 0.500 |
| GPT-6-luna | 0.497 | 0.484 | 0.421 | 0.464 | 0.475 | 0.507 | 0.495 | 0.498 |
| GPT-6-sol | 0.500 | 0.500 | 0.505 | 0.507 | 0.523 | 0.502 | 0.523 | 0.500 |
| Opus 5.5 | 0.500 | 0.443 | 0.468 | 0.507 | 0.519 | 0.512 | 0.484 | 0.500 |
| PulseLM | 0.500 | 0.500 | 0.500 | 0.500 | 0.500 | 0.500 | 0.500 | 0.500 |
| Task | Foundation models | PPG-LM | ||||||
| PaPaGei-S | PulsePPG | AnyPPG | SIGMA-PPG | MOMENT-L | Chronos-2 | Stage 1 | Stage 2 | |
| MC-MED (ED) — AUROC | ||||||||
| Sex | 0.692 0.006 | 0.719 0.007 | 0.783 0.008 | 0.712 0.008 | 0.724 0.005 | 0.739 0.008 | 0.813 0.006 | 0.856 0.005 |
| ED admission | 0.673 0.011 | 0.681 0.009 | 0.750 0.013 | 0.679 0.011 | 0.700 0.011 | 0.728 0.013 | 0.765 0.012 | 0.787 0.010 |
| Atrial fibrillation | 0.742 0.012 | 0.752 0.013 | 0.845 0.010 | 0.755 0.013 | 0.768 0.014 | 0.815 0.012 | 0.857 0.010 | 0.870 0.011 |
| MC-MED (ED) — | ||||||||
| Variant | Temporal acc. | Event AUROC | Segment R@1 |
|---|---|---|---|
| w/o temporal loss | 0.511 | 0.698 | 0.446 |
| w/o signed offsets | 0.923 | 0.617 | 0.445 |
| w/o segment loss | 0.922 | 0.697 | 0.202 |
| w/o distillation | 0.920 | 0.700 | 0.445 |
| w/o seg. loss + distill. | 0.919 | 0.699 | 0.015 |
| PPG-LM | 0.925 | 0.707 | 0.447 |
Appendix figures & tables17 assets
Supplementary material from the paper’s appendix.
Appendix
| Attribute | Evidence and description |
|---|---|
| Pulse rate | Median pulse-interval rate, expressed as a value and a category. |
| Rate trend | Instantaneous rate slope: falling, stable, or rising. |
| Rhythm | ECG R–R interval variability, expressed as a regularity category. |
| Perfusion | Pulsatile amplitude relative to baseline: weak, moderate, or strong. |
| Signal quality | NeuroKit2 quality score: clean, fair, or noisy but usable. |
| Augmentation | The pyPPG augmentation index: low, moderate, or high. |
| Component | Evidence and description |
|---|---|
| Demographics | Recorded age and sex. |
| Presentation | Arrival mode, Emergency Severity Index, and normalized chief complaints. |
| Triage measurements | Available heart rate, respiratory rate, oxygen saturation, blood pressure, and temperature. |
| Clinical history | Selected prior ICD-10 diagnoses, expressed as clinical descriptions. |
| Home medications | Recorded active home-medication classes. |
| Component | Evidence and description |
|---|---|
| Event anchor | A recorded administration timestamp for an eligible medication class. |
| Pre-event context | The latest available PPG windows preceding the administration. |
| Post-event context | PPG windows sampled evenly across the period following administration. |
| Caption target | The medication class, with individual drug names, doses, and exact latencies omitted. |
| Control view | The same sampling rule around a within-visit anchor free of nearby eligible administrations. |
| Operator | Evidence and description |
|---|---|
| Occurrence | Whether tachycardia or irregularity appears among known observations. |
| Proportion | The affected share of known windows, described as brief, part, or most. |
| Contiguous duration | Consecutive affected windows, grouped into short, intermediate, or long runs. |
| Rate ordering | Consecutive groups of observed rates, describing rising, falling, stable, rise-then-fall, or fall-then-rise patterns. |
| Split | Patients | Visits | 30-second windows |
|---|---|---|---|
| Training | 29,177 | 42,856 | 8,842,271 |
| Validation | 3,641 | 5,421 | 1,183,278 |
| Test | 3,612 | 5,196 | 1,099,395 |
| Total | 36,430 | 53,473 | 11,124,944 |
| Task | Reference and clinical interpretation |
|---|---|
| Rhythm | Regular, slightly irregular, or markedly irregular according to synchronized ECG R–R interval CV ( , , or ). Measures beat-timing regularity, without assigning a specific arrhythmia. |
| Quality (Qual.) | Clean, fair, or noisy according to the annotation quality score and usability gate. Describes waveform reliability and artifact burden. |
| Perfusion (Perf.) | Weak, moderate, or strong pulsatile amplitude relative to the signal baseline, using the waveform-derived AC/DC index. A peripheral perfusion surrogate, not a direct blood-flow measurement. |
| Morphology (Morph.) | Low, moderate, or high augmentation from the pyPPG augmentation index. Describes pulse-wave shape; it does not establish a vascular disease diagnosis. |
| HR class | Five pulse-rate bins: , 50–59, 60–100, 101–120, and bpm, spanning markedly slow to fast rates. These are benchmark annotation categories. |
| HR estimation | Heart rate in beats/min, evaluated against synchronized ECG. This independent reference differs from the PPG-derived pulse rate used to construct training captions. |
| Task | Data | Recorded target and clinical meaning |
|---|---|---|
| Administration events: medication class versus control | ||
| Rate control | M | Administration of a rate-controlling medication, used to slow heart rate. |
| Vasopressor | M, V | Administration of an agent used to increase arterial blood pressure. |
| Vasodilator | M, V | Administration of a medication that dilates blood vessels. |
| IV fluid | M | Intravenous fluid administration, representing fluid delivery to the circulation. |
| Diuretic | M | Administration of medication that promotes renal salt and water excretion. |
| Task | Data | Definition and clinical interpretation |
| Shared demographic target | ||
| Sex | M, I, V | Recorded patient sex. |
| MC-MED: ED disposition and prior clinical history | ||
| ED admission | M | Hospital admission following the ED encounter, versus no admission. |
| Atrial fibrillation | M | Prior atrial fibrillation: disorganized atrial electrical activity associated with an irregular rhythm. The label records history, not necessarily AF in the observed window. |
| Heart failure | M | Prior heart failure, a clinical syndrome involving impaired cardiac pumping and/or filling. |
| Task | Data | Measurement and clinical interpretation |
| Demographics and body size | ||
| Age | M, I, V | Patient age in years. MIMIC-III values above 120 are treated as missing because of de-identification shifts. |
| BMI | V | Body mass index: weight divided by squared height (kg/m 2 ), a measure of body size relative to height. |
| Kidney function, hematology, and blood chemistry | ||
| eGFR | M | Estimated glomerular filtration rate (mL/min/1.73 m 2 ), reflecting kidney filtration function. This target is continuous. |
| Hemoglobin (Hb) | M, I | Blood concentration of the oxygen-carrying protein in red blood cells. |
| Rule-based evaluation | LLM-judge evaluation | |||
| Model / caption source | Fact acc. | Coverage | Factuality | Unsupported |
| [0pt][0pt] MC-MED (ED) | ||||
| GPT-5.6-luna | 0.499 | 0.99 | 2.63 | 6.54 |
| PPG-LM : direct generation | 0.923 | 1.00 | 3.64 | 2.94 |
| PPG-LM : nearest-caption retrieval | 0.877 | 1.00 | 3.83 | 1.51 |
| [0pt][0pt] MIMIC-III (ICU) | ||||
| (a) Triage-context recognition | ||||||||
|---|---|---|---|---|---|---|---|---|
| Model | ESI | Arrival | HR | SpO 2 | RR | Temp. | BP | CC |
| GPT-5.6-luna | 0.501 | 0.445 | 0.463 | 0.497 | 0.506 | 0.500 | 0.269 | 0.134 |
| GPT-6-luna | 0.500 | 0.498 | 0.486 | 0.500 | 0.500 | 0.500 | 0.238 | 0.128 |
| GPT-6-sol | 0.536 | 0.509 | 0.736 | 0.499 | 0.506 | 0.512 | 0.265 | 0.126 |
| Opus 5.5 | 0.501 | 0.504 | 0.528 | 0.500 | 0.500 | 0.500 | 0.259 | 0.100 |
| PulseLM | 0.483 | 0.500 | 0.656 | 0.499 | 0.500 | 0.498 | 0.250 | 0.113 |
| Foundation models | PPG-LM | |||||||
| Task | PaPaGei-S | PulsePPG | AnyPPG | SIGMA-PPG | MOMENT-L | Chronos-2 | Stage 1 | Stage 2 |
| MC-MED (ED) — AUROC | ||||||||
| Sex | 0.692 0.006 | 0.719 0.007 | 0.783 0.008 | 0.712 0.008 | 0.724 0.005 | 0.739 0.008 | 0.813 0.006 | 0.856 0.005 |
| ED admission | 0.673 0.011 | 0.681 0.009 | 0.750 0.013 | 0.679 0.011 | 0.700 0.011 | 0.728 0.013 | 0.765 0.012 | 0.787 0.010 |
| Atrial fibrillation | 0.742 0.012 | 0.752 0.013 | 0.845 0.010 | 0.755 0.013 | 0.768 0.014 | 0.815 0.012 | 0.857 0.010 | 0.870 0.011 |
| Heart failure | 0.708 0.018 | 0.723 0.015 | 0.825 0.013 | 0.711 0.017 | 0.731 0.015 | 0.781 0.012 | 0.836 0.010 | 0.860 0.009 |
| Task | ||||
| [0pt][0pt] MC-MED (ED) — Macro-F1 | ||||
| Rhythm | 0.488 0.051 | 0.537 0.019 | 0.567 0.037 | 0.597 0.022 |
| HR class | 0.755 0.023 | 0.831 0.025 | 0.898 0.018 | 0.921 0.003 |
| Sex | 0.568 0.042 | 0.645 0.054 | 0.696 0.041 | 0.710 0.026 |
| ED admission | 0.563 0.014 | 0.558 0.026 | 0.583 0.018 | 0.617 0.008 |
| [0pt][0pt] MIMIC-III (ICU) — Macro-F1 | ||||
| Variant | Rhythm | Quality | R@1 |
|---|---|---|---|
| [0pt][0pt] Stage 1 | |||
| CLIP | 0.650 | 0.505 | 0.790 |
| SigLIP | 0.620 | 0.400 | 0.815 |
| CoCa | 0.640 | 0.614 | 0.783 |
| [0pt][0pt] Stage 2 | |||
| CLIP | 0.534 | 0.580 | 0.797 |
| MC-MED | MIMIC-III | VitalDB | |||||||
|---|---|---|---|---|---|---|---|---|---|
| Prompt bank | Rhythm | HR class | Quality | Rhythm | HR class | Quality | Rhythm | HR class | Quality |
| Template | 0.651 | 0.355 | 0.673 | 0.670 | 0.337 | 0.786 | 0.389 | 0.327 | 0.583 |
| Combined | 0.629 | 0.393 | 0.592 | 0.642 | 0.350 | 0.677 | 0.384 | 0.282 | 0.515 |
| Target | Template |
|---|---|
| Segment rate | The pulse rate is about {val} beats per minute, {level}. |
| Segment rhythm | The cardiac rhythm is {level}. |
| Segment quality | The PPG trace is {level}. |
| Poor-quality segment | This segment’s pulse waveform is too noisy to characterize reliably. |
| Medication event | During this period the patient was given {desc}. |
| Control interval | This period of monitoring contains no medication administration. |
| Concept | Prompt |
|---|---|
| Pulse rate | |
| Marked bradycardia | The measured pulse rate is markedly bradycardic. |
| Bradycardia | The measured pulse rate is bradycardic. |
| Normal rate | The measured pulse rate is within the normal range. |
| Mild tachycardia | The measured pulse rate is mildly tachycardic. |
| Tachycardia | The measured pulse rate is tachycardic. |