Skip to content

Repository files navigation

Neiro — local source separation, restoration, and transcription

Local source separation, restoration, transcription, and audio editing.
Neiro (音色) means timbre — the color of a sound.
Everything runs on your machine. Audio never leaves it.

CI Python License Release


At a glance

Separate Vocals, karaoke, harmonic/percussive, 4/6-stem, drums — ensembles + null-test residual
Restore Declip, dehum, denoise, dereverb, super-res, mastering — auto chains from analysis
Transcribe Audio → MIDI (YIN floor; Basic Pitch / piano when installed) + MusicXML / tab / lyrics
Studio Waveform + spectrogram edits, Mix drawer, Learn practice, DAW injector capture
Privacy Binds to 127.0.0.1 only. Pure-DSP floor works with no model downloads.

Okabe–Ito stem color palette used consistently in Neiro


The worksuite

One engine, two doors: Tauri desktop or neiro ui in the browser. Same modules, same jobs, same local cache.

Neiro Separate module — presets, quality tier, and plan strip
Separate — presets, quality tiers, honest stage progress (illustrative mock in the shipping design language)

Neiro Studio multi-track timeline with Mix drawer
Studio — multi-track timeline + Mix drawer (illustrative mock)

Neiro Transcribe piano-roll and MIDI export
Transcribe — piano roll + MIDI export (illustrative mock)

Keyboard — modules 16 / 89, Mix 7, command palette Ctrl/⌘K, collapse rail Ctrl/⌘B.


Quick start

Desktop

Grab a release and use the one-click launcher in packaging/launchers/ (Neiro UI.bat / neiro-ui.sh), or run from source:

npm install && npm run tauri:dev

CLI / Python

pip install -e .
# optional backends:
pip install -e ".[all]"          # separation, piano, restoration, loudness, HF hub, yt-dlp
pip install -e ".[demucs]"       # HTDemucs 4-stem
pip install -e ".[basicpitch]"   # Spotify Basic Pitch — Python ≤3.11
pip install -e ".[superres]"     # AudioSR — Python ≤3.11
pip install -e ".[youtube]"      # URL ingest (yt-dlp)
pip install -e ".[dev]"          # tests + linting

Requires Python 3.10–3.12 and ffmpeg on PATH for compressed/video inputs (WAV/FLAC work without it).
[all] omits basicpitch / superres so Python 3.12 installs stay clean — add those on 3.10/3.11.

Example Neiro CLI commands

neiro ui                                   # local interface (browser or desktop shell)

neiro ingest "https://youtu.be/…"          # cache audio locally (needs [youtube])
neiro analyze song.flac                    # tempo, key, loudness, conditions (JSON)

neiro separate song.flac --preset vocals
neiro separate song.wav  --preset vocals-ensemble
neiro separate song.wav  --preset 4stem             # HTDemucs when installed

neiro enhance old.wav                      # auto-repair from analysis
neiro enhance vox.wav --chain dehum,denoise,normalize

neiro transcribe song.wav --out song.mid
neiro transcribe solo.wav --mode direct --no-quantize

neiro models
neiro download <model-id>
neiro watch ./inbox --out ./done --job separate --preset vocals

Transcription also writes MusicXML, ASCII tab, and LRC lyrics beside MIDI. MuseScore / Verovio on PATH upgrades score export to engraved PDF/SVG — see src/neiro/symbolic/.


How it works

Neiro ingest → analyze → separate / enhance / transcribe pipeline

ingest → lane(sr) → analyze
                 ├→ separate(model / ensemble) → {stems…} → residual (null test)
                 ├→ enhance(chain) → restored audio
                 └→ [split] → transcribe(model) → compile → Timeline → MIDI
  • Typed artifacts flow through a DAG, keyed in a content-addressed cache — re-runs recompute only what changed.
  • The Planner turns intent + analysis + hardware into a concrete graph. CLI, desktop, and browser are thin clients.
  • VRAM manager applies a downgrade ladder (evict → fp16 → shrink chunk → CPU) so CUDA OOM never surfaces raw.
  • Models are manifests, not hard deps — core is numpy/scipy; neural backends plug in via JSON.

Deep dive: docs/architecture.md.


Features (detail)

Separate — stems, ensembles, null test

Vocals/instrumental, harmonic/percussive, karaoke, 4/6-stem, drum-kit decomposition. Weighted spectral-fusion ensemble + test-time augmentation. Every result includes a null-test residual so you can hear what was left behind.

Restore — repair chains

Declip, mains-hum removal, spectral-gate denoise, dereverb, AudioSR bandwidth extension, Matchering reference mastering — automatic conditioning chains from analysis, or explicit chains on demand.

Transcribe — audio → MIDI

Dependency-free YIN for the model-free floor; Basic Pitch and piano (with pedal) when installed. Timeline compiler does reversible groove-preserving quantization (grid for notation, micro-offsets for feel) and auto-splits dense mixes before decoding.

Analyze · Edit · Learn · DAW
  • Analyze — loudness, tempo, key, clipping, bandwidth, effective-mono, hum/echo, instrument hints
  • Studio — trim / silence / fade / gain / normalize / reverse with non-destructive undo
  • Learn — loop regions, count-in, metronome, step / WebMIDI / DAW wait mode
  • DAW — shared-window VST2 / CLAP injectors, Edison-style capture into the same UI

Documentation

Doc What it covers
Architecture Engine + desktop shell
UI Modules, design language, shortcuts
Models Manifests, licenses, fetching weights
Adding a model Adapters & ensembles
Session Provenance & reproducibility
Plugins Extension points & trust boundaries
Performance RTF benchmarks
Evaluation Quality harness
Roadmap / Traceability Vision & status
Changelog Release history

Development

# Python engine
pip install -e ".[dev]"
ruff check . && ruff format --check .
pytest
python scripts/benchmark.py
python scripts/verify_models.py

# Frontend
npm --prefix frontend ci
npm --prefix frontend run lint
npm --prefix frontend run build

# Desktop shell
cd src-tauri && cargo fmt --all && cargo clippy --all-targets && cargo check
npm run tauri:dev   # from repo root

Contributions welcome — see CONTRIBUTING.md. Lowest-friction path: a new model manifest + adapter (guide).


Status

Area State
DAG runtime, cache, VRAM ladder, manifests
Analysis + DSP separation / restore / YIN transcription ✅ no downloads
Neural adapters (Demucs, RoFormer, Basic Pitch, AudioSR, …) ✅ opt-in weights
Studio, Mixer, Learn, Preferences, session Save/Open
Desktop shell (Tauri 2 + React)
Watch-folder batch (neiro watch)
DAW shared-window injector + Edison capture
Symbolic export (MusicXML / tab / LRC; PDF via Verovio/MuseScore)
Full MUSDB / MAESTRO eval tables ⏳ needs user datasets

Neiro 1.1.1 — UI navigation QOL (command palette, collapsible rail, session dialogs) on top of the 1.1.0 DAW + model-zoo release. See CHANGELOG.md.


Licensing

Engine, desktop shell, and frontend are MIT (LICENSE).
Individual models keep their own licenses (some non-commercial / research-only). Manifests record them; neiro models shows them; export metadata carries them forward.

See docs/models.md and SECURITY.md for the local-first security model and weight supply-chain notes.

About

Local source separation, restoration, transcription, and audio editing. Model-agnostic engine with a pure-DSP floor — no downloads required.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages