CLI-Referenz

Die speech-Binary ist der zentrale Einstiegspunkt für alle Sprachverarbeitungs-Aufgaben. Baue mit make build und führe sie dann aus .build/release/speech aus.

transcribe

Transkribiere Audiodateien zu Text.

speech transcribe <file> [options]
OptionStandardBeschreibung
<file>Zu transkribierende Audiodatei (WAV, M4A, MP3, CAF)
--engineqwen3ASR-Engine: qwen3, qwen3-coreml, parakeet, nemotron oder omnilingual
--model, -m0.6BModellvariante: 0.6B, 1.7B oder vollständige HuggingFace-Modell-ID (nur qwen3)
--languageSprachhinweis (optional, wird von omnilingual ignoriert)
--window10[omnilingual] CoreML-Fenstergröße in Sekunden: 5 oder 10
--backendcoreml[omnilingual] Backend: coreml (Neural Engine) oder mlx (Metal-GPU)
--variant300M[omnilingual mlx] Größe: 300M, 1B, 3B oder 7B
--bits4[omnilingual mlx] Quantisierungs-Bits: 4 oder 8
--streamStreaming-Transkription mit VAD aktivieren
--max-segment10Maximale Segmentdauer in Sekunden (Streaming)
--partialTeilergebnisse während der Spracheingabe ausgeben (Streaming)

Beispiele:

# Basic transcription
speech transcribe recording.wav

# Use larger model
speech transcribe recording.wav --model 1.7B

# CoreML encoder (Neural Engine + MLX decoder)
speech transcribe recording.wav --engine qwen3-coreml

# Use Parakeet (CoreML) engine
speech transcribe recording.wav --engine parakeet

# Use Nemotron Streaming (CoreML, English with native punctuation)
speech transcribe recording.wav --engine nemotron                                 # batch
speech transcribe recording.wav --engine nemotron --stream --partial              # streaming

# Omnilingual (CoreML, 1,672 languages)
speech transcribe recording.wav --engine omnilingual                              # 10 s window
speech transcribe recording.wav --engine omnilingual --window 5                     # 5 s window

# Omnilingual (MLX, any length up to 40 s)
speech transcribe recording.wav --engine omnilingual --backend mlx                              # 300M @ 4-bit
speech transcribe recording.wav --engine omnilingual --backend mlx --variant 1B                  # 1B @ 4-bit
speech transcribe recording.wav --engine omnilingual --backend mlx --variant 3B --bits 8         # 3B @ 8-bit
speech transcribe recording.wav --engine omnilingual --backend mlx --variant 7B                  # 7B @ 4-bit

# Streaming with VAD
speech transcribe recording.wav --stream --partial

align

Wortgenaues Forced Alignment — erhalte präzise Zeitstempel für jedes Wort.

speech align <file> [options]
OptionStandardBeschreibung
<file>Audiodatei
--text, -tZu alignierender Text (wenn nicht angegeben, wird zuerst transkribiert)
--model, -m0.6BASR-Modell zur Transkription: 0.6B, 1.7B oder vollständige ID
--aligner-modelModell-ID des Forced Aligners
--languageSprachhinweis

Beispiele:

# Auto-transcribe then align
speech align recording.wav

# Align with known text
speech align recording.wav --text "Can you guarantee that the replacement part will be shipped tomorrow?"

speak

Text-zu-Sprache-Synthese.

speech speak "<text>" [options]
OptionStandardBeschreibung
<text>Zu synthetisierender Text (optional bei Verwendung von --batch-file)
--engineqwen3TTS-Engine: qwen3 oder cosyvoice
--output, -ooutput.wavPfad der ausgegebenen WAV-Datei
--languageenglishSprache. Weglassen, um den nativen Dialekt des Sprechers zu verwenden, wenn --speaker gesetzt ist.
--streamStreaming-Synthese aktivieren
--voice-sampleReferenzaudio für Stimmklonen (funktioniert sowohl mit qwen3- als auch mit cosyvoice-Engines)
--verboseDetaillierte Zeitinformationen anzeigen

Qwen3-TTS-Optionen

OptionStandardBeschreibung
--modelbaseModellvariante: base, customVoice oder vollständige HF-Modell-ID
--speakerSprecher-Stimme (erfordert --model customVoice)
--instructStilanweisung (CustomVoice-Modell)
--list-speakersVerfügbare Sprecher auflisten und beenden
--temperature0.3Sampling-Temperatur
--top-k50Top-k-Sampling
--max-tokens500Maximale Tokens (500 = ~40 s Audio)
--batch-fileDatei mit einem Text pro Zeile für Batch-Synthese
--batch-size4Maximale Batch-Größe für parallele Generierung
--first-chunk-frames3Codec-Frames im ersten gestreamten Chunk
--chunk-frames25Codec-Frames pro gestreamtem Chunk

CosyVoice3-Optionen

