Terjemahan mesin · Versi asli bahasa Inggris

Penyelarasan paksa

MLX dan CoreML gunakan fitur masukan Whisper- gaya yang sama: 128 Slaney-normalisasi tempat-tempat mel dari tepat 400-point STFT di 16 kHz, dengan 160-sample hop dan jendela periodik Hann.

Qwen3-ForcedAligner menyediakan alignmen timestamp kata-tingkat untuk audio. Ia melakukan a non-autoregresif single forward pass untuk menyelaraskan setiap kata dalam transkrip ke posisi yang tepat dalam bentuk gelombang audio.

¶ How It Works ¶

Decoder mengklasifikasikan setiap kata awal awal dan akhir penanda waktu. Koreksi menggunakan subsequences terlama (LIS dengan nilai yang sama diperbolehkan), mempertahankan batas-batas yang sama diperbolehkan dan memilih jangkar awal ketika rantai memiliki panjang yang sama. Nilai-dari -urutan menggunakan koreksi ketat-tetangga atau interpolasi. MLX tidak termasuk prediksi di luar durasi audio dari anchor tersebut.

PropertiNilai
Metode perataanKlasifikasi penanda waktu dengan koreksi tidak menurun
Resolusi penanda waktu80 md
Kelas keluaran5000
Mode instruksiTidak-autoregresif (single forward pass)

MLX dan CoreML runtimes menempatkan dua slot timestamp setelah setiap kata: word<timestamp><timestamp>Sebuah slot sebelum kata pergeseran prediksi ke kata sebelumnya.

Penggunaan CLI

Align suatu berkas audio. Jika tidak ada transkrip yang disediakan, audio secara otomatis ditranskripsi terlebih dahulu menggunakan Qwen3-ASR:

.build/release/speech align recording.wav

Menyediakan transkrip yang dikenal untuk melewatkan transkripsi otomatis:

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

Opsi

# 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

Dukungan Bahasa

Pass --language pencocokan bahasa audio. Model secara resmi dilatih pada 11 bahasa (en, zh, ja, ko, es, fr, de, ru, itu, pt, ar); preprosesor juga segmen morphemes Jepang, kata-kata Korea, karakter Cina, dan Thai / Lao / Khmese / Tibetan native melalui Apple NLTokenizerPerpaduan tanda (matera Devanagari, huruf vokal Thailand, dll) dijaga sehingga kata-kata seperti नमस्ते dan สวัสดี Tetap utuh.

Variants Model

Multiple model variants are available, trading size for akurasi:

VarianID ModelUkuran
MLX 4- bit (baku)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 alignmen baku ke .cpuAndNeuralEngine orang-orang yang berbuat riya, .cpuAndGPU untuk decoder teks. SPEECH_COREML_COMPUTE_UNITS overrides baik. Bundel decoder yang diterbitkan dapat menghasilkan penanda waktu yang salah pada Neural Engine atau semua-nol penanda waktu dengan cpuOnly.

Eksplisit cpuOnly beban dari model INT8 dan FP16 pilih text_decoder_cpu_v1, yang normalisasi RMS menggunakan Float32 dengan bobot asli yang dipelajari. Jalankan satu daring untuk mengunduh bundel ini; sebuah singgahan luring lama masih berisi decoder warisan. GPU eksekusi terus digunakan text_decoder. INT8 perbaikan normal cocok dengan semua 22 referensi batas pada macOS 15.8.2; validasi fisik- iPhone tetap terpisah.

Pilih suatu varian dengan --aligner-model:

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

Format Keluaran

Pensejajarkan mengeluarkan satu baris per kata dengan awal dan akhir penanda waktu dalam hitungan detik:

[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

Setiap pasangan timestamp mengindikasikan awal dan akhir waktu kata dalam audio, pada resolusi 80 ms.

Penanganan audio panjang

Kepala klasifikasi dapat mengatasi hingga 400 detik dalam prinsip (kelas 5000 × 80 ms), tetapi pada pengiriman Qwen3-ForcedAligner-0.6B model dilatih sampai sekitar 270 detikMelewati titik itu, model memancarkan timestamp yang berisik dan posting LIS-pengolahan runtuh setiap kata trailing ke timestamprint yang sama.

CLI menangani hal ini secara otomatis: audio panjang dipotong di titik saturasi dan selaras kembali. Anda akan melihat pesan satu baris ketika chunking kicks in:

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

Set ALIGN_DEBUG=1 untuk membuang mentah vs. penanda waktu yang dikoreksi saat menyelidiki hasil yang tidak masuk akal.

Batas dikenal: terkemuka bukan-pidato

Ketika audio dimulai dengan bukan-pidato (musik intro, keheningan panjang), model sering menandai kata pertama dekat 0 detik karena klasifikasi tidak memiliki gagasan "pidato belum dimulai." Workaround: memangkas pidato terkemuka sebelum menyelaraskan, atau jalankan VAD sebelum-lewat dengan Silero untuk menemukan awal pidato aktual.

Penting

Ketika tidak ada --text disediakan, alignner pertama menjalankan sebuah transkripsi Qwen3-ASR penuh, kemudian menyelaraskan teks hasil. Ini berarti run pertama dimuat baik model ASR dan model aligner. Menyediakan. --text melewati langkah ASR dan hanya memuat perpaduan.