pith:FM3JGBCP
A Distribution Matching Approach to Neural Piano Transcription with Optimal Transport
Automatic piano transcription improves when framed as optimal transport between note distributions rather than frame-by-frame classification.
arxiv:2605.17405 v1 · 2026-05-17 · cs.SD · cs.MM
Add to your LaTeX paper
\usepackage{pith}
\pithnumber{FM3JGBCPRYDFHK5RXYYSCVSC7N}
Prints a linked badge after your title and injects PDF metadata. Compiles on arXiv. Learn more · Embed verified badge
Record completeness
Claims
This paper describes a novel paradigm that formalizes automatic piano transcription (APT) as an optimal transport (OT) problem, not as a frame-level multi-label binary classification problem. Our method learns to minimize the cost of transporting a predicted distribution of note events to the ground-truth distribution over time and frequency. The OT loss can thus accommodate temporal misalignment, leading to perceptually relevant optimization.
That minimizing optimal transport cost between predicted and ground-truth note distributions produces perceptually superior transcriptions and that a harmonics-aware attention mechanism in the CRNN sufficiently captures the necessary spectro-temporal dependencies in piano signals.
Introduces an optimal transport loss for neural piano transcription to accommodate temporal misalignments, achieving state-of-the-art onset detection on the MAESTRO dataset via a harmonics-aware CRNN.
References
Formal links
Receipt and verification
| First computed | 2026-05-20T00:03:56.794282Z |
|---|---|
| Builder | pith-number-builder-2026-05-17-v1 |
| Signature | Pith Ed25519
(pith-v1-2026-05) · public key |
| Schema | pith-number/v1.0 |
Canonical hash
2b3693044f8e0653abb1be31215642fb7879cee28a835f87bda684bb54054b8d
Aliases
· · · · ·Agent API
Verify this Pith Number yourself
curl -sH 'Accept: application/ld+json' https://pith.science/pith/FM3JGBCPRYDFHK5RXYYSCVSC7N \
| jq -c '.canonical_record' \
| python3 -c "import sys,json,hashlib; b=json.dumps(json.loads(sys.stdin.read()), sort_keys=True, separators=(',',':'), ensure_ascii=False).encode(); print(hashlib.sha256(b).hexdigest())"
# expect: 2b3693044f8e0653abb1be31215642fb7879cee28a835f87bda684bb54054b8d
Canonical record JSON
{
"metadata": {
"abstract_canon_sha256": "2db5573339328817fa5db9d2ad28b4d5de1c29c0bd62ba2de2ac333cf9bad8a7",
"cross_cats_sorted": [
"cs.MM"
],
"license": "http://arxiv.org/licenses/nonexclusive-distrib/1.0/",
"primary_cat": "cs.SD",
"submitted_at": "2026-05-17T12:01:44Z",
"title_canon_sha256": "d9359b07a5d1c4f081469e2c2141444dcd67a9adcf8a0e823f42dd16fef707b5"
},
"schema_version": "1.0",
"source": {
"id": "2605.17405",
"kind": "arxiv",
"version": 1
}
}