Durchgehender Audio-Rekorder mit marker-basiertem Zerschneiden in benannte Titel und Export als WAV/MP3
  • Rust 82.1%
  • Slint 16.2%
  • Shell 1.4%
  • NSIS 0.2%
Find a file
audioprog e9f0c4a54f fix(ngen_rec_main): Vorschlags-Fenster bleibt am eigenen Feld, Cursor hinter das ersetzte Wort
Das schwebende Vorschlags-Fenster hing an der Position des fokussierten
Feldes, zeigte aber den Rechtschreib-Zustand desjenigen Feldes, für das
zuletzt eine Prüfung fertig wurde. Beim Tabulieren in ein Feld, in das
nichts getippt wurde, lief nie eine neue Prüfung und nichts wurde
geleert – das Fenster wanderte mit dem Fokus mit und zeigte weiter das
Wort des vorigen Feldes.

- Die vier Bedingungen des Overlays beziehen sich jetzt darauf, ob der
  aktive Rechtschreib-Zustand zum verankerten Feld (sug-field) gehört,
  statt nur darauf, ob überhaupt einer aktiv ist.
- Beim Fokussieren eines Titelteils bzw. des Album-Feldes wird einmal
  geprüft (neuer Callback spellcheck-part). Damit erscheinen
  Fehlerwörter und Vorschläge des Feldes, ohne dass getippt werden muss.
- Der Aufräum-Zweig in spell_async leert auch dann, wenn das fehlerfreie
  Ergebnis das verankerte Feld betrifft – sonst bliebe beim Wechsel in
  ein sauberes Feld der alte Zustand im Speicher stehen.

