Views
No views yet
jiwer library.bnunicodenormalizer to prevent visual-unicode mismatch penalties. The fine-tuned model's output was evaluated raw, proving its native alignment to the language.| Model | WER (%) | CER (%) | Script Err% (Devanagari) |
|---|---|---|---|
| Qwen3-ASR-1.7B-Bengali (FT) | 23.91% | 9.57% | 0.00% |
| Qwen3-ASR-1.7B (Base) | 71.17% | 40.26% | 80.20% |
| OpenAI Whisper Large-v3 | 72.73% | 28.73% | 29.40% |
bfloat16 precision and native HF gradient accumulation, masking prompt tokens (-100) to focus loss calculation purely on the Bengali textual output.<|audio_pad|> token so the model knows where to "listen."1import torch
2import librosa
3from transformers import AutoModel, AutoProcessor, AutoConfig
4
5model_id = "amugoodbad229/Qwen3-ASR-Bengali-FT"
6
7# 1. Initialize Processor and Model
8processor = AutoProcessor.from_pretrained(model_id, trust_remote_code=True)
9model = AutoModel.from_pretrained(
10 model_id,
11 dtype=torch.bfloat16,
12 device_map="auto",
13 trust_remote_code=True
14)
15
16# 2. Load audio (16kHz mono)
17audio, _ = librosa.load("path/to/audio.wav", sr=16000)
18
19# 3. Prepare Input with Prompt
20# The <|audio_pad|> token is mandatory for the processor
21prompt = "<|im_start|>user\n<|audio_pad|>Please transcribe.<|im_end|>\n<|im_start|>assistant\n"
22inputs = processor(text=prompt, audio=audio, sampling_rate=16000, return_tensors="pt").to(model.device)
23
24# Ensure floating point inputs match model precision
25inputs = {k: v.to(torch.bfloat16) if v.is_floating_point() else v for k, v in inputs.items()}
26
27# 4. Generate
28generated_ids = model.generate(**inputs, max_new_tokens=256)
29
30# 5. Decode
31transcription = processor.batch_decode(
32 generated_ids[:, inputs["input_ids"].shape[1]:],
33 skip_special_tokens=True
34)[0]
35
36print(f"Result: {transcription}")1from qwen_asr import Qwen3ASRModel
2
3# Load the model using the official wrapper
4# Ensure your model repo has the chat_template defined in tokenizer_config.json
5model = Qwen3ASRModel.from_pretrained("amugoodbad229/Qwen3-ASR-Bengali-FT")
6
7# Transcribe audio (Handles long-form audio chunking natively)
8results = model.transcribe(audio=["path/to/your/audio.wav"], language=[None])
9print(results[0].text)