OptionStandardBeschreibung
--speakersSprecher-Mapping für Mehrsprecher-Dialog: s1=alice.wav,s2=bob.wav
--cosy-instructStilanweisung (überschreibt Standard). Steuert den Stimm-Stil für CosyVoice3.
--turn-gap0.2Pause zwischen Dialog-Turns in Sekunden
--crossfade0.0Crossfade-Überlappung zwischen Turns in Sekunden
--model-idHuggingFace-Modell-ID

Beispiele:

# Basic TTS
speech speak "Hello, world!" --output hello.wav

# Voice cloning (Qwen3-TTS)
speech speak "Hello in your voice" --voice-sample reference.wav -o cloned.wav

# Voice cloning (CosyVoice)
speech speak "Hello in your voice" --engine cosyvoice --voice-sample reference.wav -o cloned.wav

# CosyVoice multilingual
speech speak "Hallo Welt" --engine cosyvoice --language german -o hallo.wav

# Multi-speaker dialogue
speech speak "[S1] Hello there! [S2] Hey, how are you?" \
    --engine cosyvoice --speakers s1=alice.wav,s2=bob.wav -o dialogue.wav

# Inline emotion/style tags
speech speak "(excited) Wow, amazing! (sad) But I have to go..." \
    --engine cosyvoice -o emotion.wav

# Combined: dialogue + emotions + voice cloning
speech speak "[S1] (happy) Great news! [S2] (surprised) Really?" \
    --engine cosyvoice --speakers s1=alice.wav,s2=bob.wav -o combined.wav

# Custom style instruction
speech speak "Hello world" --engine cosyvoice --cosy-instruct "Speak cheerfully" -o cheerful.wav

# Streaming synthesis
speech speak "Long text here..." --stream

# Batch synthesis from file
speech speak --batch-file texts.txt --batch-size 4

kokoro

Leichtgewichtige Text-zu-Sprache-Synthese mit Kokoro-82M auf der Neural Engine (CoreML). Nicht-autoregressiv — ein einziger Forward-Pass, ~45 ms Latenz.

speech kokoro "<text>" [options]
OptionStandardBeschreibung
<text>Zu synthetisierender Text
--voiceaf_heartStimmvoreinstellung (50 verfügbar in 10 Sprachen)
--languageenSprachcode: en, es, fr, hi, it, ja, pt, zh, ko, de
--output, -okokoro_output.wavPfad der ausgegebenen WAV-Datei
--list-voicesAlle verfügbaren Stimmen auflisten und beenden
--model, -mHuggingFace-Modell-ID

Beispiele:

# Basic Kokoro TTS
speech kokoro "Hello, world!" --voice af_heart -o hello.wav

# French voice
speech kokoro "Bonjour le monde" --voice ff_siwis --language fr -o bonjour.wav

# List all 50 voices
speech kokoro --list-voices

respond

Vollduplex-Sprache-zu-Sprache-Dialog mit PersonaPlex 7B.

speech respond [options]
OptionStandardBeschreibung
--input, -iEingabe-WAV-Datei (24 kHz Mono) (erforderlich)
--output, -oresponse.wavAusgabe-WAV-Datei der Antwort
--voiceNATM0Stimmvoreinstellung (z. B. NATM0, NATF1, VARF0)
--system-promptassistantVoreinstellung: assistant, focused, customer-service, teacher
--system-prompt-textEigener System-Prompt-Text (überschreibt Voreinstellung)
--max-steps200Maximale Generierungsschritte bei 12,5 Hz (~16 s)
--streamAudio-Chunks während der Generierung ausgeben
--compileKompilierten Transformer aktivieren (Warmup + Kernel-Fusion)
--list-voicesVerfügbare Stimmvoreinstellungen auflisten
--list-promptsVerfügbare System-Prompt-Voreinstellungen auflisten
--transcriptInneren Monolog des Modells als Text ausgeben
--jsonAusgabe als JSON (Transkript, Latenz, Audio-Pfad)
--verboseDetaillierte Zeitinformationen anzeigen

Sampling-Überschreibungen

OptionStandardBeschreibung
--audio-temp0.8Audio-Sampling-Temperatur
--text-temp0.7Text-Sampling-Temperatur
--audio-top-k250Audio-Top-k-Kandidaten
--repetition-penalty1.2Audio-Wiederholungspenalty (1.0 = deaktiviert)
--text-repetition-penalty1.2Text-Wiederholungspenalty (1.0 = deaktiviert)
--repetition-window30Wiederholungspenalty-Fenster in Frames
--silence-early-stop15Stille-Frames vor frühem Abbruch (0 = deaktiviert)
--entropy-threshold0Text-Entropie-Schwelle für frühen Abbruch (0 = deaktiviert)
--entropy-window10Aufeinanderfolgende Schritte mit niedriger Entropie vor frühem Abbruch

Beispiele:

# Basic speech-to-speech
speech respond --input question.wav

# Use a female voice with compiled transformer
speech respond -i question.wav --voice NATF1 --compile

# Stream response and show transcript
speech respond -i question.wav --stream --transcript --verbose

vad

Offline-Sprachaktivitätserkennung mit Pyannote-Segmentierung.

