Piano Transcription GGUF

GGUF conversion of ByteDance/Kong's piano_transcription_inference for CrispASR.

Transcribes piano audio to MIDI note events (88 keys, 100 fps) using a CRNN architecture.

Architecture

Input: 16 kHz mono audio
  -> STFT (n_fft=2048, hop=160) -> LogMel (229 bins, 30-8000 Hz) -> BatchNorm
  -> 4x AcousticModelCRnn8Dropout (frame / onset / offset / velocity):
       4x ConvBlock (Conv2d 3x3 + BN2d + ReLU + AvgPool2d(1,2))
       FC(1792->768) + BN1d + ReLU
       2-layer BiGRU (768->256) -> FC(512->88) -> sigmoid
  -> Onset refinement: cat(onset, sqrt(onset)*velocity) -> BiGRU -> FC -> sigmoid
  -> Frame refinement: cat(frame, onset, offset) -> BiGRU -> FC -> sigmoid
  -> Post-processing: regression binarization -> note detection -> MIDI events
Output: note events with onset/offset times, MIDI note (21-108), velocity (0-127)

Files

File Type Size Description
piano-transcription-q8_0.gguf Q8_0 66 MB 8-bit quantized (recommended)
piano-transcription-f16.gguf F16 77 MB Half-precision weights
piano-transcription-f32.gguf F32 154 MB Full-precision weights (max parity)

Usage with CrispASR

# CLI
crispasr --backend piano-transcription \
  -m piano-transcription-f16.gguf \
  -f piano_recording.wav

# Auto-detect from GGUF arch
crispasr -m piano-transcription-f16.gguf -f piano.wav

Source

  • Original: qiuqiangkong/piano_transcription_inference
  • Paper: Q. Kong et al., "High-resolution Piano Transcription with Pedals by Regressing Onsets and Offsets Times," 2021
  • License: Apache-2.0
  • Checkpoint: Zenodo 4034264 (note F1=0.9677, pedal F1=0.9186)

Converter

python models/convert-piano-transcription-to-gguf.py \
  --input model.pth \
  --output piano-transcription-f16.gguf \
  --f16
Downloads last month
17
GGUF
Model size
38.5M params
Architecture
piano-transcription
Hardware compatibility
Log In to add your hardware

8-bit

16-bit

32-bit

Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support