Forced Alignment

Qwen3-ForcedAligner bietet wortgenaue Zeitstempel-Zuordnung für Audio. Er führt einen nicht-autoregressiven Single-Forward-Pass aus, um jedes Wort in einem Transkript seiner exakten Position in der Audio-Wellenform zuzuordnen.

Funktionsweise

Der Aligner verwendet CTC-Alignment (Connectionist Temporal Classification) mit einem LIS-Monotonie-Korrekturschritt (Longest Increasing Subsequence). Dadurch sind die Zeitstempel immer in korrekter Reihenfolge, selbst wenn die Roh-CTC-Ausgabe kleinere Inkonsistenzen enthält.

EigenschaftWert
Alignment-MethodeCTC mit LIS-Monotonie-Korrektur
Zeitstempel-Auflösung80 ms
Ausgabeklassen5000
InferenzmodusNicht-autoregressiv (Single-Forward-Pass)

CLI-Verwendung

Richte eine Audiodatei aus. Wird kein Transkript angegeben, wird das Audio zunächst automatisch mit Qwen3-ASR transkribiert:

.build/release/speech align recording.wav

Gib ein bekanntes Transkript an, um die automatische Transkription zu überspringen:

.build/release/speech align recording.wav --text "The quick brown fox jumps over the lazy dog"

Optionen

# Transkripttext direkt angeben
.build/release/speech align recording.wav --text "known transcript"

# ASR-Modell für den Auto-Transkriptionsschritt wählen
.build/release/speech align recording.wav --model 1.7b

# Aligner-Modellvariante angeben
.build/release/speech align recording.wav --aligner-model default

# Sprache setzen
.build/release/speech align recording.wav --language en

Sprachunterstützung

Geben Sie --language passend zur Sprache des Audios an. Das Modell wurde offiziell auf 11 Sprachen trainiert (en, zh, ja, ko, es, fr, de, ru, it, pt, ar); der Präprozessor segmentiert zusätzlich japanische Morpheme, koreanische Wörter, chinesische Einzelzeichen sowie Thailändisch / Laotisch / Khmer / Birmanisch / Tibetisch nativ über Apples NLTokenizer. Kombinierende Zeichen (Devanagari-Matras, thailändische Vokalzeichen usw.) bleiben erhalten, sodass Wörter wie नमस्ते und สวัสดี intakt bleiben.

Modellvarianten

Mehrere Modellvarianten sind verfügbar, die Größe gegen Genauigkeit abwägen:

VarianteModell-IDGröße
MLX 4-Bit (Standard)aufklarer/Qwen3-ForcedAligner-0.6B-4bit~979 MB
MLX 8-Bitaufklarer/Qwen3-ForcedAligner-0.6B-8bit~1,3 GB
MLX bf16aufklarer/Qwen3-ForcedAligner-0.6B-bf16~1,8 GB
CoreML INT4aufklarer/Qwen3-ForcedAligner-0.6B-CoreML-INT4~662 MB
CoreML INT8aufklarer/Qwen3-ForcedAligner-0.6B-CoreML-INT8~1,1 GB

Wähle eine Variante mit --aligner-model:

.build/release/speech align recording.wav --aligner-model aufklarer/Qwen3-ForcedAligner-0.6B-8bit

Ausgabeformat

Der Aligner gibt eine Zeile pro Wort mit Start- und Endzeitstempel in Sekunden aus:

[0.24 - 0.48] The
[0.48 - 0.72] quick
[0.72 - 1.04] brown
[1.04 - 1.36] fox
[1.36 - 1.68] jumps
[1.68 - 1.92] over
[1.92 - 2.08] the
[2.08 - 2.40] lazy
[2.40 - 2.80] dog

Jedes Zeitstempelpaar gibt die Start- und Endzeit des Wortes im Audio an, mit einer Auflösung von 80 ms.

Lange Audio-Eingaben

Der Klassifikationskopf kann prinzipiell bis zu 400 Sekunden adressieren (5000 Klassen × 80 ms), aber das ausgelieferte Modell Qwen3-ForcedAligner-0.6B wurde nur bis etwa 270 Sekunden zuverlässig trainiert. Darüber hinaus liefert das Modell verrauschte Zeitstempel-Indizes, und die LIS-Nachbearbeitung kollabiert alle nachfolgenden Wörter auf denselben Zeitstempel.

Die CLI behandelt dies automatisch: Lange Audio-Eingaben werden am Sättigungspunkt aufgeteilt und neu ausgerichtet. Wenn das Chunking aktiv wird, erscheint eine einzeilige Meldung:

Audio 306.2s saturated after word 690 (272.6s); chunking remaining 33.6s (pass 2)

Setze ALIGN_DEBUG=1, um beim Untersuchen falsch ausgerichteter Ausgaben sowohl die rohen als auch die korrigierten Zeitstempel-Indizes auszugeben.

Bekannte Einschränkung: führende Nicht-Sprache

Wenn das Audio mit Nicht-Sprache (Musik-Intro, lange Stille) beginnt, vergibt das Modell für das erste Wort oft einen Zeitstempel nahe 0 Sekunden, weil der Klassifikator kein Konzept von "Sprache hat noch nicht begonnen" hat. Workaround: Schneide die führende Nicht-Sprache vor dem Aligning ab, oder führe einen VAD-Vorlauf mit Silero aus, um den tatsächlichen Sprechbeginn zu finden.

Wichtig

Wird kein --text angegeben, führt der Aligner zunächst einen vollständigen Qwen3-ASR-Transkriptionsdurchlauf aus und richtet dann den resultierenden Text aus. Das bedeutet, dass der erste Lauf sowohl das ASR-Modell als auch das Aligner-Modell lädt. Mit --text wird der ASR-Schritt übersprungen und nur der Aligner geladen.