Zusätzlich: Wird ein Vorschlag mit Enter übernommen, steht der Textcursor
danach hinter dem eingesetzten Wort statt dort, wo er vorher war.
replace_first_word_at liefert dafür den Byte-Offset; das Feld setzt ihn
in `changed model-value`, also erst nach der Textübernahme.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-20 15:35:27 +02:00
.forgejo/workflows fix(ci): Release-Schritt robuster – Upload-Retry, Manifest-Check, sichtbare Fehler 2026-07-24 05:24:55 +00:00
.vscode feat(settings): add Slint-LSP library and include paths for UI integration 2026-09-16 19:54:40 +02:00
docs feat(ngen_editor): Lautstärke-Hüllkurve – Punkte und Abschnitte ziehen, vorhören, einrechnen 2026-09-20 13:54:31 +02:00
install feat(editor): Eigenes App-Icon + eigenständige Verteilung 2026-07-09 12:32:58 +00:00
ngen_audio_base feat(ngen_editor): Lautstärke-Hüllkurve – Punkte und Abschnitte ziehen, vorhören, einrechnen 2026-09-20 13:54:31 +02:00
ngen_audio_linux fix(ngen_audio_linux): zbus auf 5.17.0 pinnen 2026-07-20 05:38:30 +00:00
ngen_audio_windows feat(editor): M4 – Capture-SHM-Ausgabe, Loop, Pegelmeter, Spektrum 2026-07-08 20:31:03 +00:00
ngen_capture refactor(rec_main): str_model einmal in helpers statt dreifach kopiert 2026-07-16 14:10:48 +00:00
ngen_editor feat(ngen_editor): Lautstärke-Hüllkurve – Punkte und Abschnitte ziehen, vorhören, einrechnen 2026-09-20 13:54:31 +02:00
ngen_rec_main fix(ngen_rec_main): Vorschlags-Fenster bleibt am eigenen Feld, Cursor hinter das ersetzte Wort 2026-09-20 15:35:27 +02:00
packaging feat(packaging): .deb (Debian-Registry) und AppImage für Linux-Releases 2026-07-23 10:43:41 +00:00
scripts chore: update dependencies and version numbers in Cargo files 2026-07-23 11:42:23 +00:00
ui feat(ngen_editor): Marker verschieben/löschen, Auswahl-Fix beim Rad-Scrollen 2026-07-17 15:54:46 +00:00
.editorconfig ngenRecorder 0.2.0 2026-07-02 12:16:13 +02:00
.gitattributes ngenRecorder 0.2.0 2026-07-02 12:16:13 +02:00
.gitignore feat(packaging): .deb (Debian-Registry) und AppImage für Linux-Releases 2026-07-23 10:43:41 +00:00
about.hbs ngenRecorder 0.2.0 2026-07-02 12:16:13 +02:00
about.toml ci(about): GPL-3.0-only zu akzeptierten Lizenzen (Slint-Crates) 2026-07-02 13:21:13 +02:00
ARCHITEKTUR_ANALYSE.md docs: Benennung.md und ARCHITEKTUR_ANALYSE.md an aktuellen Code angleichen 2026-07-02 12:38:06 +02:00
ASIO.md feat(build): ASIO fest in die Windows-Version + beide Programme als Bundle 2026-07-03 08:27:49 +02:00
Benennung.md docs: Benennung.md und ARCHITEKTUR_ANALYSE.md an aktuellen Code angleichen 2026-07-02 12:38:06 +02:00
build_common.rs feat(editor): Eigenes App-Icon + eigenständige Verteilung 2026-07-09 12:32:58 +00:00
Cargo.lock chore: Version 0.4.46 2026-09-20 15:02:19 +02:00
Cargo.toml chore: Version 0.4.46 2026-09-20 15:02:19 +02:00
CLAUDE.md docs: Release-Workflow — fachliche Commit-Message statt „Version X.Y.Z" 2026-07-22 13:07:28 +00:00
Crash-Vollbild-AMD-OpenGL.md feat: renderer-skia statt femtovg (Fix AMD-OpenGL-Vollbild-Crash) + git-Version im Build 2026-07-03 10:29:16 +02:00
LICENSE ngenRecorder 0.2.0 2026-07-02 12:16:13 +02:00
LICENSE-ASIO.txt ngenRecorder 0.2.0 2026-07-02 12:16:13 +02:00
OFFEN.md docs: fertige Pläne entfernen, offene Punkte in OFFEN.md konsolidieren 2026-07-02 12:24:23 +02:00
PLAN_BLOCK_ERKENNUNG.md feat(rec_main): Halbautomatik der Blockerstellung — Live-Scan, Durchsicht, Pausen-Ausrichten 2026-07-18 16:38:24 +00:00
PLAN_HUELLKURVEN.md feat(ngen_editor): Lautstärke-Hüllkurve – Punkte und Abschnitte ziehen, vorhören, einrechnen 2026-09-20 13:54:31 +02:00
PLAN_NGEN_EDITOR.md feat(editor): update status of spectrogram view and auto-save/recovery features to completed; add configuration UI for silence threshold and pad target time 2026-07-10 08:17:11 +00:00
PLAN_STILLE_ERKENNEN.md feat(ngen_editor): Stille erkennen & markieren + Marker-Navigation in Toolbar 2026-07-16 05:55:56 +00:00
README.md fix(ci): release-Job gegen rustup-SIGPIPE härten, AppImage nicht-fatal 2026-07-23 12:37:41 +00:00
renovate.json ci: renovate.json + PR-Check-Workflow für getestete Dependency-PRs 2026-07-20 10:38:36 +00:00
RISIKO_ANALYSE.md docs: Risiko-Analyse - N1 als behoben markiert 2026-07-13 10:00:23 +00:00
TODO.md docs: Bedienungs-Doku und eingebaute Hilfe (F1) für rec_main und editor 2026-07-18 20:19:08 +00:00

ngenRecorder

