All tutorials
AITutorial

Transcribe Any Music to MIDI Locally: MuScriptor

July 2026·5 min read

Turn any audio into per-instrument MIDI locally with MuScriptor — a decoder-only transformer trained on 170K songs. 1-click Pinokio or native Python, CPU-capable across all model sizes.

MuScriptor local audio → MIDI pipeline
CPU-capable · optional GPU · no cloud required at runtime
Input
Audio file
WAV / MP3 / stems
Runtime
Pinokio 1-click
Zero-terminal launcher
Native Python / FastAPI
CLI + localhost:8000
MuScriptor model
Small 103M · Medium 307M · Large 1.4B
Output
Per-instrument MIDI
Streaming note events · DAW-ready
Two install paths
01
Pinokio
Search · Install · Start
02
or native
HF auth · uvx serve
03
Transcribe
Drop audio → MIDI

Overview

  • Model: MuScriptor by Kyutai + Mirelo AI — decoder-only transformer, trained on 170K songs, multi-instrument.
  • Variants: Small (103M, ~1GB RAM), Medium (307M), Large (1.4B). CPU-capable on all tiers.
  • Output: per-instrument MIDI with streaming note events, importable into any DAW.
  • Launcher: 1-click Pinokio app (zero terminal) or native Python CLI with a FastAPI server.

Model Comparison

VariantParamsRAMSpeedBest for
Small103M~1 GBFastestCPU-only, laptops
Medium307M~2 GBBalancedDefault choice
Large1.4B~8 GBSlowMax accuracy, GPU

Method 1: Pinokio 1-Click (Easiest)

  1. Install Pinokio from pinokio.co (Mac/Win/Linux).
  2. Search "MuScriptor" in the app store, click Install.
  3. Click Start Small/Medium/Large — downloads the model, starts the server, opens the Web UI.
  4. Drop an audio file → optionally select instruments → download MIDI or WAV.

Pinokio handles the Python env, dependencies, web-client build, and model caching. No terminal needed, and no Hugging Face login required (it uses ungated mirrors).

Method 2: Native Python (Full Control)

Authenticate with Hugging Face

Accept the license at huggingface.co/MuScriptor, then log in.

uvx hf auth login

Launch the Web UI

uvx muscriptor serve   # opens browser at localhost:8000

Transcribe from the CLI

uvx muscriptor transcribe audio.wav --model medium

Automate with the Python API

model.transcribe_to_midi("audio.wav")

HTTP API Endpoints

EndpointMethodDescription
/healthGETServer status check
/instrumentsGETList valid instrument names
/transcribePOSTUpload audio, stream SSE events → MIDI
/auralizePOSTRender MIDI → WAV (FluidSynth)

More hands-on setupsCurated local AI, agents, and Web3 operator tutorials from Delta V.

Browse tutorials →

Want high-signal intel like this in your inbox?

Get in touch