⚠ Translation out of date. See the English CLI reference for Nemotron 3 support.
⚠ Übersetzung veraltet

Die neuesten Informationen zu VoiceChat-Werkzeugaufrufen und Leistung finden Sie in der englischen Version.

CLI-Referenz

Breeze TTS 2 · BreezeTTS

Englische und chinesische Sprachsynthese mit Stimmdesign, Klonen und Steuerung einer Referenzstimme sowie Audiostreaming (MLX BF16/8-bit, 24 kHz; nur Forschung und nichtkommerzielle Nutzung).

BreezeTTS · CLI · Swift API

speech speak "The quick brown fox jumps over the lazy dog." --engine breeze \
  --instruct "A clear, calm English narrator." --stream -o design.wav
  • --breeze-model-id: aufklarer/Breeze-TTS-2-MLX-8bit
  • --breeze-bundle-dir
  • --breeze-cache-limit-mib: Optionales prozessweites Limit für wiederverwendbaren MLX-Cache in MiB; 0 deaktiviert den Cache.
  • --breeze-reference-text
  • --breeze-temperature: 0.9
  • --breeze-top-k: 50
  • --breeze-top-p: 1
  • --breeze-cfg-scale: 4
  • --breeze-max-frames: 750
  • --breeze-seed: 42
  • --first-chunk-frames: 3
  • --chunk-frames: 25

Native Laufzeit für Apple · PocketTTS

PocketTTS ergänzt speech-swift um native CoreML-Sprachausgabe. Alle Stufen verwenden standardmäßig nur die CPU. Die englische Stimme Alba liefert jeweils 1.920 Samples mit 24 kHz, also 80 ms pro Audioblock.

Verwendung mit Swift und CLI

speech speak "Hello world." --engine pocket --stream \
  --pocket-bundle-dir /path/to/bundle --pocket-seed 42 -o hello.wav
# --pocket-model-id, --pocket-max-frames, --list-speakers

Der Befehl speech ist der Einstiegspunkt für die lokale Sprachverarbeitung.

Mit Homebrew installieren

Installiere die CLI auf einem Mac mit Apple Silicon und macOS 15 oder neuer über Homebrew:

brew install speech
speech --help

Um eine vorhandene Installation zu aktualisieren, führe brew upgrade speech aus.

Alternative: aus dem Quellcode bauen

Führe in einer lokalen Kopie von speech-swift den Befehl make build aus und verwende anschließend .build/release/speech. Voraussetzungen und Bauanleitung findest du in der Einstiegsanleitung.

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, omnilingual, cohere, voxtral, moss, whisper
--model, -m0.6BModellvariante: 0.6B, 1.7B oder vollständige HuggingFace-Modell-ID (nur qwen3) [whisper]: default, turbo, or full CoreML HuggingFace repo ID.
[cohere/voxtral]: INT5 (Standard), INT8, FP16, eine Hugging-Face-Modell-ID oder ein lokales Verzeichnis. [moss coreml]: int8 (Standard) oder fp16; [moss mlx]: int5 (Standard) oder int8. Auch eine kompatible Hugging-Face-Repository-ID oder ein lokales Verzeichnis wird akzeptiert.
--max-tokensCoreML: 512
MLX: 5120
[moss] Maximale Anzahl erzeugter Transkript-Tokens.
--kv-cachefp16[moss mlx] Präzision des dynamischen KV-Caches: fp16 oder int8.
--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)
[moss] CoreML nutzt einen festen 1.024-Token-Zustand; MLX bietet einen dynamischen Kontext mit 131.072 Tokens.
--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

# Cohere Transcribe 2B (MLX, standardmäßig INT5)
speech transcribe recording.wav --engine cohere
speech transcribe recording.wav --engine cohere --model int8 --language de

# Voxtral Mini 3B (MLX, standardmäßig INT5)
speech transcribe recording.wav --engine voxtral
speech transcribe recording.wav --engine voxtral --model int8 --language fr

# MOSS Transcribe Diarize (CoreML, Kurzform)
speech transcribe recording.wav --engine moss
speech transcribe recording.wav --engine moss --model fp16