Durchgehender Audio-Rekorder mit marker-basiertem Zerschneiden in benannte Titel und Export als WAV/MP3. Besteht aus drei zusammenspielenden Programmen:

  • ngen_capture nimmt dauerhaft im System-Tray auf.
  • ngen_rec_main Bearbeitung, Titel-Verwaltung und Export.
  • ngen_editor destruktiver Wave-Editor für exportierte Titel (Undo/Redo, Fades, Normalisierung, MP3-Speichern).

Native Rust-Anwendungen mit Slint-Oberfläche, für Linux und Windows.

Wofür ist die Software geeignet

Für das Aufnehmen langer, durchgehender Audio-Sessions und das anschließende Aufteilen in einzelne, benannte und getaggte Titel z. B.:

  • Gottesdienste, Vorträge, Predigten (mit Bibelstellen-Bezug),
  • Konzerte und Musik-Mitschnitte,
  • Sendungen, Interviews, Konferenzen.

Statt eine Aufnahme nachträglich mühsam zu schneiden, läuft die Aufnahme zuverlässig im Hintergrund, während parallel Marker gesetzt und Titel benannt werden. Am Ende werden die Titel sauber getrennt exportiert.

Was ist besonders

  • Dauerhafte Hintergrund-Aufnahme: ngen_capture startet die Aufnahme sofort beim Programmstart und läuft, bis es beendet wird es geht nichts verloren.
  • Getrennte Prozesse, Live-Kopplung: Rekorder und Editor sind eigenständige Programme und teilen die laufenden Audiodaten über Shared Memory. Man kann schneiden und beschriften, während weiter aufgenommen wird.
  • Wave-Editor für exportierte Titel: ngen_editor bietet destruktive Bearbeitung (Schnitt, Fades, Gain, Normalisierung, DC-Offset) mit voller Undo/Redo-Historie, Auto-Sicherung und ID3-Tag-Erhalt bei MP3-Dateien.
  • Nicht-destruktives Zerschneiden über Marker: Titelgrenzen sind Marker (Anfang/Ende/Pause/Stille/Benutzerdefiniert). Die Originaldatei bleibt unangetastet.
  • Automatische Stille-Erkennung: setzt Marker anhand einer einstellbaren dB-Schwelle; ein Ende-Marker wird automatisch dem offenen Titel zugeordnet.
  • Komfortable Titel-Benennung: konfigurierbares Titel-Schema aus Bausteinen, wiederverwendbare Vorschlagslisten, Bibelbuch-Vorschläge (66 Bücher, Luther-Tradition) und Rechtschreibprüfung.
  • Vorlagen für Pfade/Dateinamen mit Platzhaltern (Datum, Uhrzeit, Tageszeit) und Live-Vorschau.
  • Export: WAV und MP3 (via ffmpeg/LAME), optionale Lautheits-Normalisierung, ID3-Tags, Auslassen von Pausen-/Stille-Regionen, Marker-Sidecar-Dateien (Audacity/JSON/XML/WaveLab).
  • Plattformübergreifend: Linux (ALSA/PulseAudio), Windows (WASAPI und ASIO für geringe Latenz).
  • Getrenntes Abhörgerät: Das Vorhören in ngen_rec_main läuft über ein eigenes Ausgabegerät (WASAPI oder ASIO), unabhängig vom Aufnahmegerät von ngen_capture man kann also über ein anderes ASIO-Interface abhören, als aufgenommen wird.
  • Installation im Benutzerordner ohne Admin-Rechte und automatisches Selbst-Update aus den Releases des Projekt-Servers.

