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øsning | 80 ms |
| Utgangsklasser | 5000 |
| 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-bits | aufklarer/Qwen3-ForcedAligner-0.6B-8bit | ~1.3 GB |
| MLX bf16 | aufklarer/Qwen3-ForcedAligner-0.6B-bf16 | ~1.8 GB |
| CoreML INT4 | aufklarer/Qwen3-ForcedAligner-0.6B-CoreML-INT4 | ~662 MB |
| CoreML INT8 | aufklarer/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.
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.