# MOSS Transcribe Diarize (MLX, 128K Offline-Kontext; INT5 als Standard)
speech transcribe meeting.wav --engine moss --backend mlx
speech transcribe meeting.wav --engine moss --backend mlx --model int8 --kv-cache int8

# Whisper Large-v3 Turbo (CoreML)
speech transcribe recording.wav --engine whisper
speech transcribe recording.wav --engine whisper --model turbo --language de

# 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, cosyvoice, voxcpm2, indextts2, f5, higgs, breeze, indic-mio, magpie oder magpie-coreml, moss-nano, fireredtts3, moss-voicegenerator
--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 mit qwen3, cosyvoice, voxcpm2, f5, higgs und indextts2)
--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

IndexTTS2-Optionen

IndexTTS2 ist eine Zero-Shot-Stimmklon-Engine mit erweitertem MLX-Bundle. Sie benötigt --voice-sample und läuft derzeit nur als Batch-Synthese.

OptionStandardBeschreibung
--indextts2-model-idaufklarer/IndexTTS2-MLX-fp16HuggingFace-Modell-ID. Standard ist aufklarer/IndexTTS2-MLX-fp16.
--indextts2-bundle-dirLädt ein lokales erweitertes Bundle statt von Hugging Face herunterzuladen.
--indextts2-emotion-audioOptionales Referenzaudio für Emotion/Stil. Standard ist die Sprecherreferenz.
--indextts2-emotionOptionales Preset oder 8-Werte-Emotionsvektor. Presets enthalten eager, happy, excited und calm.
--indextts2-emotion-weight1.0Skaliert --indextts2-emotion; moderat halten, wenn Sprecheridentität wichtig ist.
--indextts2-speaking-rate1.0Sprechgeschwindigkeitsfaktor von 0.5 bis 1.5; Werte über 1.0 sind schneller.
--indextts2-max-pauseOptionales Limit für lange interne leise Pausen in Sekunden.
--indextts2-s2mel-steps15S2Mel-Flow-Schritte (Standard 15, hörvalidiert; 25 entspricht exakt dem Upstream)

F5-TTS Options

OptionStandardBeschreibung
--f5-reference-textReferenztranskript: der Textinhalt von --voice-sample (erforderlich)
--f5-steps16Flow-Matching-Schritte (Standard 16; 32 für maximale Treue)
--f5-cfg-strength2.0Stärke der Classifier-Free Guidance
--f5-sway-1.0Sway-Sampling-Koeffizient
--f5-speed1.0Sprechtempo-Faktor
--f5-seed0Seed für deterministische Ausgabe
--f5-target-rms0.1RMS-Normalisierungsziel der Referenz
--f5-model-idHugging-Face-Modell-ID
--f5-bundle-dirBundle aus diesem lokalen Verzeichnis laden

Higgs TTS 3 Options

OptionStandardBeschreibung
--higgs-ref-textReferenztranskript: der Textinhalt von --voice-sample (verbessert das Cloning)
--higgs-temperature0.8Sampling-Temperatur (Standard 0.8)
--higgs-top-pNucleus-Sampling-Schwelle (standardmäßig aus)
--higgs-top-kTop-k-Sampling-Grenze (standardmäßig aus)
--higgs-max-new-tokens2048Maximal erzeugte Audioframes (25 pro Sekunde)
--higgs-seed0Seed für deterministische Ausgabe
--higgs-model-idHugging-Face-Modell-ID
--higgs-bundle-dirBundle aus diesem lokalen Verzeichnis laden

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

# Voice cloning (IndexTTS2)
speech speak "Hello in your voice" --engine indextts2 \
    --voice-sample reference.wav --indextts2-speaking-rate 1.35 \
    --indextts2-max-pause 0.05 -o indextts2.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

Optionen für anweisungsgesteuertes TTS

Experimentell: Die native SDK-Unterstützung aus dem main-Quellcode bauen. Homebrew und andere vorgefertigte CLI-Versionen enthalten diese Engines möglicherweise noch nicht.

