audio_ner Svelte Themes

Audio_ner

Svelte application to run transcription and named entity recognition of audio files.

AudioScribe — WhisperX + GLiNER NER App

Eine Svelte-App zur Audio-Transkription mit WhisperX und Named Entity Recognition mit GLiNER.

Projektstruktur

whisperx-app/
├── backend/
│   ├── main.py            # FastAPI Backend
│   └── requirements.txt
└── frontend/
    ├── src/
    │   ├── App.svelte     # Haupt-Svelte-Komponente
    │   └── main.js
    ├── index.html
    ├── package.json
    └── vite.config.js

Features

  • 🎵 Audio-Upload per Drag & Drop oder Dateiauswahl (MP3, WAV, M4A, FLAC, OGG, OPUS)
  • 🌊 Waveform-Visualisierung mit WaveSurfer.js (Playback, Zeitanzeige)
  • 📝 Transkription mit WhisperX (wortgenaue Timestamps, Auto-Spracherkennung)
  • 🏷️ Kategorien frei definierbar (z.B. Person, Ort, Organisation, Produkt...)
  • 🔍 NER mit GLiNER — Multilinguales Modell, keine vordefinierten Klassen nötig
  • 📍 Waveform-Marker pro Kategorie mit farbiger Überlagerung
  • 👆 Hover-Highlight — Nur die gerade gehöverte Kategorie wird angezeigt
  • ▶️ Direktes Abspielen einzelner Fundstellen per Klick

Backend Setup

Voraussetzungen

  • Python 3.9+
  • ffmpeg installiert (brew install ffmpeg / apt install ffmpeg)
  • Optional: CUDA-fähige GPU für schnellere Inferenz

Installation

cd backend

# Virtuelle Umgebung erstellen
python -m venv venv
source venv/bin/activate  # Windows: venv\Scripts\activate

# Abhängigkeiten installieren
pip install -r requirements.txt

# WhisperX benötigt ggf. zusätzlich:
pip install torch torchaudio --index-url https://download.pytorch.org/whl/cpu
# Mit CUDA (GPU):
# pip install torch torchaudio --index-url https://download.pytorch.org/whl/cu118

Backend starten

cd backend
source venv/bin/activate
python main.py

Der Server läuft auf http://localhost:8000.

API-Dokumentation: http://localhost:8000/docs


Frontend Setup

Voraussetzungen

  • Node.js 18+

Installation & Start

cd frontend
npm install
npm run dev

Das Frontend läuft auf http://localhost:5173 und proxied API-Anfragen automatisch zum Backend.

Produktions-Build

npm run build
npm run preview

Nutzung

  1. Audio hochladen — Drag & Drop oder Datei wählen
  2. Transkribieren — Button "Starten" klicken, WhisperX läuft im Backend
  3. Kategorien definieren — z.B. "Person", "Ort", "Organisation", Enter drücken
  4. NER ausführen — GLiNER sucht im Transkript nach den definierten Kategorien
  5. Waveform erkunden — Über Kategorien hovern um Markierungen ein-/auszublenden
  6. Fundstellen abspielen — Klick auf Marker in der Waveform oder auf Ergebnis-Karte

Modell-Informationen

Komponente Modell Hinweise
Transkription WhisperX base Austauschbar: small, medium, large-v3
NER GLiNER gliner_multi-v2.1 Multilingual, zero-shot Kategorien

WhisperX Modell wechseln

In backend/main.py, Zeile ~30:

_whisper_model = whisperx.load_model("base", device, ...)
# Optionen: "tiny", "base", "small", "medium", "large-v2", "large-v3"

Technischer Stack

  • Frontend: Svelte 4, Vite, WaveSurfer.js 7
  • Backend: FastAPI, WhisperX, GLiNER, PyTorch
  • Kommunikation: REST API (JSON + multipart/form-data)

Top categories

Loading Svelte Themes