GUI-Tool zur Restaurierung historischer Aufnahmen (Schellack, Tape, Lo-Fi) und moderner Musik mittels Stem-Separation & mehrstufiger DSP-/KI‑Pipeline.
Kernfunktionen:
- Laden & Export von Audio (WAV, FLAC, MP3) – MP3 in 320 kbps via
ffmpeg(Fallback WAV) - Mehrere Stem-Separation-Backends:
- Eingebaut: HPSS (harmonic/percussive + Begleitung)
- Optional: Demucs (mehrere Modelle), Open-Unmix, Spleeter (bereit für Integration)
- Individuelle Stem-Auswahl (vocals, drums, bass, other, harmonic, percussive, accompaniment)
- Option: Stems einzeln restaurieren (präzisere Korrektur, langsamer) oder gemischt verarbeiten
Restaurierung & Enhancement:
- Spektrales Denoise (Noise Profil aus erster Passage, Stärke regelbar)
- Declick & Decrackle (Median-/Band-Glätter)
- De-Clip (nicht-ML, geclipte Peaks rekonstruieren, Stärke regelbar)
- Transienten-Enhancement (Attack-gewichtete Hochton-/Klarheitsanhebung)
- Codec-Artefakt-Unterdrückung (zeitliche Median-Glättung im Spektrum)
- EQ-Presets:
shellac,tape,none - Air/Höhen-Anreicherung (HF-Shelf + sanfte harmonische Anreicherung)
- Adaptive Loudness-Normalisierung (integrierte LUFS + optionale zeitliche Glättung)
- Klarheits-Stabilisierung (dynamischer HF-Tilt zur Konstanz der Präsenz)
- Wow/Flutter-Reduktion (leichte Tonhöhenschwankungs-Glättung)
- Pitch-Engine wählbar:
torch(Hilbert-basiert, ohne Zusatzabhängigkeiten) odercrepe(mittorchcrepe)
- Pitch-Engine wählbar:
- Stereo-Widening aus Mono (HF‑seitige Dekorrelation + Micro-Delay)
- Optionale generative Super-Resolution / High-Frequency-Reconstruction (AudioSR – falls installiert)
- Engine:
audiosr - Modi:
full(Vollband) oderhighs(nur Hochtonergänzung) - Mix-Regler (Dry/Wet) + Ziel-Sample-Rate (Standard 48 kHz, bis 96 kHz)
- Engine:
- Finale Normalisierung & Sicherheits-Limiter
Workflow / GUI:
- PySide6 GUI (progressive Statusmeldungen, abbrechbarer Worker-Thread)
- Per-Stem Export (optional) in wählbares Verzeichnis
- Fortschrittsbalken & detailierte Status-Texte
- Optionaler Debug-Log (Checkbox „Debug-Log“): schreibt SR/Längen-Infos nach
work/debug.log
Fallback & Robustheit:
- Alle optionalen KI-/Pitch-/Loudness-Funktionen haben sichere Fallbacks (kein Absturz bei fehlenden Paketen)
- Ohne optionale Pakete läuft Basis-Restaurierung (HPSS + klassische DSP) vollständig
| Zweck | Paket(e) | Nutzen |
|---|---|---|
| Erweiterte Lautheit (LUFS) | pyloudnorm |
Präzise integrierte & adaptive Loudness |
| Fortgeschrittenes Pitch-Tracking | torch, torchcrepe |
Genauere Wow/Flutter-Reduktion |
| Generative Super-Resolution | audiosr, torch |
Hochfrequenz-/Bandbreitenrekonstruktion |
| Zusätzliche Separation | demucs, open-unmix, spleeter |
Bessere/alternative Stem-Qualität |
Installation (optional), z.B. nur Loudness & Demucs:
pip install pyloudnorm demucsDie tatsächliche Performance hängt stark von Modellwahl (z.B. Demucs) und optionalen KI-Funktionen ab.
- CPU: 2‑Kern x86_64 oder ARM (≥ 1.2 GHz)
- RAM: 2 GB (1 GB frei während Lauf)
- Speicher: ~300 MB frei
- Python: 3.10 – 3.12
- ffmpeg: Für MP3-Export (sonst nur WAV)
- Keine GPU nötig
- CPU: 4‑Kern (≥ 2.0 GHz) oder Apple Silicon M‑Serie (M1 oder besser)
- RAM: 8 GB (Demucs Modelle laden mehrere hundert MB; Batch-Verarbeitung profitiert)
- Python: 3.11 oder 3.12
- Optional GPU (CUDA ≥ 11) für Torch-Modelle (Demucs / AudioSR / torchcrepe) → starke Beschleunigung
- GPU: NVIDIA (≥6 GB VRAM) für vertretbare Laufzeiten; CPU-Only möglich aber langsam
- RAM: ≥ 8–12 GB
- Getestet Szenario: Raspberry Pi 4 / 5 (4–8 GB RAM)
- Empfohlen: Classic Mode (HPSS + Denoise/Declick/EQ/Air/Loudness/Clarity/Widen)
- Nicht empfohlen / sehr langsam: Demucs (kein offizielles vorgebautes Wheel mit AVX), AudioSR, torchcrepe
- Deaktivieren Sie generative & tiefe Modelle im GUI (Engine =
none/ Mix = 0)
- Läuft nativ (ARM64). Torch Wheels für M‑Serie verfügbar → gute Performance.
- ffmpeg via Homebrew:
brew install ffmpeg
- Getestet ab Windows 10/11 64‑bit
- Visual C++ Build Tools empfohlen (falls Torch nachinstalliert wird)
- ffmpeg in PATH (z.B. via
choco install ffmpeg)
- Python-Pakete aus
requirements.txt - Optional installierte Deep-Learning-Pakete nur wenn Features aktiv
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -U pip wheel
pip install -r requirements.txtOptional (alles):
pip install pyloudnorm demucs open-unmix spleeter torch torchcrepe audiosrHinweis: Große Modelle (Demucs, AudioSR) können beim ersten Start automatisch Gewichte herunterladen.
python run.pyOptional: Debug-Log aktivieren (GUI → Checkbox „Debug-Log“). Der Log liegt unter work/debug.log und enthält u.a. Sample-Rate- und Längenangaben, hilfreich für Fehleranalysen (z.B. Tempo-/Längenprobleme).
- Audio laden
- Backend & Stems wählen
- Optional: Per-Stem Restaurierung aktivieren (langsamer, präziser)
- Denoise/Declick/EQ/Air einstellen
- Optional: Generative Enhancement aktivieren (Engine
audiosr, Mix > 0) - Ziel-Lautheit & Glättung wählen
- Clarity / Wow/Flutter / Stereo-Widening nach Bedarf
- Start → Fortschritt beobachten → Exportdialog (WAV oder MP3)
- Optional: Stems zusätzlich in Ordner schreiben lassen
src/audio_restorer/gui/– GUI (PySide6)src/audio_restorer/separation/– Backend-Registry & Implementierungen (HPSS, Hooks für Demucs/Open-Unmix/Spleeter)src/audio_restorer/restoration/– DSP & Enhancement Funktionen (Denoise, Declick, EQ, Loudness, Clarity, Wow/Flutter, Generativ)scripts/test_length_invariance.py– Längeninvarianz-Schnelltest
- Kein destruktives Speichern – immer neuer Export
- Generative Modelle können Artefakte erzeugen; Mix-Regler konservativ nutzen
- Wow/Flutter-Reduktion ist heuristisch (kein vollständiges Pitch-Reconstructing)
| Problem | Ursache | Lösung |
|---|---|---|
| MP3 Export fehlt | ffmpeg nicht gefunden | ffmpeg installieren & in PATH |
| Sehr langsam | Deep-Learning Backend aktiv | Backend wechseln zu HPSS / Features deaktivieren |
| Kein Lautheitsabgleich | pyloudnorm fehlt |
pip install pyloudnorm |
| Keine generative Optionen | audiosr fehlt |
pip install audiosr torch |
Absturz bei Pitch Engine crepe |
torchcrepe fehlt |
pip install torchcrepe oder Engine auf torch stellen |
MIT (siehe LICENSE). Drittanbieter-Lizenzen: THIRD_PARTY_LICENSES.md.
Das Skript scripts/build_appimage.sh erzeugt ein AppImage. Es kann (a) ein leichtes AppImage mit System‑Python oder (b) ein vollständig offline lauffähiges AppImage mit gebündeltem Python‑Runtime, allen Paketen und vorab heruntergeladenen ML‑Modellen bauen.
Schnellstart (Linux):
# optional: Abhängigkeiten für Builder
# sudo apt-get install -y imagemagick
# 1) Basis-AppImage (ohne schwere ML-Extras)
bash scripts/build_appimage.sh
# 2) Vollständig offline AppImage (inkl. Python-Runtime & ML-Extras)
# - Bundelt eine virtuelle Python-Umgebung in AppDir/usr/python
# - Installiert Torch (CPU), Torchaudio, Demucs, Open-Unmix, TorchCrepe, pyloudnorm
# - Lädt Modellgewichte vor und legt sie in AppDir/usr/models bzw. AppDir/usr/cache ab
INCLUDE_EXTRAS=1 PREWARM=1 bash scripts/build_appimage.sh
# Optional: ffmpeg ins AppImage bündeln (achten Sie auf Lizenzkompatibilität)
# Variante A: systemweites ffmpeg verwenden
BUNDLE_FFMPEG=1 bash scripts/build_appimage.sh
# Variante B: expliziten Pfad angeben
FFMPEG_PATH=/opt/ffmpeg/bin/ffmpeg BUNDLE_FFMPEG=1 bash scripts/build_appimage.shWeitere Schalter:
INCLUDE_DEMUCS=1(implizit beiINCLUDE_EXTRAS=1) – Demucs installieren und Modelle vorladenINCLUDE_OPENUNMIX=1(implizit beiINCLUDE_EXTRAS=1) – Open‑Unmix installieren/vorwärmenINCLUDE_TORCHCREPE=1(implizit beiINCLUDE_EXTRAS=1) – TorchCrepe installieren/vorwärmenINCLUDE_SPLEETER=1– Spleeter (TensorFlow‑basiert, sehr groß) zusätzlich einbindenINCLUDE_AUDIOSR=1– AudioSR (sehr groß/langsam ohne GPU) zusätzlich einbindenTORCH_VERSION/TORCHAUDIO_VERSION– exakte Torch/Torchaudio Versionen für CPU‑Wheels setzen (Default: 2.3.1)
Was das Skript tut:
- erstellt eine isolierte Build‑Venv,
- installiert Basis‑ und optionale Pakete (Torch CPU‑Wheels via
download.pytorch.org), - bündelt die komplette Venv als Laufzeit nach
AppDir/usr/python, - lädt (optional) ML‑Modelle vor und speichert sie unter
AppDir/usr/models/AppDir/usr/cache, - legt Desktop‑Datei, Icon und Wrapper an,
- packt mit
appimagetool(falls vorhanden) zum AppImage.
Laufzeit: Der Starter setzt TORCH_HOME und XDG_CACHE_HOME auf die gebündelten Ordner, sodass beim ersten Start keine Internetverbindung nötig ist. Das AppImage bevorzugt außerdem gebündelte Tools (z.B. ffmpeg, wenn eingeschlossen).
Artefakt: dist/AudioRestorer-<version>-<arch>.AppImage. Falls appimagetool fehlt, bleibt ein gebrauchsfertiges AppDir/ zurück.
Größe & CPU‑Support:
- Mit Extras und vorab geladenen Modellen kann das AppImage mehrere hundert MB groß werden.
- Torch wird als CPU‑Build eingebunden. GPU‑Beschleunigung ist in diesem Artefakt nicht enthalten.
Lizenzhinweise: PySide6/Qt wird dynamisch verwendet (LGPLv3). Bitte legen Sie bei Distribution LICENSE, THIRD_PARTY_LICENSES.md sowie relevante Upstream‑Lizenztexte bei. Für ffmpeg gilt: je nach Build ist LGPL oder GPL maßgeblich. Wenn Sie ffmpeg bündeln (BUNDLE_FFMPEG=1), stellen Sie sicher, dass der verwendete Build zur gewünschten Weitergabe passt (für LGPL: ohne GPL‑only Komponenten). Das Skript legt dafür eine usr/licenses/NOTICE-FFMPEG.txt im AppDir an; ergänzen Sie ggf. die vollständigen Lizenztexte.
Das AppImage unterstützt eine Benutzer‑Overlay‑Installation zusätzlicher Python‑Pakete, ohne das AppImage selbst zu ändern. Verwenden Sie den mitgelieferten Helfer:
# Beispiel: AudioSR nachinstallieren
./AudioRestorer-<version>-<arch>.AppImage --appimage-extract-and-run audio-restorer-pip audiosr torchvision
# oder (AppImage gemountet im Hintergrund von Desktop) einfach:
audio-restorer-pip audiosr torchvisionDie Pakete landen unter ${XDG_DATA_HOME:-$HOME/.local/share}/open-audio-stem-restorer/site-packages und werden beim Start automatisch via PYTHONPATH verwendet. Hinweis: Manche Pakete erfordern bestimmte Python/Numpy‑Versionen. AudioSR benötigt i.d.R. Python 3.10/3.11 mit numpy<=1.23.x. Falls die Installation fehlschlägt, prüfen Sie kompatible Versionen oder verwenden Sie die offline‑gebündelte Alternative ohne AudioSR.
Schneller Längeninvarianz-Test (stellt sicher, dass Export/Verarbeitung die Länge nicht verändert):
python scripts/test_length_invariance.pyDas Skript generiert synthetisches Audio für mehrere Sample-Raten und Laufzeiten, nutzt verfügbare Backends (HPSS, optional Demucs/Open‑Unmix) und prüft, dass die Pipeline-Ausgabe dieselbe Länge wie der Eingang besitzt – sowohl im Mono‑ als auch im Stereo‑Fall (mit Widening). Bei fehlenden optionalen Paketen werden entsprechende Backends übersprungen.