BoomBigNose Lab

w2v-BERT 2.0 CTC — ภาษามลายูปัตตานี (อักษรไทย)

BoomBigNose Lab GitHub

โมเดลรู้จำเสียงภาษามลายูปัตตานี ถอดออกมาเป็นอักษรไทยแบบที่คลัง SLSCU ใช้ สร้างบน facebook/w2v-bert-2.0 แบบ character CTC

ผลลัพธ์

วัดด้วย protocol eval_v2 ชุดเดียวกับคู่แข่งทุกตัว (hash f1f03f053b40) ค่าเป็น CER (%) ยิ่งต่ำยิ่งดี

ระบบ CER
โมเดลนี้ + char 6-gram LM (beam 8, lm_w 0.3, bonus 1.0) 12.71
โมเดลนี้ greedy 14.57
typhoon-asr-qwen-1.7b-ctx (คู่แข่งที่ดีที่สุด) 65.05
  • เทียบคู่แข่งที่ดีที่สุด: ต่าง −52.35 จุด, CI95 [−53.93, −50.97], ดีกว่า 80% แบบสัมพัทธ์
  • ESPnet ของ SLSCU ได้ 14.79 แต่เลือก checkpoint บนชุดเดียวกับที่เราใช้ทดสอบ จึงรายงานเป็นค่าอ้างอิงเท่านั้น

วิธีใช้

git clone https://github.com/Boom-Vitt/thai-dialect-asr.git && cd thai-dialect-asr && pip install -e .

# greedy
python scripts/transcribe.py --model BoomBigNoseLab/w2v-bert-thai-pattani-ctc audio.wav

# ใส่ LM (ไฟล์ lm/pattani.char6.json.gz อยู่ใน repo นี้)
python scripts/transcribe.py --model BoomBigNoseLab/w2v-bert-thai-pattani-ctc \
  --lm lm/pattani.char6.json.gz --lm-w 0.3 --bonus 1.0 --beam 8 audio.wav

ถ้าใช้ transformers โดยตรง (ถอดแบบ greedy):

import torch, soundfile as sf
from transformers import AutoProcessor, Wav2Vec2BertForCTC
proc = AutoProcessor.from_pretrained("BoomBigNoseLab/w2v-bert-thai-pattani-ctc")
model = Wav2Vec2BertForCTC.from_pretrained("BoomBigNoseLab/w2v-bert-thai-pattani-ctc").eval()
audio, sr = sf.read("audio.wav")  # 16 kHz mono
x = proc(audio, sampling_rate=16000, return_tensors="pt")
ids = model(**x).logits.argmax(-1)[0]
print(proc.decode(ids))

การเทรน

  • ข้อมูล: SLSCU Thai Dialect Corpus ผ่าน CMKL/Porjai ใช้ชุดเทรนของสามสำเนียง (มลายูปัตตานี, โคราช, คำเมือง) รวมประมาณ 110 ชั่วโมง ข้อความเทรนผ่านการกรองซ้ำกับเฉลยของชุดทดสอบและ dev ทุกชุดแล้ว
  • โมเดล: character CTC เทรนร่วมกับ head ระบุสำเนียง แล้วเลือก checkpoint ที่ดีที่สุดบน dev ปัตตานี ซึ่งแยกออกมาจากชุดเทรน
  • LM: character 6-gram Kneser–Ney จากข้อความเทรนปัตตานีเท่านั้น เก็บในรูป JSON (gzip) ไม่ใช้ pickle น้ำหนัก LM เลือกบน dev ด้วยการแบ่ง 2 fold

ข้อจำกัด

  • ชุดทดสอบ: คือชุด dev ที่ SLSCU เผยแพร่ ยังตรวจไม่ได้ว่าผู้พูดซ้ำกับชุดเทรนหรือไม่
  • ประโยคแม่แบบ: ข้อมูลส่วนใหญ่เป็นประโยคตามแม่แบบในโดเมน e-commerce และแบบสำรวจ ผลกับบทสนทนาทั่วไปอาจแย่ลง
  • ผลถอด: เป็นอักษรไทยตามแบบที่ SLSCU ใช้ ไม่ใช่อักษรรูมี

สัญญาอนุญาต

CC BY-NC-SA 4.0 (ตามข้อมูลฝึก) ใช้ได้เพื่อการวิจัยและไม่ใช่เชิงพาณิชย์ ส่วนโค้ดใน GitHub ใช้ Apache-2.0

อ้างอิง

พัฒนาโดย BoomBigNose Lab · โค้ดและชุดวัดผล: https://github.com/Boom-Vitt/thai-dialect-asr

@misc{thai_dialect_asr_2026,
  title        = {Thai Dialect ASR: Same-Protocol Benchmarking of Central and Regional Thai Speech Recognition},
  author       = {{BoomBigNose Lab}},
  year         = {2026},
  howpublished = {\url{https://github.com/Boom-Vitt/thai-dialect-asr}}
}
Downloads last month
3
Safetensors
Model size
0.6B params
Tensor type
F16
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for BoomBigNoseLab/w2v-bert-thai-pattani-ctc

Finetuned
(542)
this model

Collection including BoomBigNoseLab/w2v-bert-thai-pattani-ctc

Evaluation results

  • CER (CTC prefix beam + char 6-gram LM) on SLSCU Thai Dialect Corpus — Pattani Malay (released dev split, 834 utts)
    self-reported
    12.710
  • CER (greedy) on SLSCU Thai Dialect Corpus — Pattani Malay (released dev split, 834 utts)
    self-reported
    14.570