Wie funktioniert es

  1. Aufnehmen ngen_capture (Tray): Aufnahme startet sofort, schreibt eine Session-Datei (RAW f32-PCM oder WAV64) und streamt die Live-Daten per Shared Memory. Wählbar sind u. a. Eingabe-Kanäle und ein signalgesteuerter Start (Aufnahme beginnt ab einer Pegel-Schwelle).
  2. Ansehen ngen_rec_main liest dieselbe Session (session.json) und zeigt Peak-Wellenform, Übersichts-Minimap und Spektrogramm, mit Zoom und Wiedergabe (Audition) zum Vorhören. Das Abhören nutzt ein eigenes Ausgabegerät (WASAPI/ASIO), unabhängig vom Aufnahmegerät.
  3. Markieren Marker werden von Hand oder automatisch (Stille-Erkennung) gesetzt. Ein Anfang- und ein Ende-Marker bilden einen Titel.
  4. Benennen im Tab Titel: je Titel die Bausteine (Schema), Interpret, Album, Titelnummer unterstützt durch Vorschlagslisten, Bibelstellen und Rechtschreibprüfung. Weitere Tabs: Marker, Einstellungen, Listenverwaltung.
  5. Exportieren jeder Titel wird an seinen Markern geschnitten (Pausen/Stille werden ausgelassen) und als WAV bzw. MP3 mit Tags in die per Vorlage gebildeten Ordner geschrieben.
  6. Nachbearbeiten mit ngen_editor lassen sich exportierte WAV-/MP3-Titel nachträglich bearbeiten: schneiden, Fades, Gain/Normalisierung, DC-Offset-Korrektur, Dithering, Resampling und MP3-Export mit ID3-Tags.

Konfiguration und Session werden über JSON-Dateien zwischen Capture und Main geteilt, sodass beide Programme denselben Aufnahmeordner und dieselben Einstellungen sehen.

Ausführliche Bedienungsanleitungen: docs/hilfe_rec_main.md (Hauptfenster) und docs/hilfe_editor.md (Wave-Editor) — in den Programmen auch über F1 bzw. den Hilfe-Knopf erreichbar.

Marker automatisch erstellen (Stille & Blöcke)

