Maskinoversettelse · Engelsk original

Tvungen justering

MLX og CoreML bruker de samme inngangsfunksjonene i Whisper-stil: 128 Slaney-normaliserte mel-biner fra en nøyaktig 400-punkt STFT ved 16 kHz, med 160-prøvehopp og et periodisk Hann-vindu.

Qwen3-ForcedAligner gir ord-nivå tidsstempeljustering for lyd. Den utfører et ikke-autoregressivt enkelt framoverpass for å justere hvert ord i en transkripsjon til sin nøyaktige posisjon i lydbølgeformen.

Hvordan det fungerer

Avkoderen klassifiserer hvert ords start- og slutttidsstempler. Korreksjonen bruker en lengst ikke-nedbrytende undersekvens (LIS med like verdier som er tillatt), bevare felles grenser og velge de tidligste ankerene når kjedene har lik lengde. Ut-av-orden verdier bruker nærmeste-neighbor rettelse eller interpolasjon. MLX utelukker spådommer utover lyd varigheten fra sine anker.

Eiendom Verdi
Justeringsmetode Tidsstempelklassifikasjon med ikke-nedbrytende rettelse
Tidsstempleoppløsning80 ms
Utgangsklasser5000
Inferensmodus Ikke-autoregressiv (enkelt viderepass)

MLX og CoreML kjøretider plasserer to tidsstempelspor etter hvert ord: word<timestamp><timestamp>. Den første forutsier ordets start, og den andre enden. En spilleautomat før ordet skifter spådommer på det foregående ordet.

CLI bruk

Justere en lydfil. Hvis det ikke er gitt noen transkripsjon, transkriberes lyden automatisk først ved hjelp av Qwen3-ASR:

.build/release/speech align recording.wav

Gi en kjent transkripsjon for å hoppe over automatisk transkripasjon:

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

Alternativer

# 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

Språkstøtte

Pass --language som matcher lydens språk. Modellen er offisielt utdannet på 11 språk (en, zh, ja, ko, es, fr, de, ru, det, pt, ar); preprosessoren også segmenter japanske morfems, koreanske ord, kinesiske per-karakter, og thai / lao / khmer / burmesisk / tibetansk innfødt via Apples NLTokenizer. Kombinere merker (Devanagari matras, thailandske vokaler, etc.) er bevart så ord som नमस्ते og สวัสดี holde seg intakt.

Modell Varianter

Flere modeller varianter er tilgjengelige, handelsstørrelse for nøyaktighet:

Variant Modell-ID Størrelse
MLX 4-bit (standard)aufklarer/Qwen3-ForcedAligner-0.6B-4bit~979 MB
MLX 8-bitsaufklarer/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 justeringsstandarder til .cpuAndNeuralEngine for koderen og .cpuAndGPU for tekstdekoderen. SPEECH_COREML_COMPUTE_UNITS overstyrer begge. De publiserte dekoderpakkene kan produsere feil tidsstempler på Neural Engine eller alle null tidsstemplene med cpuOnly.

Utforske cpuOnly belastninger av INT8 og FP16-modeller velger text_decoder_cpu_v1, hvis RMS normalisering bruker Float32 med de opprinnelige lærde vektene. Kjør en online last for å laste ned denne pakken; en gammel offline cache inneholder fortsatt den gamle dekoderen. GPU utførelsen fortsetter å bruke text_decoder. INT8 normaliseringsreparasjon matcher alle 22 referansegrenser på macOS 15.8.2; fysisk-iPhone validering forblir separat.

Velg en variant med --aligner-model:

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

Utgangsformat

Adjusteren skriver ut én linje per ord med start- og slutttidsstempler på sekunder:

[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

Hvert tidsstempelpar indikerer starten og slutttiden for ordet i lyden, ved 80 ms oppløsning.

Langlydshåndtering

Klassifiseringshodet kan adressere opptil 400 sekunder i prinsippet (5000 klasser × 80 ms), men på den fraktede Qwen3-ForcedAligner-0.6B er modellen pålitelig trent opp til ca 270 sekunder. Tidligere det punktet utsteder modellen støyende tidsstempelindekser og LIS etterbehandling kollapser hvert etterfølgende ord på samme tidsstemple.

CLI håndterer dette automatisk: lang lyd er bitt på metningspunktet og omjustert. Du vil se en énlinjes melding når biting sparker i:

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

Sett ALIGN_DEBUG=1 til å dumpe rå vs. korrigerte tidsstempelindekser når du undersøker feiljusterte utganger.

Kjent begrensning: ledende ikke-speech

Når lyden starter med ikke-speech (musikk intro, lang stillhet), markerer modellen ofte det første ordet i nærheten av 0 sekunder fordi klassifieren ikke har noen oppfatning av -speech har ikke startet enda - Workaround: trim den ledende ikke-spek før justering, eller kjør en VAD forhåndspass med Silero for å finne den faktiske talestarten.

Viktig

Når ikke --text er tilveiebrakt, justerer adapteren først en full Qwen3-ASR transkripsjonspass, deretter justerer den resulterende teksten. Dette betyr den første kjøring laster både ASR-modellen og justeringsmodellen. --text hopper over ASR-trinnet og laster bare inn justeringsenheten.