VocalParse is a unified singing voice transcription (SVT) model built upon a Large Audio Language Model (LALM). Fine-tuned from
Qwen3-ASR-1.7B, it transcribes singing audio into a structured autoregressive token sequence that jointly encodes lyrics, pitch, note values, and global tempo (BPM).
1Singing Audio (16kHz) → Whisper Encoder → Qwen LLM Decoder → AST Token Sequence
2
3感 <P_68> <NOTE_4> 受 <P_60> <NOTE_8> 到 <P_65> <NOTE_8> ... <BPM_89>
1uv venv --python 3.10
2source .venv/bin/activate
3uv pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu124
4uv pip install git+https://github.com/pymaster17/VocalParse.git
1from vocalparse import transcribe_one
2
3text = transcribe_one(
4 audio="path/to/song.wav",
5 checkpoint="pymaster/VocalParse",
6)
7print(text)
8# Example output: 感 <P_68> <NOTE_4> 受 <P_60> <NOTE_8> ... <BPM_89>
-
Standard interleaved format (bpm_position=last):
感 <P_68> <NOTE_4> 受 <P_60> <NOTE_8> 到 <P_65> <NOTE_8> ... <BPM_89>
-
CoT format produced during generation (asr_cot=true): the model first outputs plain lyrics, then the full interleaved score, separated by <|file_sep|>:
感受到<|file_sep|>感 <P_68> <NOTE_4> 受 <P_60> <NOTE_8> 到 <P_65> <NOTE_8> ... <BPM_89>
Metrics are computed with two-stage Needleman-Wunsch alignment: word-level alignment for lyrics, then pair-level alignment inside each matched word for pitch and note.
1@article{vocalparse2026,
2 title = {VocalParse: Towards Unified and Scalable Singing Voice Transcription with Large Audio Language Models},
3 author = {Yukun Chen and Tianrui Wang and Zhaoxi Mu and Xinyu Yang and EngSiong Chng},
4 journal = {arXiv preprint arXiv:2605.04613},
5 year = {2026},
6 url = {http://arxiv.org/abs/2605.04613}
7}
This model is licensed under Apache 2.0.