Implementierung (PR #541): main

Veröffentlichte MLX-Bundles: aufklarer/FireRedTTS3-Instruct-MLX-fp32 · aufklarer/MOSS-VoiceGenerator-MLX-bf16

Ein Textargument, --instruct und genau ein Bundle-Verzeichnis oder eine kompatible Modell-ID sind erforderlich. Referenzaudio, feste Sprecher und Batch-Eingaben werden nicht unterstützt.

Text und Anweisung sind jeweils auf 32.768 UTF-8-Bytes begrenzt. Der vollständig gerenderte Eingabeprompt einschließlich Vorlage darf 4.096 Tokens nicht überschreiten. Eingaben oberhalb einer dieser Grenzen werden abgewiesen.

FireRedTTS3-Instruct behält Float32-Modell- und Decodergewichte. Audio wird vollständig gepuffert zurückgegeben: --stream weglassen. --language akzeptiert englische und chinesische Aliase. Ein Generierungslimit führt zu einem Fehler statt zu abgeschnittenem Erfolg.

MOSS-VoiceGenerator behält BF16-Sprachgewichte und den FP32-Synthesecodec. --stream liefert inkrementelles PCM. --language weglassen und Sprachanforderungen in --instruct setzen. Vor Abschluss werden alle sechzehn Codebücher geleert.

Die Anweisungsbefolgung ist unbewertet. Kurztextmessungen beschreiben den getesteten Aufbau; die Latenz-Regressionsprüfung bestehender Modelle bleibt ohne eindeutiges Ergebnis.

OptionStandardBeschreibung
--fireredtts3-bundle-dir—Kompatibles lokal exportiertes Bundle; entweder dieses oder eine Modell-ID wählen.
--fireredtts3-model-id—Veröffentlichte kompatible MLX-Bundle-ID; diese oder ein lokales Verzeichnis wählen.
--fireredtts3-flow-steps10Flow-Schritte je akustischem Patch.
--fireredtts3-max-patches400Generierungsgrenze; vorzeitig erreicht führt sie zu einem Fehler.
--moss-voicegenerator-bundle-dir—Kompatibles lokal exportiertes Bundle; entweder dieses oder eine Modell-ID wählen.
--moss-voicegenerator-model-id—Veröffentlichte kompatible MLX-Bundle-ID; diese oder ein lokales Verzeichnis wählen.
--moss-voicegenerator-max-frames750Generierungsgrenze; vorzeitig erreicht führt sie zu einem Fehler.
--moss-voicegenerator-chunk-frames3Vollständige Codec-Frames je PCM-Chunk (1–32).
--seed2 / 42Request-Seed: FireRedTTS3 standardmäßig 2, MOSS-VoiceGenerator 42.

FireRedTTS3-Instruct · MOSS-VoiceGenerator

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

voice-chat

Live-Vollduplexgespräch mit Soniqo auf Basis von NVIDIA Nemotron VoiceChat 11B. Das voreingestellte protected-head INT5-Bundle wird beim ersten Start geladen; der Mikrofonmodus bietet Apple AEC, gestreamte RNN-T-Untertitel, verständliche Echtzeitmetriken, adaptive 8→2→1-Schritt-Sprachverfeinerung und begrenzte Eingabe-Neusynchronisierung statt langer stiller Aufholphasen.

speech voice-chat [options]
OptionStandardBeschreibung
--model, -maufklarer/VoiceChat-11B-Perception-MLX-int5Hugging-Face-Modell-ID oder vollständiges lokales Bundle.
--revisionmainHub-Revision.
--system-promptSystem-Prompt überschreiben.
--mcp-configAnbieterneutrale JSON-Konfiguration für MCP-Werkzeugserver.
--mcp-serveralle konfiguriertenEinen Server auswählen; wiederholbar.
--mcp-write-policyallowSchreibregel: sofortiges allow, modellvermitteltes confirm oder deny.
--mcp-timeout-seconds15Timeout für MCP-Werkzeugaufrufe; der Serverstart erhält mindestens 60 Sekunden.
--greetModell zuerst grüßen lassen.
--no-aecApple-AEC deaktivieren.
--no-transcriptLive-RNN-T-Nutzeruntertitel deaktivieren.
--no-rnnt-turn-takingNVIDIAs RNN-T-Sicherheitsfallbacks für Turn-Taking deaktivieren.
--prebuffer-frames3Vor Wiedergabe gepufferte 80-ms-Ausgabeframes.
--max-buffered-frames8Maximale Zahl wartender 80-ms-Mikrofonframes vor dem Verwerfen alten Audios.
--max-secondsLive-Aufnahme nach dieser Sekundenzahl stoppen.
--inputAudiodatei statt Mikrofon lesen.
--output, -oVollständige 22,05-kHz-WAV schreiben.
--tail-seconds6Stille nach der Dateieingabe.
--force-turn-at-endBOS am Dateiende erzwingen; nur Regression.
--plainFortlaufende Ausgabe statt des fest neu gezeichneten Dashboards verwenden.
--debug-timelineRelative Zeitstempel für Äußerungen und das Ende der erzeugten Aussprache sowie vom Modell dekodierte Lebenszyklusereignisse von Tool-Aufrufen anzeigen.
--terminal-width120Breite der Terminalanzeige.
--temperature0Texttemperatur; 0 ist greedy.
--text-top-p1Text-top-p.
--guidance0.2EAR-TTS-Guidance-Stärke.
--speech-top-p0.95EAR-TTS-top-p.
--speech-noise0.001EAR-TTS-Sampling-Rauschen.
--speech-iterations8EAR-TTS-MaskGIT-Iterationen pro Frame.
--realtime-speech-iterations2Vorübergehende Sprachverfeinerung zum Schutz der Echtzeitgeschwindigkeit.
--live-speech-context-seconds20Im Live-Modus beibehaltene aktuelle EAR-TTS-Historie; 0 behält den gesamten Verlauf.

Beispiele:

speech voice-chat

speech voice-chat --model /path/to/complete-bundle --prebuffer-frames 3

speech voice-chat --input question.wav --output response.wav

speech voice-chat --mcp-config Examples/VoiceChatMCP/apple-reminders.json

Der Dateimodus ist der reproduzierbare Pfad ohne Audiohardware. --force-turn-at-end ist nur für kontrollierte Regressionstests gedacht und darf nicht als natürliche Sprecherwechsel-Latenz angegeben werden.

Die Apple-Reminders-Demo stellt nur list_reminders, create_reminder und update_reminder bereit; die Listenermittlung bleibt im Adapter. Ein flacher Leseaufruf deckt alle Listen ab, und Aktualisierungen lösen den gesprochenen Namen intern in eine private ID auf. Das Dashboard zeigt Zeit, Token-Schritte und Token/s der Funktionsdekodierung getrennt vom Audio-RTF.

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
--smart-turnBestätigt jede Pause mit Smart Turn, bevor ein Segment endet; Pausen mitten im Satz werden zu einem Segment zusammengefasst
--turn-thresholdSmart-Turn-Abschlussschwelle (Standard 0.5)
--turn-max-silenceSekunden Stille nach einer abgelehnten Pause, nach denen das Segment trotzdem endet (Standard 2.0)

turn

Turn-Ende-Erkennung mit Smart Turn v3.2 (8M Parameter, CoreML, 23 Sprachen). Bewertet die letzten 8 s einer aufgezeichneten Äußerung und gibt die Wahrscheinlichkeit, dass die Person zu Ende gesprochen hat, das Urteil abgeschlossen / nicht abgeschlossen und die Inferenzzeit aus.

speech turn <file> [options]
OptionBeschreibung
<file>Audiodatei mit einem Nutzer-Turn (beliebige Abtastrate); verwendet werden die letzten 8 s
--thresholdWahrscheinlichkeit, ab der der Turn als abgeschlossen gilt (Standard 0.5)
--model, -mHuggingFace-Modell-ID. Standard aufklarer/Smart-Turn-v3.2-CoreML
--model-dirLokales Verzeichnis mit smart_turn.mlmodelc und config.json; überspringt den Download
--jsonAusgabe als JSON
# Probability, verdict and inference time for one utterance
speech turn utterance.wav

# Custom threshold, JSON output
speech turn utterance.wav --threshold 0.7 --json

# Streaming VAD with Smart Turn confirming each pause
speech vad-stream call.wav --smart-turn --turn-threshold 0.6 --turn-max-silence 1.5

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, community1 (CoreML + natives PLDA/VBx) oder sortformer
--community1-compute-unitsaneCommunity-1 CoreML-Recheneinheiten: ane, cpu, gpu oder all
--num-speakersBekannte genaue Sprecherzahl für Community-1
--min-speakers1Minimale Sprecherzahl für Community-1
--max-speakersMaximale Sprecherzahl für Community-1
--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
--enginemlx (Standard) oder coreml für WeSpeaker 256-dim; redimnet2 für persistente Identität CoreML 192-dim; camplusplus für CAM++ CoreML 192-dim
--jsonAusgabe als JSON

language-id

Erkennt die gesprochene Sprache in einer Audiodatei.

speech language-id <file> [options]
OptionBeschreibung
<file>Zu klassifizierende Audiodatei
--engineInferenz-Engine: mlx oder coreml
--modelHugging-Face-Modell-ID überschreiben
--topAnzahl der Sprachkandidaten
--jsonErgebnis als JSON ausgeben
speech language-id recording.wav --top 5
speech language-id recording.wav --engine coreml --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

transcribe-batch

Transkribiert ein Verzeichnis von Audiodateien; das Modell wird nur einmal geladen.

speech transcribe-batch <input-dir> [options]
OptionStandardBeschreibung
<input-dir>Verzeichnis der zu transkribierenden Audiodateien (WAV, FLAC usw.)
--output-dirAusgabeverzeichnis für die Transkripte
--engineqwen3ASR-Engine (gleiche Werte wie transcribe)
--jsonlAusgabe als JSON Lines, eine pro Datei

restore

Sprachwiederherstellung (Entrauschen + Enthallen) mit Sidon — CoreML, 48-kHz-Ausgabe.

speech restore <audio-file> [options]
OptionStandardBeschreibung
--output, -oinput_restored.wavPfad der WAV-Ausgabedatei (48 kHz)
--variantfp16Präzisions- / Bundle-Variante
--compute-unitsCore ML-Platzierung für beide Stufen: ane, gpu, cpu, all (Standard: Vocoder gpu, Predictor automatisch)

separate

Trennt einen Musiktitel in Stems (vocals, drums, bass, other).

speech separate <input> [options]
OptionStandardBeschreibung
--stemsvocals,drums,bass,otherZu extrahierende Stems: vocals, drums, bass, other
--engineumxEngine: umx (Standard) oder htdemucs (höhere Qualität)
--output-dirAusgabeverzeichnis für die Transkripte

upsample

Audio-Superresolution mit FlashSR — einstufig destilliertes AudioSR, 48-kHz-Ausgabe.

speech upsample <audio-file> [options]
OptionStandardBeschreibung
--output, -ohr.wavPfad der WAV-Ausgabedatei (48 kHz)
--variantint4Präzisions- / Bundle-Variante
--seedSeed für deterministische Ausgabe

qwen3-tts-coreml

Swift unterstützt 0.6B/256- und 1.7B/1024-Bundles; 0.6B bleibt der Standard. Das experimentelle 1.7B-Bundle verwendet standardmäßig die CPU und benötigt über --speaker-embedding ein vorbereitetes Float32-Sprecher-Embedding im Format .npy mit 2048 Kanälen. GPU/ANE und iOS müssen separat validiert werden.

speech qwen3-tts-coreml "<text>" [options]
OptionStandardBeschreibung
--output, -ooutput.wavPfad der WAV-Ausgabedatei
--languageenglishAusgabesprache
--modelHugging-Face-Modell-ID
--model-directory—Lokales kompiliertes Modell-Bundle; hat Vorrang vor dem Download von --model.
--speaker-embedding—Vorbereitetes Float32-Sprecher-Embedding im Format .npy mit passender Modellbreite (1024 oder 2048).

vibevoice

Text-zu-Sprache mit Microsoft VibeVoice (MLX).

speech vibevoice "<text>" --voice-cache <cache> [options]
OptionStandardBeschreibung
--voice-cache, -vVoice-Cache aus vibevoice-encode-voice (erforderlich)
--stepsDPM-Solver-Inferenzschritte (mehr Schritte, bessere Qualität)
--cfg1.3Stärke der Classifier-Free Guidance
--long-formLangform-Synthese in Abschnitten für lange Texte

vibevoice-encode-voice

Erzeugt einen VibeVoice-Voice-Cache aus Referenzaufnahme plus Transkript.

speech vibevoice-encode-voice <input> "<transcript>" [options]
OptionStandardBeschreibung
<input>Referenz-Audiodatei
<transcript>Transkript des Referenzaudios (nur Englisch)
--output, -oAusgegebener Voice-Cache (.safetensors)

translate

Übersetzt Text mit MADLAD-400 in eine Zielsprache (MLX).

speech translate "<text>" --to <lang> [options]
OptionStandardBeschreibung
--to, -tZielsprachcode (ISO 639-1, z. B. es, zh, ja)
--streamTokens beim Dekodieren streamen
--modelHugging-Face-Modell-ID

⚠ Translation out of date — the Clef CLI section awaits translation. English reference.

clef

Choose from allowed answers using Clef-flash locally on Apple Silicon. Development preview.

speech clef decide request.json
speech clef decide request.json --model-dir /path/to/Clef-flash-9B-MLX-4bit
speech clef decide request.json --offline --max-tokens 4096

The request contains text in state and an ordered questions array. Each field has an id and a type: choice with a choices map, noul for true/false, or score with ordered levels. Output is JSON with probabilities, selected answers, token count, model-load time, and decision time.

By default, the command downloads aufklarer/Clef-flash-9B-MLX-4bit. Use --model-dir for existing files or --offline for the cache. The token limit defaults to 4096 and accepts 1–16384. See the Clef guide for a complete request and measured memory use.

gliner

Textklassifikation nach vorgegebenen Labels und Entitätsextraktion mit GLiNER2.5-Decide (MLX). Entwicklungsvorschau: noch in keinem Release enthalten. Ohne Text wird von stdin gelesen.

speech gliner classify "<text>" --labels <a,b,c> [options]
speech gliner extract "<text>" --labels <a,b,c> [options]
OptionStandardBeschreibung
--variantint8Zu ladende veröffentlichte Gewichte: fp32, fp16 oder int8
--modelAbweichendes Hugging-Face-Repository
--model-dirLokales Modellverzeichnis statt Download
--labelsKommagetrennte Kandidaten-Labels (1 bis 255, eindeutig)
--descriptionLabel-Beschreibung als label=text; mehrfach angebbar
--taskactionAufgabenname im Schema-Prompt (nur classify)
--threshold0.5Mindestscore für Spans (nur extract)
--evaluate-layersEncoder-Schichten einzeln auswerten, um den Spitzenspeicher zu senken
--jsonJSON-Ausgabe mit allen Wahrscheinlichkeiten bzw. Spans mit UTF-16-Offsets und Laufzeiten

avatar-motion

Erzeugt NVIDIA-Audio2Face-3D-Koeffizientenframes für Avatarbewegung aus Sprachaudio.

speech avatar-motion <input> [options]
OptionStandardBeschreibung
--output, -oavatar-motion.jsonlPfad der JSONL-Ausgabedatei
--model…James-MLXAvatar-Identitäts-Bundle (Standard James; Claire und Mark verfügbar)
--verboseTiming und Frame-Anzahl ausgeben

MOSS-TTS-Nano

--voice-sample klont eine Stimme ohne Referenztranskript. Mono-Referenzen werden zu Stereo dupliziert, auf 48 kHz resampelt und auf volle 80 ms aufgefüllt. Eine Referenz einmal kodieren und ihre Codes für weitere Anfragen wiederverwenden.

speech speak "Hello world." --engine moss-nano -o hello.wav
speech speak "The weather is nice today." --engine moss-nano \
  --voice-sample reference.wav --moss-nano-seed 1 -o cloned.wav
speech speak "Hello world." --engine moss-nano --stream --play -o streamed.wav
--moss-nano-modelaufklarer/MOSS-TTS-Nano-100M-CoreMLModell-Repository oder lokales Verzeichnis
--moss-nano-compute-unitscpucpu oder gpu
--moss-nano-max-frames300Maximale 80-ms-Frames; natürliches Ende erforderlich
--moss-nano-seed0Reproduzierbarer Swift-Sampling-Seed

MOSS-TTS-Nano

Voxtral TTS

Voxtral 4B TTS 2603 läuft über das Modul VoxtralTTS lokal auf Apple Silicon: 20 voreingestellte Stimmen, neun Sprachen und Mono-Sprache mit 24 kHz.

speech speak "Hello, welcome to Voxtral." --engine voxtral --voxtral-voice casual_male --stream --voxtral-chunk-frames 3 -o hello.wav
speech speak --engine voxtral --list-speakers
speech speak "Bonjour." --engine voxtral --voxtral-voice fr_female --voxtral-max-frames 500 --voxtral-seed 0 -o bonjour.wav

Nur vorgegebene Stimmen; das Klonen anhand von Referenzaudio ist nicht verfügbar. SDK, CLI, WebSocket und HTTP PCM geben Audio während der Erzeugung aus. Der Eingabetext muss zu Beginn vollständig vorliegen. Die Modellgewichte stehen unter CC BY-NC 4.0.

Voxtral-TTS-Anleitung lesen

Fish Audio Drama 3

Experimentelle native MLX-Unterstützung für Drama 3 steht über FishAudioDrama3Model bereit. Ein MoE-Modell mit 35 Milliarden Parametern, hybrider Aufmerksamkeit, zeitlichem Audiodecoder und Fish DAC erzeugt Mono-Audio mit 44,1 kHz. Der 4-Bit-Checkpoint bestand auf Apple M5 Pro die Audio- und unabhängigen ASR-Tests für Spracherzeugung aus Text, Stimmklonen mit Referenz und CLI-Ausgabe. 8-Bit und BF16 sind noch ungeprüft.

Der Speichermodus balanced ist voreingestellt. Ungenutzte MLX-Puffer werden an Phasengrenzen freigegeben, wenn der Cache 512 MiB überschreitet; das ist keine Grenze für den Gesamtspeicher. Globale Speichergrenzen bleiben unverändert. Mit --fish-drama3-memory-mode unrestricted oder memoryOptions: .unrestricted werden alle Gewichte vorab geladen und das bisherige Cache-Verhalten verwendet.

Bei reiner Textsynthese werden 794.4 MiB Referenzencoder-Gewichte erst später geladen. Die erste Referenzkodierung lädt und behält sie; halten Sie codec.safetensors bis dahin verfügbar. Vorab berechnete Referenzcodes benötigen den Encoder nicht.

Übergeben Sie den vollständigen Text. Stimmklonen erfordert eine Referenzaufnahme und deren exaktes Transkript. Sprecher-Tags 0–15 und Emotionsangaben im Text werden unterstützt. PCM-Streaming ist über generateStreaming, generateStream und --stream verfügbar. Ein Chunk enthält standardmäßig 3 Codec-Frames, etwa 139 ms Audio. Automatische Aufteilung langer Texte und schrittweise Texteingabe werden noch nicht unterstützt. Bei Erreichen des Frame-Limits wird ein Fehler ausgelöst.

speech speak "Hello from Drama 3." --engine fish-drama3 --fish-drama3-bundle-dir /path/to/bundle -o hello.wav
speech speak "Hello from Drama 3." --engine fish-drama3 --stream --fish-drama3-chunk-frames 3 -o streamed.wav
speech speak "Hello in the reference voice." --engine fish-drama3 --voice-sample reference.wav --fish-drama3-reference-text "The exact reference transcript." --seed 42 -o cloned.wav
import FishAudioTTS
let model = try await FishAudioDrama3Model.fromBundle(bundleURL, memoryOptions: .balanced)
let pcm = try await model.generate(text: "Hello from Drama 3.", options: .init(seed: 42))
OptionStandardwert
--fish-drama3-model-idmlx-community/fish-audio-drama-3-4bit
--fish-drama3-bundle-dir—
--fish-drama3-reference-text—
--fish-drama3-max-frames2048
--fish-drama3-temperature1
--fish-drama3-top-k30
--fish-drama3-top-p0.9
--voice-sample—
--seed0
--streamfalse
--fish-drama3-chunk-frames3
--fish-drama3-memory-modebalanced

Mit Fish Audio erstellt. Die Pakete enthalten die Community License und NOTICE.

4-Bit-Messung