Zum Inhalt

ASR Service CLI Dokumentation

Die ASR Service Kommandozeilenschnittstelle (CLI) bietet verschiedene Befehle zur Audio-Transkription sowohl im Batch-Modus als auch in Echtzeit.

Installation

Das CLI-Tool wird bei der Installation des ASR-Service-Pakets automatisch als am-cli verfügbar gemacht:

am-cli --help

Verfügbare Befehle

Die CLI ist in mehrere Unterbefehle unterteilt, die verschiedene Transkriptionsszenarien abdecken:

1. Datei-Transkription (Batch-Modus)

transcribe-file

Transkribiert eine Audio- oder Videodatei im Batch-Modus.

Syntax:

am-cli transcribe-file [OPTIONEN] <URI>

Parameter: - uri - Pfad zur Audio-/Videodatei (erforderlich)

Optionen: - -ws, --websocket - Übertragung per WebSocket - -uf, --upload-file - Datei hochladen

Beispiele:

# Transkription einer lokalen Datei
am-cli transcribe-file /pfad/zur/datei.wav

# Transkription mit WebSocket
am-cli transcribe-file --websocket audio.mp3

# Transkription mit Datei-Upload
am-cli transcribe-file --upload-file interview.m4a

Funktionsweise: - Die Datei wird an den ASR-Service gesendet - Die Transkription erfolgt über Redis Message Queue oder WebSocket - Das Ergebnis wird nach Abschluss ausgegeben


2. Mikrofon-Verwaltung

list-mic

Listet alle verfügbaren Mikrofon-Eingabegeräte mit ihrem Index und Namen auf.

Syntax:

am-cli list-mic

Beispielausgabe:

Available microphones:
  0: Internes Mikrofon
  1: USB Audio Device
  2: Logitech Webcam


3. Echtzeit-Transkription vom Mikrofon

transcribe-mic

Transkribiert Audio vom Mikrofon in Echtzeit.

Syntax:

am-cli transcribe-mic [OPTIONEN]

Optionen: - --mic INDEX_ODER_NAME - Mikrofon-Geräteindex oder Namensteil (Standard: Systemstandard) - --model MODEL_NAME - Modellname (Standard: mistralai/Voxtral-Mini-4B-Realtime-2602) - --sample-rate HERTZ - Audio-Abtastrate in Hz (Standard: 16000)

Beispiele:

# Mit Standard-Mikrofon
am-cli transcribe-mic

# Mit spezifischem Mikrofon (nach Index)
am-cli transcribe-mic --mic 1

# Mit spezifischem Mikrofon (nach Name)
am-cli transcribe-mic --mic "USB Audio"

# Mit anderem Modell und Abtastrate
am-cli transcribe-mic --mic 0 --model mistralai/Voxtral-Mini-4B-Realtime-2602 --sample-rate 16000

Hinweise: - Verwenden Sie list-mic um verfügbare Mikrofone zu sehen - Die Transkription erfolgt in Echtzeit und wird sofort ausgegeben - Beenden Sie die Transkription mit Strg+C


4. Echtzeit-Transkription von Stream-URLs

transcribe-url

Transkribiert Audio von einer beliebigen Stream-URL in Echtzeit. Das Protokoll wird automatisch erkannt.

Syntax:

am-cli transcribe-url [OPTIONEN] <URL>

Parameter: - url - Stream-URL (erforderlich)

Optionen: - --model MODEL_NAME - Modellname (Standard: mistralai/Voxtral-Mini-4B-Realtime-2602) - --sample-rate HERTZ - Audio-Abtastrate in Hz (Standard: 16000)

Unterstützte Protokolle: - RTSP - rtsp://host:554/stream - RTSPS - rtsps://host:322/stream - RTMP - rtmp://host:1935/live/stream - SRT - srt://host:1234 (benötigt ffmpeg mit libsrt) - HLS - http://host/stream/index.m3u8 - HTTP - http://host/stream.aac (progressiv/fragmentiert) - UDP/RTP - udp://224.0.0.1:5004

Beispiele:

# RTSP Stream
am-cli transcribe-url rtsp://192.168.1.100:554/live/stream

# HLS Stream
am-cli transcribe-url http://example.com/stream/index.m3u8

# Mit spezifischem Modell
am-cli transcribe-url --model mistralai/Voxtral-Mini-4B-Realtime-2602 rtsp://stream.example.com

Hinweise: - WebRTC und MoQ werden nicht direkt unterstützt - Verwenden Sie MediaMTX als Bridge: Es empfängt WebRTC/MoQ und veröffentlicht als RTSP/HLS neu - Siehe mediamtx.md für weitere Informationen


5. Protokoll-spezifische Befehle

Für häufig verwendete Protokolle gibt es dedizierte Aliase:

transcribe-rtsp

