The Qwen3 ecosystem includes a forced aligner that provides high-resolution word and phoneme timestamps by aligning a known transcript to audio. Unlike MFA, it doesn’t require a pronunciation dictionary and handles accented and multilingual speech better.

  • ASR Model: Qwen/Qwen3-ASR-1.7B
  • Forced Aligner: Qwen/Qwen3-ForcedAligner-0.6B

Word Alignment Script

import torch
from qwen_asr import Qwen3ASRModel

def align_audio(audio_path, text=None):
    device = "cuda" if torch.cuda.is_available() else "cpu"

    model = Qwen3ASRModel.from_pretrained(
        "Qwen/Qwen3-ASR-1.7B",
        dtype=torch.bfloat16,
        device_map=device,
        forced_aligner="Qwen/Qwen3-ForcedAligner-0.6B"
    )

    # If text is provided → forced alignment.
    # If text is None → transcribes first, then aligns.
    results = model.transcribe(
        audio=audio_path,
        language="English",
        return_time_stamps=True
    )

    for ts in results.time_stamps:
        print(f"Word: {ts.text:15s} | Start: {ts.start_time:.3f}s | End: {ts.end_time:.3f}s")

# align_audio("path/to/audio.wav")

Key Features

  • Sub-word precision — high-resolution timestamps for linguistic analysis
  • Robustness — handles background noise and varied accents
  • Multilingual — supports all languages in Qwen3’s training set
  • No dictionary required — unlike MFA, works on any language/accent without a G2P dictionary