Automatische vertaling · Engels origineel

Geforceerde uitlijning

MLX en CoreML gebruiken dezelfde Whisper-stijl inputfuncties: 128 Slaney-genormaliseerde melbins van een exact 400-punts STFT op 16 kHz, met een 160-steekproef hop en een periodiek Hann venster.

Qwen3-ForcedAligner biedt tijdstempel-uitlijning op woordniveau voor audio. Het voert een niet-autoregressieve single forward pas uit om elk woord in een transcript uit te stemmen op zijn exacte positie in de audiogolfvorm.

Hoe het werkt

De decoder classificeert de begin- en eindtijdstempels van elk woord. Correctie gebruikt een langste niet-afnemende subsequence (LIS met gelijke waarden toegestaan), het behouden van gedeelde grenzen en het kiezen van de vroegste ankers wanneer ketens even lang zijn. Buiten-orde waarden gebruiken de dichtstbijzijnde-buur correctie of interpolatie. MLX sluit voorspellingen buiten de audioduur uit van de ankers.

Eigenschap Waarde
Uitlijningsmethode Tijdstempelclassificatie met niet-afnemende correctie
Tijdstempelresolutie80 ms
Uitvoerklassen5000
Inferentiemodus Niet-autoregressief (enkele voorwaartse pas)

De MLX en CoreML runtimes plaatsen twee tijdstempels na elk woord: word<timestamp><timestamp>. De eerste voorspelt het begin van het woord, en de tweede het einde ervan. Een slot voordat het woord voorspellingen op het voorgaande woord verplaatst.

CLI-gebruik

Een audiobestand uitlijnen. Als er geen transcript wordt gegeven, wordt het geluid automatisch eerst getranscribeerd met Qwen3-ASR:

.build/release/speech align recording.wav

Geef een bekend transcript om automatische transcriptie over te slaan:

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

Opties

# Specify transcript text directly
.build/release/speech align recording.wav --text "known transcript"

# Choose ASR model for auto-transcription step
.build/release/speech align recording.wav --model 1.7b

# Specify aligner model variant
.build/release/speech align recording.wav --aligner-model default

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

Taalondersteuning

Pass --language Het model is officieel getraind op 11 talen (en, zh, ja, ko, es, fr, de, ru, it, pt, ar); de preprocessor ook segmenten Japanse morphemen, Koreaanse woorden, Chinese per-karakter, en Thai / Lao / Khmer / Birmese / Tibetaanse inheemse via Apple's NLTokenizer. Combinerende tekens (Devanagari matras, Thaise klinkers, enz.) worden bewaard zodat woorden als नमस्ते en สวัสดี Blijf intact.

Model Varianten

Meerdere modelvarianten zijn beschikbaar, trading size voor nauwkeurigheid:

VariantModel-ID Grootte
MLX 4-bit (standaard)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

CoreML uitlijning standaard naar .cpuAndNeuralEngine voor de encoder en .cpuAndGPU voor de tekstdecoder. SPEECH_COREML_COMPUTE_UNITS overschrijft beide. De gepubliceerde decoderbundels kunnen onjuiste tijdstempels produceren op de Neural Engine of alle-zero tijdstempels met cpuOnly.

Expliciet cpuOnly ladingen van de INT8 en FP16 modellen selecteren text_decoder_cpu_v1, waarvan de RMS normalisatie Float32 gebruikt met de originele geleerde gewichten. Voer een online lading uit om deze bundel te downloaden; een oude offlinecache bevat nog steeds de legacy decoder. GPU uitvoering blijft text_decoder gebruiken. De INT8 normalisatiereparatie komt overeen met alle 22 referentiegrenzen op macOS 15.8.2; fysieke-iPhonevalidatie blijft apart.

Selecteer een variant met --aligner-model:

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

Uitvoerformaat

De uitlijning geeft één regel per woord uit met start- en eindtijdstempels in seconden:

[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

Elk tijdstempel paar geeft de begin- en eindtijd van het woord in de audio, bij 80 ms resolutie.

Lange-audiobehandeling

Het classificeringshoofd kan in principe tot 400 seconden in beslag nemen (5000 klassen × 80 ms), maar op de verzonden Qwen3-ForcedAligner-0.6B is het model betrouwbaar getraind tot ongeveer 270 seconden. Na dat punt zendt het model luidruchtige tijdstempel-indices uit en de LIS-post-processing klapt elk achtervolgend woord in op hetzelfde tijdstempel.

De CLI doet dit automatisch: lange audio wordt ingepakt op het verzadigingspunt en opnieuw ingesteld. U ziet een one-line bericht als het inchunken begint:

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

Stel ALIGN_DEBUG=1 in om ruwe versus gecorrigeerde tijdstempel-indices te dumpen bij het onderzoeken van foutieve outputs.

Bekende beperking: toonaangevende niet-spraak

Als audio begint met niet-spraak (muziek intro, lange stilte), dan stempelt het model vaak het eerste woord bijna 0 seconden omdat de classifier nog geen idee heeft van "spraak is nog niet begonnen." Werkronde: trim de toonaangevende niet-spraak alvorens uit telijnen, of voer een VAD pre-pass uit met Silero om de werkelijke spraakstart te vinden.

Belangrijk

Wanneer nee --text wordt geleverd, de aligner draait eerst een volledige Qwen3-ASR transcriptie pas, vervolgens uitlijnt de resulterende tekst. Dit betekent dat de eerste run laadt zowel het ASR model als het uitlijner model. --text slaat de ASR stap over en laadt alleen de uitlijner.