ngen_rec_main kann die Markerarbeit weitgehend übernehmen:

  • Stille erkennen setzt Stille-Marker über Regionen unter der Stille-Schwelle (Einstellungen → Marker-Erstellung). Diese Regionen werden beim Export übersprungen und dienen der Blockerstellung als bevorzugte Schnittstellen.
  • Blöcke erkennen segmentiert die Aufnahme in Abschnitte ähnlicher Lautheit (ITU-R BS.1770) und setzt an den Übergängen Blockgrenzen-Marker (türkis). Jede Grenze trägt ein Label wie Block 3 · 18,3 LUFS · Sprache — Lautheit und erkannte Beitragsart (Sprache/Lied/Musik, ohne KI). Ein ? am Ende heißt: unsichere Grenze, zuerst prüfen. Abschnitte gleicher Lautheit, aber verschiedener Art (z. B. Predigt → Orgel) werden über Klangmerkmale getrennt.
  • Grenze aus Pause (zweite Quelle, Label Pause): lösen sich zwei gleich laute Sprecher ab, gibt es keine Lautheitsstufe — wohl aber eine hörbare Pause. Jede Pause, die lang genug ist und weit genug unter die Umgebung fällt, wird deshalb für sich allein zur Blockgrenze. Einstellbar über Tiefe (Standard 30 dB unter der Umgebung) und Mindestlänge (1,2 s) unter Einstellungen → Marker-Erstellung.
  • Live (Haken neben dem Knopf): schlägt Grenzen schon während der Aufnahme vor — nur im bereits stabilen Teil, spätere Daten verschieben nichts mehr. Nach Aufnahmeende ergänzt „Blöcke erkennen" den Rest.
  • Grenzen prüfen (Zeile darunter): mit ◀/▶ durch die Vorschläge springen, Anhören spielt den Übergang mit 3 s Vorlauf, An Pause ausrichten rückt einen Marker auf die nächstliegende Sprechpause (nochmal drücken = nächster Kandidat). Typ ändern mit den Tasten 14, Löschen mit Entf.
  • → Titelgrenze / Alle → Titel: baut Blockgrenzen in Titelende + Titelanfang um. Jeder Titel beginnt und endet dabei mit einstellbarer Randstille (Standard 1 s) vor dem ersten bzw. nach dem letzten Signal (Einstellungen → Marker-Erstellung → „Titel-Randstille"). Die Titel erscheinen wie von Hand gesetzt im Titel-Tab.

Alle Automatik-Schritte sind Vorschläge: ein „Rückgängig" macht den jeweils letzten Lauf komplett rückgängig, von Hand gesetzte Marker werden nie überschrieben.

Typische Abläufe

  1. Veranstaltung mit Live-Vorschlägen: „Live" anhaken → aufnehmen → während der Aufnahme erscheinen Blockgrenzen → nach dem Ende „Blöcke erkennen" für den Rest → „Grenzen prüfen" (anhören, verschieben, löschen) → „Alle → Titel" → Titel benennen → Export.
  2. Fertige Aufnahme nachträglich teilen: Session öffnen → „Stille erkennen" → „Blöcke erkennen" → prüfen → „Alle → Titel".
  3. Session aus vorhandener Audio-Datei: „Session öffnen… → Audio-Datei…" (WAV, MP3, FLAC, OGG, Opus …) — danach wie Ablauf 2.
  4. Feinschnitt einzelner Titel: im Titel-Tab „Extern bearbeiten" öffnet den Titel im ngen_editor (schneiden, Fades, Normalisierung, Export in alle Formate).

Wie wird installiert

Alle drei Programme werden pro Benutzer installiert (ohne Admin-Rechte) und aktualisieren sich anschließend selbst.

Windows

Das Setup vom neuesten Release herunterladen und ausführen: ngenAudioRecord-setup.exe unter Releases.

  • Installiert nach %LOCALAPPDATA%\Programs\ngenAudioRecord, legt Startmenü- Einträge und einen Uninstaller an (Windows „Apps & Features").
  • ASIO ist fest enthalten (geringe Latenz); eine separate WASAPI-Download- Variante gibt es nicht mehr. WASAPI bleibt voll nutzbar es lässt sich weiterhin als Eingabe- und Ausgabegerät in den Einstellungen wählen; ASIO kommt nur zusätzlich hinzu. Weil das Steinberg „ASIO SDK Open" unter der GPLv3 steht (siehe LICENSE-ASIO.txt), gilt diese für die Windows-Version.

Linux

curl -fsSL https://git.bg-ak.de/leonhard.suckau/ngenAudioRecord/raw/branch/main/install/install.sh | bash

Installiert alle drei Programme nach ~/.local/bin und legt .desktop-Einträge + Icons an. Liegt ~/.local/bin nicht im PATH, weist das Skript darauf hin.

RPM (openSUSE, Fedora)

Für openSUSE und Fedora gibt es Pakete in der Forgejo-RPM-Registry. Sie installieren systemweit nach /usr/bin und aktualisieren sich über die Paketverwaltung (das eingebaute Selbst-Update bleibt dann besser ungenutzt — /usr/bin ist für normale Benutzer nicht schreibbar).

Beide Distributionen haben eine eigene Registry-Gruppe. Das ist Absicht: in einer gemeinsamen Registry gälte das Fedora-Paket (Release-Suffix .fcNN) auch unter openSUSE als neuere Version und ließe sich dort nicht auflösen.

openSUSE:

sudo zypper --gpg-auto-import-keys addrepo --refresh \
  https://git.bg-ak.de/api/packages/leonhard.suckau/rpm/opensuse.repo
sudo zypper install ngenaudiorecord

Fedora:

sudo dnf config-manager addrepo --from-repofile=https://git.bg-ak.de/api/packages/leonhard.suckau/rpm/fedora.repo
sudo dnf install ngenaudiorecord

Sind die RPMs signiert (CI-Secret GPG_PRIVATE_KEY gesetzt), zusätzlich den Maintainer-Schlüssel importieren — die .repo-Datei aktiviert gpgcheck:

sudo rpm --import https://git.bg-ak.de/leonhard.suckau/ngenAudioRecord/raw/branch/main/packaging/RPM-GPG-KEY-ngenaudiorecord

DEB (Debian, Ubuntu, Ubuntu Studio)

Für Debian- und Ubuntu-basierte Systeme (auch Ubuntu Studio) gibt es ein .deb in der Forgejo-Debian-Registry. Es enthält alle drei Programme und installiert systemweit nach /usr/bin. Gebaut wird auf Debian 12 (bookworm); damit installiert es sich auf Debian 12+ und Ubuntu 22.04+ (dort erfüllen die t64-Pakete die Bibliotheksnamen automatisch). Es ist damit das am breitesten kompatible Paket — noch vor AppImage/tar.gz, die auf Debian 13 (trixie, glibc 2.41) gebaut werden und erst ab Ubuntu 25.04 / 26.04 LTS laufen (s. u.). Auf Ubuntu Studio 24.04/22.04 LTS ist das .deb daher der richtige Weg.

sudo install -d /etc/apt/keyrings
sudo curl -fsSL -o /etc/apt/keyrings/ngenaudiorecord.asc \
  https://git.bg-ak.de/api/packages/leonhard.suckau/debian/repository.key
echo 'deb [signed-by=/etc/apt/keyrings/ngenaudiorecord.asc] https://git.bg-ak.de/api/packages/leonhard.suckau/debian bookworm main' \
  | sudo tee /etc/apt/sources.list.d/ngenaudiorecord.list
sudo apt update
sudo apt install ngenaudiorecord

Alternativ ein einzelnes .deb als Release-Asset herunterladen und mit sudo apt install ./ngenaudiorecord_*.deb einspielen (löst die Abhängigkeiten mit auf).

AppImage (distributionsunabhängig)

Das AppImage bündelt alle drei Programme in einer portablen Datei — kein Installieren, keine Paketabhängigkeiten (nur den Grafik-/GL-Stack liefert das System). Es liegt als Asset am Release. Gebaut wird auf Debian 13 (trixie); die glibc-Untergrenze ist damit 2.41 — es läuft ab Ubuntu 25.04 / 26.04 LTS bzw. Debian 13. Für ältere Systeme (Ubuntu 24.04/22.04 LTS) das .deb nehmen.

chmod +x ngenAudioRecord-*-x86_64.AppImage
./ngenAudioRecord-*-x86_64.AppImage

Gestartet wird das Hauptfenster; den Wave-Editor und den Capture-Dienst startet es bei Bedarf aus demselben Image mit.

Aktualisierung

  • Automatisch beim Start: alle drei Programme prüfen im Hintergrund auf Updates.
  • Manuell: in der GUI unter Einstellungen → Aktualisierung, im Tray über den Menüpunkt „Nach Updates suchen" / „Update installieren".
  • Nach dem Installieren ist ein Neustart des Programms nötig.

ffmpeg (für MP3-Export)

Der MP3-Export benötigt ffmpeg (mit libmp3lame). WAV-Export und alle übrigen Funktionen laufen ohne ffmpeg.

  • Windows: unter Einstellungen → Export → „ffmpeg installieren" lädt das Programm einen passenden statischen ffmpeg-Build herunter und legt ihn nach ~/.ngenRecorder/ffmpeg/. Alternativ ffmpeg selbst bereitstellen: auf den PATH legen, neben das Programm kopieren oder die Umgebungsvariable NGEN_FFMPEG auf die ffmpeg-Datei setzen.
  • Linux: ffmpeg über die Paketverwaltung installieren, z. B. sudo apt install ffmpeg.

Für Maintainer: Release erstellen

Version in Cargo.toml ([workspace.package] version) setzen und einen Tag pushen:

git tag v0.2.0 && git push origin v0.2.0

Der Forgejo-Actions-Workflow .forgejo/workflows/release.yml baut auf dem docker-Runner Linux nativ und Windows per Docker-Cross-Build (cargo-xwin, WASAPI + ASIO), erzeugt den NSIS-Installer und veröffentlicht das Release. Einmalig nötig: ein Secret PACKAGES_TOKEN mit write:repository. Die Steinberg-„ASIO SDK Open"-URL ist im Workflow fest hinterlegt und via Variable ASIO_SDK_URL überschreibbar.

RPM-Pakete (openSUSE, Fedora)

Derselbe Tag startet zusätzlich die Jobs rpm-opensuse und rpm-fedora. Sie bauen im jeweiligen Distributions-Container aus packaging/ und laden das Ergebnis in die Forgejo-RPM-Registry (Gruppen rpm/opensuse bzw. rpm/fedora). Die Jobs laufen unabhängig vom Release-Job — ein Paketierungsfehler hält die Archive nicht auf.

Secrets/Variablen:

Name Zweck
PACKAGES_TOKEN Pflicht für den Upload; Token mit Scope write:package
GPG_PRIVATE_KEY Optional; gesetzt ⇒ RPMs werden signiert
GPG_NAME Key-ID/E-Mail des Signierschlüssels (bei Signatur Pflicht)
GPG_PASSPHRASE Optional (leer = passphrasenloser Key)

Beide Token-Secrets vertreten sich gegenseitig: Für Checkout und Release wird PACKAGES_TOKEN benutzt; beide Scopes — write:repository und write:package. Der Upload authentifiziert sich als Repository-Owner (= Eigentümer der Registry-URL), das Token muss also diesem Benutzer gehören.

Weil Slint 1.17 Rust ≥ 1.92 verlangt (neuer als die Distributions-Pakete), installieren die Jobs rustup und stellen die aktuelle stable-Toolchain voran.

Lokal testen (braucht podman, baut und installiert testweise im Container):

scripts/build-rpm-local.sh opensuse
scripts/build-rpm-local.sh fedora

DEB- und AppImage-Pakete (Debian/Ubuntu)

Derselbe Tag startet den Job deb: er baut im debian:bookworm-Container aus packaging/deb/ ein .deb mit allen drei Programmen und lädt es in die Forgejo-Debian-Registry (debian bookworm main). Das AppImage baut der Release-Job selbst aus packaging/appimage/ (über scripts/build-appimage.sh mit linuxdeploy + appimagetool, ohne Neubau der Binaries) und hängt es als Download-Asset ans Release. Beide nutzen PACKAGES_TOKEN wie bei den RPMs.

Bookworm ist bewusst gewählt: Es hat die Bibliotheksnamen vor der t64-Umstellung, die neuere Debian-/Ubuntu-Versionen per Provides weiterhin erfüllen — ein auf Trixie gebautes Paket verlangte dagegen …t64-Namen, die auf älteren Systemen fehlen.

Lokal testen (braucht podman, baut und installiert testweise im Container):

scripts/build-deb-local.sh
scripts/build-appimage-local.sh

Blockerstellung messen und tunen

Die Schwellen der automatischen Blockerstellung (Pausen-Tiefe, Klassifikation usw.) lassen sich gegen echte Aufnahmen messen statt schätzen:

cargo run --release -p ngen_audio_base --example block_eval -- aufnahme.wav

Ohne weitere Dateien druckt der Lauf die gefundenen Grenzen (Methode + Konfidenz); mit einer aufnahme.truth.csv daneben meldet er p50/p95-Abweichung in ms, verpasste und überzählige Grenzen sowie die Klassen-Trefferquote. Schritt-für-Schritt-Anleitung inkl. truth.csv-Format und Deutung der Ergebnisse: docs/blockerstellung_messen.md.

Lizenz

GPL-3.0 (siehe LICENSE). Die ASIO-Variante zusätzlich: LICENSE-ASIO.txt.