Traducere automată · Originalul în engleză

Aliniere forțată

MLX și CoreML utilizează aceleași caracteristici de intrare în stil Whisper: 128 de containere mel normalizate Slaney dintr-un STFT exact 400 puncte la 16 kHz, cu un hop de 160 de eșantioane și o fereastră periodică Hann.

Qwen3-ForcedAligner oferă o aliniere a timpului la nivel de cuvânt pentru audio. Acesta efectuează un permis unic non-autoregresiv pentru a alinia fiecare cuvânt într-o transcriere la poziția sa exactă în forma de undă audio.

Cum funcţionează

Decodorul clasifică marcajele de început și de sfârșit ale fiecărui cuvânt. Corectarea utilizează o subsecvență de cel mai lung nivel (LIS cu valori egale permise), păstrând granițele comune și alegând ancorele mai vechi atunci când lanțurile au o lungime egală. Valorile externe folosesc corecția sau interpolarea cea mai apropiată de vecini. MLX exclude predicțiile care depășesc durata audio de la ancorele sale.

Proprietate Valoare
Metoda de aliniereClasificare de ștampilă temporală cu corecție nedescrescătoare
Rezoluţia timbrului temporal80 ms
Clasele de realizare5000
Modul de interferențăNon-autoregresiv (un singur permis de trecere înainte)

MLX și CoreML runtimes plasa două sloturi timp după fiecare cuvânt: word<timestamp><timestamp>

Utilizarea CLI

Aliniază un fișier audio. Dacă nu este furnizată nicio transcriere, audio este transcris automat mai întâi folosind Qwen3-ASR:

.build/release/speech align recording.wav

Oferă o transcriere cunoscută pentru a sări peste transcrierea automată:

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

Opțiuni

# 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

Suportul lingvistic

Pass --language potrivirea limbii audio. Modelul este instruit oficial pe 11 limbi (ro, zh, ja, ko, es, de, ru, it, pt, ar); preprocesorul, de asemenea, segmentele morfele japoneze, cuvinte coreene, chineză per-personaje, și Thai / Lao / Khmer / Burmese / tibetan nativ via Apple's NLTokenizer. Conectarea marcajelor (Devanagari matras, vocale thailandeze, etc.) sunt păstrate astfel de cuvinte, cum ar fi नमस्ते și สวัสดี

Model Variante

Sunt disponibile mai multe variante de model, dimensiunea de tranzacționare pentru precizie:

VariantăModel de identificareDimensiune
MLX 4-bit (default)aufklarer/Qwen3-ForcedAligner-0.6B-4bit~979 MO
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 MO
CoreML INT8aufklarer/Qwen3-ForcedAligner-0.6B-CoreML-INT8~1.1 GB

CoreML aliniament implicit la .cpuAndNeuralEngine pentru encoder și .cpuAndGPU pentru decodorul de text. SPEECH_COREML_COMPUTE_UNITS suprascrieri. Globurile decodor publicate pot produce marcaje de timp incorecte pe Neural Engine sau toate-zero cu cpuOnly.

Explicit cpuOnly sarcini ale modelelor INT8 și FP16 selectați text_decoder_cpu_v1, a cărui normalizare RMS folosește Float32 cu greutăți originale învățate. Rulați o sarcină on-line pentru a descărca acest pachet; un vechi cache offline încă conține moștenirea decodor. GPU executarea continuă să utilizeze text_decoder. Reparația de normalizare INT8 se potrivește cu toate limitele de referință 22 pe macOS 15.8.2; validarea fizic-iPhone rămâne separată.

Selectaţi o variantă cu --aligner-model:

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

Format de ieșire

Aliniatorul emite o linie pe cuvânt cu timbrul de pornire și de sfârșit în câteva secunde:

[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

Fiecare pereche de timbru indică ora de începere şi de sfârşit a cuvântului în audio, la rezoluţia de 80 ms.

Manipularea pe termen lung a audio

Capul de clasificare poate aborda până la 400 de secunde în principiu (5000 de clase × 80 ms), dar pe produsul expediat Qwen3-ForcedAligner-0.6B modelul este instruit în mod fiabil până la aproximativ 270 de secunde. În acest punct, modelul emite indicii zgomotoase de timp și LIS post-procesare se prăbușește fiecare cuvânt de urmărire pe același timp.

CLI se ocupă automat de acest lucru: audio lung este înfundat la punctul de saturaţie şi re-aliniat. Veţi vedea un mesaj-o linie atunci când îndesarea lovituri în:

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

Set ALIGN_DEBUG=1 pentru a arunca indicii de timp corectați vs., atunci când se investighează ieșiri greșite.

Limitare cunoscută: care conduce non-discursul

Atunci când audio începe cu non-discurs (muzica intro, lunga liniste), modelul marcheaza adesea primul cuvant aproape 0 secunde, deoarece clasatorul nu are nici o noţiune de "discurs nu a început încă." Workaround: tapiţeaz-o non-discuţie lider înainte de aliniere, sau rulaţi un VAD pre-pass cu Silero pentru a găsi startul actual de vorbire.

Important

Când nu --text este furnizat, alinionerul ruleaza mai intai un permis complet de transcriere Qwen3-ASR, apoi aliniaza textul rezultat. Aceasta inseamna incarcarile pentru prima rula atat modelul ASR cat si modelul de aliniere. --text sare peste etapa ASR și doar încarcă aliniatorul.