Alinhamento forcado

Qwen3-ForcedAligner fornece alinhamento de timestamps por palavra para audio. Ele executa um unico forward pass nao autoregressivo para alinhar cada palavra de uma transcricao a sua posicao precisa na forma de onda do audio.

Como funciona

O aligner usa alinhamento CTC (Connectionist Temporal Classification) com uma etapa de correcao de monotonicidade LIS (Longest Increasing Subsequence). Isso garante que os timestamps estejam sempre em ordem, mesmo quando a saida CTC bruta contem pequenas inconsistencias.

PropriedadeValor
Metodo de alinhamentoCTC com correcao de monotonicidade LIS
Resolucao de timestamp80 ms
Classes de saida5000
Modo de inferenciaNao autoregressivo (unico forward pass)

Uso do CLI

Alinhe um arquivo de audio. Se nao for fornecida uma transcricao, o audio e transcrito automaticamente primeiro usando Qwen3-ASR:

.build/release/audio align recording.wav

Forneca uma transcricao conhecida para pular a transcricao automatica:

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

Opcoes

# Specify transcript text directly
.build/release/audio align recording.wav --text "known transcript"

# Choose ASR model for auto-transcription step
.build/release/audio align recording.wav --model 1.7b

# Specify aligner model variant
.build/release/audio align recording.wav --aligner-model default

# Set language
.build/release/audio align recording.wav --language en

Variantes do modelo

Varias variantes de modelo estao disponiveis, trocando tamanho por precisao:

VarianteID do modeloTamanho
MLX 4-bit (padrao)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

Selecione uma variante com --aligner-model:

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

Formato de saida

O aligner emite uma linha por palavra com timestamps de inicio e fim em segundos:

[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

Cada par de timestamp indica o tempo de inicio e fim da palavra no audio, a uma resolucao de 80 ms.

Importante

Quando nao e fornecido --text, o aligner primeiro executa um pass completo de transcricao Qwen3-ASR, depois alinha o texto resultante. Isso significa que a primeira execucao carrega tanto o modelo ASR quanto o modelo aligner. Fornecer --text pula a etapa de ASR e carrega apenas o aligner.