speech vad <file> [options]
OptionBeschreibung
<file>Zu analysierende Audiodatei
--model, -mHuggingFace-Modell-ID
--onsetOnset-Schwelle (Sprachbeginn)
--offsetOffset-Schwelle (Sprachende)
--min-speechMinimale Sprachdauer in Sekunden
--min-silenceMinimale Stille-Dauer in Sekunden
--jsonAusgabe als JSON

vad-stream

Streaming-Sprachaktivitätserkennung mit Silero VAD v5. Verarbeitet Audio in 32-ms-Chunks.

speech vad-stream <file> [options]
OptionBeschreibung
<file>Zu analysierende Audiodatei
--engineVAD-Engine: mlx (Standard) oder coreml
--model, -mHuggingFace-Modell-ID (automatisch je nach Engine)
--onsetOnset-Schwelle
--offsetOffset-Schwelle
--min-speechMinimale Sprachdauer in Sekunden
--min-silenceMinimale Stille-Dauer in Sekunden
--jsonAusgabe als JSON

wake

Schlüsselworterkennung auf dem Gerät mit dem KWS Zipformer (3,49 Mio. Parameter, CoreML INT8, 26× Echtzeit, nur Englisch).

speech wake <file> [options]
OptionBeschreibung
<file>Zu analysierende Audiodatei
--keywordsEin oder mehrere Schlüsselwörter. Formate: "hey soniqo", "hey soniqo:0.15:0.5" oder "LIGHT UP|▁ L IGHT ▁UP:0.25:2.0" (sherpa-onnx-Stil mit expliziten BPE-Stücken)
--keywords-fileSchlüsselwortdatei, ein Eintrag pro Zeile
--model, -mHuggingFace-Modell-ID. Standard: aufklarer/KWS-Zipformer-3M-CoreML-INT8
--jsonAusgabe als JSON

diarize

Sprecherdiarisierung — identifiziert, wer wann gesprochen hat.

speech diarize <file> [options]
OptionStandardBeschreibung
<file>Zu analysierende Audiodatei
--enginepyannoteDiarisierungs-Engine: pyannote (Segmentierung + Sprecher-Clustering) oder sortformer (durchgängiges CoreML)
--target-speakerEnrollment-Audio zur Zielsprecher-Extraktion (nur pyannote)
--embedding-enginemlxSprechereinbettungs-Engine: mlx oder coreml (nur pyannote)
--vad-filterMit Silero VAD vorfiltern (nur pyannote)
--rttmAusgabe im RTTM-Format
--jsonAusgabe als JSON
--score-againstRTTM-Referenzdatei zur DER-Berechnung

Beispiele:

# Basic diarization (pyannote, default)
speech diarize meeting.wav

# End-to-end Sortformer (CoreML, Neural Engine)
speech diarize meeting.wav --engine sortformer

# RTTM output for evaluation
speech diarize meeting.wav --rttm

# Target speaker extraction (pyannote only)
speech diarize meeting.wav --target-speaker enrollment.wav

# Score against reference
speech diarize meeting.wav --score-against reference.rttm

embed-speaker

Extrahiert einen Sprechereinbettungs-Vektor aus Audio.

speech embed-speaker <file> [options]
OptionBeschreibung
<file>Audiodatei mit der Stimme des Sprechers
--engineInferenz-Engine: mlx (Standard), coreml (WeSpeaker 256-dim) oder camplusplus (CAM++ CoreML 192-dim)
--jsonAusgabe als JSON

denoise

Entfernt Hintergrundgeräusche mit DeepFilterNet3 auf der Neural Engine.

speech denoise <file> [options]
OptionStandardBeschreibung
<file>Eingabe-Audiodatei
--output, -oinput_clean.wavAusgabe-Dateipfad
--model, -mHuggingFace-Modell-ID

Beispiel:

speech denoise noisy-recording.wav -o clean.wav

compose

Generate 30 s of music from a text prompt using MAGNeT on MLX.

speech compose <prompt> [options]
OptionDefaultDescription
<prompt>Text prompt describing the music to generate (e.g. "happy rock")
--output, -omagnet.wavOutput WAV path (32 kHz mono)
--variantsmall-int4Model variant: small-int4, small-int8, medium-int4, or medium-int8. Resolves to aufklarer/MAGNeT-{Small,Medium}-30secs-MLX-{4,8}bit.
--temperature3.0Sampling temperature, annealed linearly per stage.
--top-p0.9Nucleus sampling threshold.
--cfg-max10.0Max classifier-free guidance coefficient.
--cfg-min1.0Min CFG coefficient (annealed alongside the mask schedule).
--steps20,10,10,10Comma-separated decoding iterations per codebook (4 values).
--seedRandom seed for reproducible output.

Examples:

# Default: small-int4, ~10 s wall on M-series for a 30 s clip
speech compose "happy rock" -o happy_rock.wav

# Larger model — better prompt following, slower
speech compose "lo-fi hip hop with mellow piano" --variant medium-int4 -o lofi.wav

# Reproducible
speech compose "energetic EDM with synth lead" --seed 42 -o edm.wav