Views
No views yet
Qwen/Qwen2-Audio-7B-Instruct, fine-tuned for Moroccan Darija (الدارجة) ASR. Part of a Phase 1 study comparing end-to-end audio-LLM (Qwen2-Audio) vs cascaded ASR (Whisper-LV3) under an identical protocol.100-gt-2.5, 30h sampled with seed=42 (after carving 2000 val samples).| Partition | n | WER | CER |
|---|---|---|---|
| full | 1962 | 47.58% | 18.23% |
| code_switched | 194 | 51.36% | 23.19% |
| monolingual | 1768 | 47.03% | 17.50% |
| Partition | n | WER | CER |
|---|---|---|---|
| full | 500 | 63.98% | 26.61% |
| code_switched | 0 | — | — |
| monolingual | 500 | 63.98% | 26.61% |
1from transformers import Qwen2AudioForConditionalGeneration, AutoProcessor
2from peft import PeftModel
3import torch, librosa
4
5base = Qwen2AudioForConditionalGeneration.from_pretrained(
6 "Qwen/Qwen2-Audio-7B-Instruct", torch_dtype=torch.bfloat16, attn_implementation="sdpa").to("cuda")
7model = PeftModel.from_pretrained(base, "Tilas/qwen2-audio-darija-marco-30h").to("cuda").eval()
8processor = AutoProcessor.from_pretrained("Tilas/qwen2-audio-darija-marco-30h", trust_remote_code=True)
9
10audio, sr = librosa.load("darija.wav", sr=16000)
11conv = [{"role": "user", "content": [
12 {"type": "audio", "audio_url": "darija.wav"},
13 {"type": "text", "text": "Transcribe speech to text "}]}]
14text = processor.apply_chat_template(conv, add_generation_prompt=True, tokenize=False)
15inputs = processor(text=text, audios=[audio], sampling_rate=sr, return_tensors="pt").to("cuda")
16out = model.generate(**inputs, max_new_tokens=256, do_sample=False)
17print(processor.batch_decode(out[:, inputs.input_ids.shape[1]:], skip_special_tokens=True)[0])