model card
Browse files
README.md
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
---
|
| 2 |
+
license: mit
|
| 3 |
+
tags:
|
| 4 |
+
- beat-tracking
|
| 5 |
+
- downbeat-tracking
|
| 6 |
+
- core-ai
|
| 7 |
+
- aimodel
|
| 8 |
+
- apple-silicon
|
| 9 |
+
- macos
|
| 10 |
+
library_name: swift-music-transcriber
|
| 11 |
+
---
|
| 12 |
+
|
| 13 |
+
# Beat This! for Core AI (`.aimodel`)
|
| 14 |
+
|
| 15 |
+
Apple Core AI conversion of **Beat This!**, the beat and downbeat tracker by Francesco Foscarin,
|
| 16 |
+
Jan Schlüter and Gerhard Widmer (CPJKU) — *Beat This! Accurate Beat Tracking Without DBN
|
| 17 |
+
Postprocessing*, ISMIR 2024 — checkpoint `final0` from
|
| 18 |
+
[github.com/CPJKU/beat_this](https://github.com/CPJKU/beat_this) (MIT, 20M parameters).
|
| 19 |
+
|
| 20 |
+
`scribe-beat-this-float32.aimodel` (79 MB) takes a log-mel spectrogram `[1, T, 128]` at 50 fps
|
| 21 |
+
(22.05 kHz audio) and returns framewise beat and downbeat logits. The front end, the 1500-frame
|
| 22 |
+
chunking with 6-frame borders, the minimal peak picker and the tempo/metre fit live in
|
| 23 |
+
[swift-music-transcriber](https://github.com/arraypress/swift-music-transcriber), which uses this
|
| 24 |
+
as the beat tracker for its MIDI grids — the same tracker MuScriptor's own pipeline uses.
|
| 25 |
+
|
| 26 |
+
## Faithfulness
|
| 27 |
+
|
| 28 |
+
One method (`Attention.forward`) was re-authored for the Core AI compiler, which rejected the
|
| 29 |
+
original einops reshape on a dynamic sequence length; RoPE became a constant matrix. The export
|
| 30 |
+
script asserts the re-authored module matches the original before exporting (max |diff| below
|
| 31 |
+
1e-3 on random input, 0 in practice). End to end, beats land within one frame of upstream on the
|
| 32 |
+
reference clips; resampling (julius versus soxr) is the only step not shared with upstream.
|
| 33 |
+
|
| 34 |
+
## Use
|
| 35 |
+
|
| 36 |
+
```sh
|
| 37 |
+
hf download arraypress/scribe-beat-this --local-dir models
|
| 38 |
+
scribe model install models/scribe-beat-this-float32.aimodel # picked up automatically as the tracker
|
| 39 |
+
```
|
| 40 |
+
|
| 41 |
+
Reproduce with `uv run Tools/export_beat_this.py` in the library repo. macOS 27, Apple silicon.
|
| 42 |
+
|
| 43 |
+
## Licence
|
| 44 |
+
|
| 45 |
+
MIT, as upstream. Please cite the ISMIR 2024 paper if you use it.
|