Tłumaczenie automatyczne · Oryginał angielski

Wymuszone wyrównanie

MLX i CoreML używają tych samych funkcji wejściowych w stylu Whisper- style: 128 znormalizowane w Slaney- Kosze z dokładnego STFT 400- punktu 16 kHz, z Hopem próbki 160-i okresowym oknem Hanna.

Qwen3-ForcedAligner zapewnia ustawienie znacznika czasu na poziomie słowa dla dźwięku. Wykonuje on nieautoregresywny pojedynczy przekaz do przodu, aby wyrównać każde słowo w transkrypcie do jego dokładnej pozycji w formie fali audio.

Jak to działa

Dekoder klasyfikuje każdy wyraz znaczniki czasu rozpoczęcia i końca. Korekta wykorzystuje najdłuższą niezmniejszającą się wytrzymałość (LIS z równymi wartościami dopuszczalnymi), zachowując wspólne granice i wybierając najwcześniejsze kotwice, kiedy łańcuchy mają równą długość. Wartości Out- of- order używają korekcji lub interpolacji sąsiedzkiej. MLX wyklucza przewidywania wykraczające poza czas trwania dźwięku z jego kotwic.

WłasnośćWartość
Metoda wyrównaniaKlasyfikacja znaczników czasu z korektą niezmniejszającą się
Rozdzielczość znacznika czasu80 ms
Klasy wyjściowe5000
Tryb wnioskowaniaNieautoregresywne (pojedyncze przednie przepustki)

Runtimes MLX i CoreML umieszczają dwa miejsca na znacznik czasu po każdym słowie: word<timestamp><timestamp>Pierwszy przewiduje początek słowa, a drugi jego koniec. Szczelina przed słowem przesuwa przewidywania do poprzedniego słowa.

Zastosowanie CLI

Wyrównaj plik audio. Jeśli nie jest dostarczony zapis, audio jest automatycznie zapisywane najpierw za pomocą Qwen3-ASR:

.build/release/speech align recording.wav

Dostarcz znany transkrypt do pominięcia automatycznej transkrypcji:

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

Opcje

# 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

Wsparcie językowe

Pass --language pasujące do języka audio. Model jest oficjalnie przeszkolony na 11 języków (en, zh, ja, ko, es, fr, de, ru, it, pt, ar); preprocesor również segmentuje japońskich morfemów, koreańskich słów, chińskiego per- charakter, i Thai / Lao / Khmer / Birmese / Tybetan naiwnie poprzez Apple 's NLTokenizer. Łączenie znaków (Devanagari matras, samogłosek tajskich, itp.) są zachowane tak słowa jak नमस्ते oraz สวัสดี pozostać nietknięty.

Warianty modelu

Dostępne są różne warianty modeli, wielkość obrotu dla dokładności:

WariantWzór IDRozmiar
MLX 4- bit (domyślnie)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

Domyślne ustawienie CoreML do .cpuAndNeuralEngine dla kodującego oraz .cpuAndGPU dla dekodera tekstowego. SPEECH_COREML_COMPUTE_UNITS overrides oba. Opublikowane pakiety dekoderów mogą produkować błędne znaczniki czasu na Neural Engine lub all- zero znaczników czasu z cpuOnly.

Wyrażenie cpuOnly Wybór obciążenia modeli INT8 i FP16 text_decoder_cpu_v1, którego normalizacja RMS wykorzystuje Float32 z oryginalną uczoną wagą. Uruchom jeden ładunek online, aby pobrać ten pakiet; stary podręcznik offline nadal zawiera dekoder spuścizny. GPU wykonanie nadal jest wykorzystywane text_decoder. Naprawa normalizacji INT8 odpowiada wszystkim granicom odniesienia 22 na macOS 15.8.2; walidacja fizyczno-iPhone pozostaje oddzielona.

Wybierz wariant --aligner-model:

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

Format wyjściowy

Religner wychodzi jedną linią na słowo ze znacznikami czasu rozpoczęcia i zakończenia w sekundach:

[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

Każda para znaczników czasu wskazuje czas rozpoczęcia i zakończenia słowa w audio, w rozdzielczości 80 ms.

Przenoszenie dźwięków

Głowica klasyfikacja może adresować do 400 sekund w zasadzie (5000 klasy × 80 ms), ale w wysyłce Qwen3-ForcedAligner-0.6B model jest niezawodnie przeszkolony aż do około Sekundy 270. Po tym punkcie, model emituje hałaśliwe wskaźniki czasu i LIS post-processing załamuje każde słowo ciągnące się na ten sam znacznik czasu.

CLI obsługuje to automatycznie: długie audio jest odłamane w punkcie nasycenia i ponownie wyrównane.

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

Ustaw ALIGN_DEBUG=1 zrzucanie wskaźników surowych vs poprawionych znaczników czasu podczas badania nieprawidłowo ustawionych wyjść.

Znane ograniczenie: wiodąca niemowa

Kiedy audio zaczyna się od nie-mowy (intro muzyki, długa cisza), model często pieczętuje pierwsze słowo w pobliżu 0 sekund, ponieważ klasyfikator nie ma pojęcia "mowy nie rozpoczął jeszcze". Workeround: przyciąć wiodącą non-mowy przed wyrównaniem, lub uruchomić przed-pass VAD z Silero, aby znaleźć rzeczywisty początek mowy.

Ważne

Kiedy nie --text jest dostarczona, wyrównawca najpierw uruchamia pełną kartę transkrypcyjną Qwen3-ASR, a następnie dostosowuje uzyskany tekst. Oznacza to, że pierwsze ładunki uruchamiane zarówno w modelu ASR jak i w modelu wyrównawczym. --text pomija krok ASR i ładuje tylko stabilizator.