@lazyingart/musia
v0.1.1
Published
Local-first AI song localization studio: CLI, webapp, stems, lyrics, beats, chords, and creative music workflows.
Maintainers
Readme
English · العربية · Español · Français · 日本語 · 한국어 · Tiếng Việt · 中文 (简体) · 中文(繁體) · Deutsch · Русский
Musia
AI song localization: extract the human voice, stems, lyrics, beats, and chords from a song, then prepare the path toward singable multilingual re-singing.
Musia is a local-first research prototype for AI music localization. The current MVP takes an input song, separates it into the four Demucs stems bass, drums, vocals, and other, creates an instrumental mix, aliases the vocal as human_sound, transcribes lyrics, estimates beats, and produces Chordify-style chord segments.

| Donate | PayPal | Stripe |
| --- | --- | --- |
| |
|
|
What It Produces
input song
-> source/input.wav
-> stems/bass.wav
-> stems/drums.wav
-> stems/vocals.wav
-> stems/other.wav
-> stems/instrumental.wav
-> stems/human_sound.wav
-> analysis/lyrics.json + lyrics.txt
-> analysis/beats.json + beats.csv
-> analysis/chords.json + chords.csv
-> manifest.json + REPORT.mdinstrumental.wav is mixed from bass + drums + other. human_sound.wav is the isolated vocals.wav stem.
Current Contents
| Path | Purpose |
| --- | --- |
| musia/ | Local Python analysis toolkit. |
| package.json | npm package metadata for the musia CLI/webapp wrapper. |
| bin/musia.js | npm executable that launches Musia Studio and Python workflows. |
| website/ | Static Fun Lazying Art media website with a synced player, covers, lyrics/subtitles, pinyin, furigana, chords, and share metadata. |
| SETUP_AND_TEST.md | Fresh-clone setup, smoke test, matrix test, and script map. |
| scripts/setup_and_smoke_test.sh | One-command core setup plus open-song smoke test. |
| scripts/bootstrap_musia.sh | Creates the conda environment and installs the local stack. |
| scripts/download_open_songs.py | Downloads free/open test songs. |
| scripts/run_pipeline.py | Runs separation, transcription, beats, chords, and report generation. |
| scripts/test_open_songs_matrix.sh | Runs the EN/ZH/JA open-song analysis matrix. |
| scripts/install_research_repos.sh | Shallow-clones optional research repositories into third_party/. |
| scripts/download_quality_backends.sh | Downloads high-quality research backends and model weights into ignored local folders. |
| scripts/install_quality_envs.sh | Creates isolated repo-local conda/uv environments for large singing and music models. |
| scripts/run_soulx_env.sh | Runs SoulX-Singer with the cloned repo on PYTHONPATH. |
| scripts/run_soulx_svs.sh | Runs SoulX-Singer SVS inference with prompt and target metadata. |
| scripts/soulx_rewrite_metadata.py | Rewrites SoulX metadata with Mandarin target lyrics while preserving note/F0 timing. |
| scripts/mix_vocal_with_instrumental.sh | Mixes a generated vocal with an instrumental stem and loudness-normalizes it. |
| scripts/run_localization_performance_pipeline.sh | Dedicated EN/ZH localization performance demo using DeepSeek or OpenAI for lyric/check packages. |
| scripts/musia_create.py | Creative CLI for idea, lyrics, chords, notation, reference audio, and localization project planning. |
| scripts/musia_song_workbench.py | Reusable song generation, correction, review, and LALACHAN handoff workbench. |
| scripts/musia_studio_web.py | Local Musia Studio web app. |
| scripts/start_musia_studio_tmux.sh | Starts Musia Studio in tmux. |
| scripts/musia_quality_check.py | Checks generated audio duration, levels, ASR, and lyric overlap. |
| scripts/validate_fun_media_site.py | Validates the fun.lazying.media.v1 website catalog, manifests, assets, and language tracks. |
| scripts/run_moss_music_env.sh | Runs MOSS-Music with the required FFmpeg, TorchCodec, and CUDA library paths. |
| scripts/musia_lyricfit_openai.py | Optional OpenAI-powered lyric adaptation helper. |
| references/ | Architecture, deep research, and local setup notes. |
| TODO.md | Build checklist and next engineering steps. |
Quick Start
Fresh clone, setup, and smoke test:
git clone https://github.com/lachlanchen/Musia.git
cd Musia
bash scripts/setup_and_smoke_test.shManual core commands:
bash scripts/bootstrap_musia.sh
PYTHONNOUSERSITE=1 conda run -n musia python scripts/download_open_songs.py --id danny-boy-1917
PYTHONNOUSERSITE=1 conda run -n musia python scripts/run_pipeline.py data/open_songs/danny-boy-1917/original.ogg --run-name smoke-danny --max-duration 45 --asr-model tinyResults are written to:
data/runs/<run-name>/Generated audio, downloaded songs, model weights, and third-party clones are ignored by git.
For the full setup/test guide, see SETUP_AND_TEST.md.
Fun Lazying Art Website
The public media site lives in website/ and is intended for songs, localized songs, MVs, short films, covers, synced lyrics, subtitles, chords, stems, and shareable media pages.
The default catalog item is Small Under the Red Sky, a Mars desert full-song demo with separate English, Mandarin, and Japanese renders. The catalog also includes Rain Day Full Song; both demos use per-vocal trilingual lyric sets when the generated renders do not sing identical lines.
npm run website:validate
python3 -m http.server 8778 --directory websiteLocal URL:
http://127.0.0.1:8778/Public URL after GitHub Pages deploy:
https://fun.lazying.artThe reusable data protocol is documented in references/musia-website-json-format.md.
The full song-generation and website-publishing workflow is documented in references/musia-song-generation-and-website-runbook.md.
Song Workbench
For repeatable song generation and review:
musia song init --title "My Song" --vocal-language ja --lyrics-file lyrics.txt
data/creative_projects/<song-id>/commands.sh generate
data/creative_projects/<song-id>/commands.sh review
musia song handoff --project-dir data/creative_projects/<song-id> --audio data/creative_projects/<song-id>/final/selected.mp3See references/musia-song-workbench.md and references/lalachan-song-first-video-workflow.md.
npm CLI And Webapp
Musia also ships as an npm package wrapper around the local Python/conda engine.
From this repo:
npm install
npm link
musia doctor
musia studio --tmuxFrom npm:
npm install -g @lazyingart/musia
musia doctorOr without linking:
npm run check
node bin/musia.js studio --tmuxUseful npm/CLI commands:
musia setup
musia models
musia plan --title "My Song" --idea "A cinematic song about..." --provider deepseek
musia soulx-verse --title "Rain Day" --idea "A rainy bilingual musical short film verse"
musia new-session --title "My Song" --cwd ./my-song-folder
musia chat --cwd ./my-song-folder --mode chat "What should I do next?"
musia chat --cwd ./my-song-folder --mode worker "Analyze this project and register artifacts."
musia resume-session <session-id> --cwd ./another-folder
musia pipeline data/open_songs/danny-boy-1917/original.ogg --run-name npm-smoke --max-duration 45
npm run pack:dry-runThe npm CLI uses conda run -n musia python ... by default. Override with:
MUSIA_CONDA_ENV=musia
MUSIA_PYTHON=/path/to/python
MUSIA_NO_CONDA=1Run the dedicated localization performance demo after the smoke/matrix artifacts exist:
MUSIA_LYRIC_PROVIDER=deepseek \
DEEPSEEK_MODEL=deepseek-reasoner \
scripts/run_localization_performance_pipeline.shIf your OpenAI account has access to GPT-5.5-compatible chat completions, the same demo can be run with:
scripts/run_localization_performance_pipeline.sh --provider openai --model gpt-5.5Create original music projects from ideas, lyrics, chords, notation, or reference recordings:
PYTHONNOUSERSITE=1 conda run -n musia python scripts/musia_create.py plan \
--title "My Song" \
--idea "A hopeful acoustic song about..." \
--lyrics-file lyrics.txt \
--chords "C G Am F" \
--provider deepseekStart the local web app:
scripts/start_musia_studio_tmux.shMusia Studio and the CLI share sessions. A working folder gets a .musia/sessions/<session-id>/session.json pointer, while messages and jobs stay in data/studio/, so you can create or resume music sessions from either web or CLI.
See references/musia-creative-studio.md.
For the new control-level model and the SoulX vocal-only workflow, see references/musia-control-and-soulx-workflow.md.
For original short SoulX verse generation, see references/soulx-verse-tool.md and references/lalachan-musia-musical-short-film-handoff.md.
For the full installed capability map and practical workflows, see references/musia-full-capability-guide.md.
Local Validation
The local smoke test on an open Wikimedia Commons recording passed on a machine with an NVIDIA RTX 4090 D:
PYTHONNOUSERSITE=1 conda run -n musia python scripts/run_pipeline.py data/open_songs/danny-boy-1917/original.ogg --run-name smoke-danny-120-fixed --max-duration 120 --asr-model base.en --language en --demucs-device cudaRecorded result:
- Four stems:
bass,drums,vocals,other - Additional audio:
instrumental,human_sound - Tempo estimate:
129.20 BPM - Beat count:
257 - Chord segments:
132 - Lyrics status:
ok
See references/local-setup-and-test-report.md.
A broader open-song matrix and first-verse Chinese localization test were run on 2026-06-28:
MAX_DURATION=60 ASR_MODEL=small DEMUCS_DEVICE=cuda scripts/test_open_songs_matrix.shSee references/open-song-test-report-2026-06-28.md for exact input songs, output paths, SoulX/YingMusic attempts, and the current quality gate results.
The dedicated DeepSeek/OpenAI localization performance script was also run on 2026-06-28. See references/localization-performance-demo-2026-06-28.md.
High-Quality Backends
The local machine has staged heavier research backends for better vocal quality and music understanding:
- Strict song localization: SoulX-Singer and YingMusic-Singer-Plus.
- Full-song alternatives: ACE-Step 1.5, YuE, DiffRhythm, SongGen, HeartMuLa.
- Music understanding and QA: MOSS-Music.
See references/high-quality-vocal-backends.md and references/local-quality-backend-install-status.md.
For the practical control modes, including vocal-only SoulX generation, melody/旋律 generation, full production, controlled material-based generation, and licensed localization, see references/musia-control-and-soulx-workflow.md.
For the local SoulX vocal-only outputs that sounded usable, see references/soulx-good-vocal-runs-2026-06-28.md.
For the broader EN/ZH/JP model map, including Chinese-company repos and Microsoft Muzic, see references/en-zh-jp-music-model-repos.md.
Architecture Direction
Musia is not only translation plus TTS. The intended full pipeline is:
song upload
-> rights / ownership check
-> vocal + instrumental separation
-> lyrics transcription
-> word / phoneme timing
-> melody / pitch extraction
-> singable lyric adaptation
-> AI singing synthesis
-> optional voice/timbre conversion
-> mixing + mastering
-> music-player interfaceThe current repository implements the first local analysis layer. Singing synthesis with YingMusic-Singer-Plus, SoulX-Singer, and related models is staged as a research integration because those models require larger weights, license checks, and separate GPU-worker packaging.
Citation
If you use Musia in research, cite the repository. GitHub reads CITATION.cff and shows a Cite this repository panel on the repo page.
@software{chen_musia_2026,
author = {Chen, Lachlan},
title = {Musia: Local-first AI song localization and music analysis},
year = {2026},
url = {https://github.com/lachlanchen/Musia}
}Status
Musia is early research software. The local pipeline works for testing and artifact generation, but the chord detector is a lightweight baseline and the singable re-singing layer is not production-ready yet. Use songs you own, public-domain songs, licensed songs, or creator-uploaded material.