Transkribiert einen RTSP-Stream.

Syntax:

am-cli transcribe-rtsp [OPTIONEN] <URL>

Beispiel:

am-cli transcribe-rtsp rtsp://192.168.1.100:554/stream


transcribe-rtmp

Transkribiert einen RTMP-Stream.

Syntax:

am-cli transcribe-rtmp [OPTIONEN] <URL>

Beispiel:

am-cli transcribe-rtmp rtmp://live.example.com:1935/live/stream_key


transcribe-srt

Transkribiert einen SRT-Stream.

Syntax:

am-cli transcribe-srt [OPTIONEN] <URL>

Beispiel:

am-cli transcribe-srt srt://192.168.1.100:1234


transcribe-hls

Transkribiert einen HLS-Stream.

Syntax:

am-cli transcribe-hls [OPTIONEN] <URL>

Beispiel:

am-cli transcribe-hls http://example.com/stream/playlist.m3u8


Konfiguration

Das CLI verwendet die gleiche Konfiguration wie der ASR-Service. Siehe configuration.md für Details zur Konfiguration.

Wichtige Konfigurationsparameter:

  • Server-Host und -Port - Für WebSocket-Verbindungen
  • Message Queue - Für Batch-Transkription
  • Proxy-Einstellungen - Falls erforderlich

Technische Details

Batch-Transkription (transcribe-file)

Die Batch-Transkription verwendet zwei mögliche Übertragungsmethoden:

  1. Redis Message Queue (Standard)
  2. Erstellt einen Job mit eindeutiger UUID
  3. Veröffentlicht Job-Informationen auf einem Redis-Kanal
  4. Optional: Datei-Upload über Stream-Kanal
  5. Wartet auf Fertigstellung über Subscribe-Kanal

  6. WebSocket (mit --websocket)

  7. Stellt direkte WebSocket-Verbindung zum Server her
  8. Sendet Job-Anfrage mit Sitzungs-UUID
  9. Lädt Datei hoch
  10. Empfängt Fortschrittsaktualisierungen und Ergebnis

Echtzeit-Transkription

Die Echtzeit-Transkription funktioniert wie folgt:

  1. Mikrofonaufnahme:
  2. Audio wird mit PyAudio in Chunks aufgenommen (1024 Frames)
  3. PCM 16-bit Format, 16 kHz Abtastrate (konfigurierbar)
  4. Chunks werden über WebSocket an den Server gesendet

  5. Stream-Transkription:

  6. FFmpeg wird serverseitig verwendet um Audio zu extrahieren
  7. Audio wird an das Transkriptionsmodell weitergeleitet
  8. Ergebnisse werden als JSON-Segmente zurückgesendet

  9. Ausgabe:

  10. Segmente werden sofort ausgegeben
  11. Zeilenumbrüche nach ca. 80 Zeichen
  12. Flush nach jedem Segment für sofortige Anzeige

Fehlerbehebung

"No module named 'asr_service'"

Stellen Sie sicher, dass das ASR-Service-Paket installiert ist:

uv pip install -e packages/asr_service

"File not found"

Überprüfen Sie, ob der angegebene Dateipfad korrekt ist. Verwenden Sie absolute oder relative Pfade.

"No input device matching..."

Führen Sie am-cli list-mic aus um verfügbare Mikrofone zu sehen und verwenden Sie den korrekten Index oder Namen.

WebSocket-Verbindungsfehler

Stellen Sie sicher, dass: - Der ASR-Service läuft - Die Konfiguration korrekt ist (Host, Port) - Keine Firewall die Verbindung blockiert

Stream-Verbindungsprobleme

Überprüfen Sie: - URL-Format ist korrekt - Stream-Server ist erreichbar - FFmpeg ist installiert (für Stream-Verarbeitung) - Bei SRT: FFmpeg wurde mit libsrt-Unterstützung kompiliert


Beispiel-Workflows

Workflow 1: Lokale Datei transkribieren

# 1. Datei transkribieren
am-cli transcribe-file /pfad/zur/interview.mp3

# Ergebnis wird ausgegeben wenn fertig

Workflow 2: Meeting in Echtzeit transkribieren

# 1. Verfügbare Mikrofone auflisten
am-cli list-mic

# 2. Mit gewünschtem Mikrofon transkribieren
am-cli transcribe-mic --mic 1

# 3. Meeting starten und sprechen
# 4. Mit Strg+C beenden

Workflow 3: IP-Kamera-Audio transkribieren

# RTSP-Stream von IP-Kamera transkribieren
am-cli transcribe-rtsp rtsp://192.168.1.100:554/stream

Workflow 4: Online-Radio transkribieren

# HLS-Stream von Online-Radio transkribieren
am-cli transcribe-hls http://radio.example.com/stream/playlist.m3u8

Weitere Informationen