Maskinoversættelse · Engelsk original

Tvungen justering

MLX og CoreML bruger de samme Whisper-stil input funktioner: 128 Slaney- normaliseret mel bins fra en eksakt 400- punkt STFT på 16 kHz, med en 160-prøve hop og en periodisk Hann vindue.

Qwen3-ForcedAligner giver word- level tidsstempel justering for lyd. Det udfører en ikke-auto-regressive enkelt fremad pass for at tilpasse hvert ord i en udskrift til sin præcise position i lyd bølgeform.

Sådan virker det

Dekoderen klassificerer hvert ords start og sluttidsstempler. Korrektion bruger en længste ikke-faldende deterence (LIS med lige værdier tilladt), bevare fælles grænser og vælge de tidligste ankre, når kæder har samme længde. Out- of- order værdier bruger nearet- nabo korrektion eller interpolation. MLX udelukker forudsigelser ud over lydvarigheden fra sine ankre.

EjendomVærdi
JusteringsmetodeTimestamp-klassificering med ikke-faldende korrektion
Tidsstempel opløsning80 ms
Outputklasser5000
InferenstilstandIkke-auto-regressiv (enkelt forward pass)

MLX og CoreML runtimes placerer to tidsstempler efter hvert ord: word<timestamp><timestamp>. Den første forudsiger ordet start, og den anden sin ende. En slot før ordet skifter forudsigelser til det foregående ord.

CLI-brug

Juster en lydfil. Hvis der ikke er nogen udskrift, bliver lyden automatisk transskriberet først ved hjælp af Qwen3-ASR:

.build/release/speech align recording.wav

Giv en kendt udskrift til at springe automatisk transskription over:

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

Indstillinger

# 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

Sprogstøtte

Pass --language matchende lydens sprog. Modellen er officielt uddannet på 11 sprog (da, zh, ja, ko, es, fr, de, ru, it, pt, ar); preprocessoren også segmenter japanske mordemer, koreanske ord, kinesisk per- tegn, og thai / Lao / Khmer / burmesisk / tibetansk naivt via Apple 's NLTokenizer. Kombinerende mærker (Devanagari matras, thailandske vokaler, osv.) er bevaret så ord som नमस्ते og สวัสดี Hold dig intakt.

Model Variants

Flere modeller varianter er tilgængelige, handel størrelse for nøjagtighed:

VariantModel IDStørrelse
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

CoreML indstillingsstandard til .cpuAndNeuralEngine for indkoderen og .cpuAndGPU for tekstdekoder. SPEECH_COREML_COMPUTE_UNITS tilsidesætter begge. De offentliggjorte dekoder bundter kan producere forkerte tidsstempler på Neural Engine eller all- nul tidsstempler med cpuOnly.

Ekplicit cpuOnly belastninger af INT8- og FP16 modellerne vælges text_decoder_cpu_v1, hvis RMS normalisering bruger Float32 med den oprindelige lærde vægte. Kør en online belastning for at hente dette bundt; en gammel offline cache stadig indeholder den arv dekoder. GPU udførelse fortsætter med at bruge text_decoder. INT8 normalisering reparation matcher alle 22 referencegrænser på macOS 15.8.2; fysisk-iPhone validering forbliver adskilt.

Vælg en variant med --aligner-model:

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

Outputformat

Juster udgange en linje pr. ord med start og ende tidsstempler i 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 tidsstempel par angiver start og sluttidspunkt for ordet i lyd, ved 80 ms opløsning.

Long- audio handling

Klassificeringshovedet kan i princippet behandle op til 400 sekunder (5000 klasser × 80 ms), men på den afsendte Qwen3-ForcedAligner-0.6B Modellen er pålideligt uddannet op til omkring 270 sekunder. Forbi dette punkt, modellen udsender støjende tidsstempler indeks og LIS post- behandling kollapser hver efterfølgende ord på samme tidsstempel.

CLI håndterer dette automatisk: lang lyd er chunked ved mætningspunktet og omdirigeres. Du vil se en one-line besked, når chunking kicks i:

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

Sæt ALIGN_DEBUG=1 at dumpe rå vs. korrigerede tidsstempler ved undersøgelse af fejljusterede udgange.

Kendt begrænsning: førende ikke-tale

Når lyd starter med non- tale (musik intro, lang stilhed), modellen ofte stempler det første ord i nærheden af 0 sekunder, fordi klassikeren ikke har nogen idé om "tale er ikke startet endnu". Workout: trim den førende non- tale før tilpasning, eller køre en VAD pre- pass med Silero for at finde den faktiske tale start.

Vigtigt

Når ng --text er forudsat, at justerer først kører en fuld Qwen3-ASR transskription pass, derefter justerer den resulterende tekst. Dette betyder den første køre belastninger både ASR model og juster model. --text Skipper ASR trin og kun indlæser justerer.