Guitab logo

Guitab

Guitar audio → Guitar Pro tab

Weights of Guitab, which turns a recording of a solo guitar, a phone video is fine, into a tab for Guitar Pro, TuxGuitar or MuseScore. It is made for steel-string fingerstyle playing. You can also try it in the browser at danielemorotti.github.io/guitab, with nothing to install.

Quick start

git clone https://github.com/DanieleMorotti/guitab && cd guitab
uv venv .venv --python 3.11
uv pip install --python .venv/bin/python -r requirements.txt huggingface_hub
uv pip install --python .venv/bin/python -e . --no-deps
.venv/bin/hf download danmor/guitab --local-dir weights        # optional: the code downloads each file into weights/ when it first needs it
.venv/bin/guitab --audio my_song.mp3 --out_dir out/my_song      # -> out/my_song/my_song.gp5

Files

File What it is
guitab_e25.safetensors E25, the default (6.2M parameters, 24 MB): the best model, distilled from two larger ones.
guitab_e24.safetensors E24, the tiny model (2.9M, 11 MB): about one point behind E25, 2.3× faster than E19.
guitab_e19.safetensors E19 (24M, 91 MB): the strongest model trained on the labels alone, slightly better on clean studio audio.
tablm.safetensors The tab language model behind --music_lm (fuller chords).
beat_this_final0_int8.onnx The Beat This! beat tracker with int8 weights (21 MB), MIT licensed by its authors.
guitab_e25.onnx, guitab_e24.onnx, guitab_e19.onnx The same models for the browser version.

Architecture

Guitab architecture

  • Input: a constant-Q spectrogram of the audio (36 bins per octave), one frame every 11.6 ms, turned into a harmonic stack: six shifted copies (harmonics ½ to 5) as channels, so the partials of a pitch line up.
  • Model: a CNN (six convolution blocks, 144 → 12 frequency bins) followed by a transformer over time (E25: 4 layers, 256 wide), which gives each frame the context to decide chords, sustained notes and strings.
  • Outputs: for every frame and string, the fret (silent or 0–19) and the onset probability, plus a pitch head used only in training.
  • Tab: notes are extracted from these probabilities, optionally rescored by the tab language model, snapped to the beats found by Beat This! and written as a .gp5 file.

E25 and E24 are distilled: they learn from the labels and from the averaged predictions of two larger models, E18 (66M) and E19. The training data are GuitarSet, GAPS, a fingerstyle subset of SynthTab and a private set of real fingerstyle recordings with aligned tabs. Every experiment is documented in EXPERIMENTS.md.

Results

Test set (note onset ±50 ms) Metric E19 E25 E24
GuitarSet test, steel string string+fret F1 0.843 0.838 0.833
GuitarSet test, phone/room-degraded string+fret F1 0.640 0.685 0.655
GAPS test, classical guitar pitch F1 0.813 0.830 0.825
19 held-out real fingerstyle recordings string+fret F1 0.617 0.612 0.601
EGDB electric guitar, clean (never seen in training) string+fret F1 0.712 0.721 0.691

These numbers come from a personal project, not a benchmark study: each model was trained once, settings were chosen on validation sets only, and the GuitarSet protocol is the project's own, so they are not directly comparable with published results.

Limitations

The output is a first draft to correct by ear. Dense chords, quiet inner voices and reverberant phone recordings are the hardest cases, and the string choice is less reliable than the pitch. Only standard tuning is supported, with an optional capo.

License

The weights are released under CC BY-NC-SA 4.0 (non-commercial), because they are trained on GAPS (CC BY-NC-SA 4.0) and SynthTab (CC BY-NC 4.0). The code is MIT licensed. beat_this_final0_int8.onnx is a converted copy of Beat This! (Foscarin et al., ISMIR 2024) and keeps its MIT licence, in LICENSE-beat-this.txt. Credits for the datasets and the ideas Guitab builds on are in the GitHub README.

@misc{guitab,
  author = {Morotti, Daniele},
  title  = {Guitab: guitar audio to Guitar Pro tab},
  year   = {2026},
  url    = {https://github.com/DanieleMorotti/guitab}
}
Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Collection including danmor/guitab