Spaces:
Running
Running
metadata
title: MuScriptor Studio
emoji: 🎼
colorFrom: indigo
colorTo: purple
sdk: docker
app_port: 7860
pinned: false
license: mit
short_description: Audio → MIDI via muscriptor (Kyutai × Mirelo)
MuScriptor Studio
Drop in an audio file → get a MIDI transcription back, using muscriptor (a transformer-LM audio-to-MIDI model from Kyutai × Mirelo). For busy mixes you can isolate the vocals first with demucs — voice is decoded much better on its own.
What it does
- Upload any
mp3/wav/m4a/flacfile. - Optionally tick Isolate vocals to run
demucs htdemucs --two-stems vocalsfirst (saves the voice stem, feeds that to muscriptor). - Pick Model size:
small/medium/large. Larger = better, slower. - Optionally constrain the instruments (comma-separated, e.g.
voice,acoustic_piano,accordion,drumsfor Balkan folk). - Hit Transcribe → MIDI — the
.midfile appears for download.
The MIDI has detected tempo + time signature burned into the file when
best-effort detection succeeds.
How it's built
- Python 3.11 slim base, ffmpeg + libsndfile + git
requirements.txtinstallsmuscriptorfrom its GitHub repoapp.pyis a Gradio Blocks UI that callsTranscriptionModel.load_model(...).transcribe_and_postprocess(...)- Model weights cache at
/data/hf(persistent HF cache volume)
Caveats
- First request downloads the chosen model's weights — a few hundred MB
per size. They cache to
/dataacross restarts. - CPU is fine for
small;medium/largebenefit from a GPU Space. - Beat/tempo detection is
best-effort— tracks without a steady pulse get a 120 BPM placeholder.
License
- App: MIT
- muscriptor: MIT
- demucs: MIT