Whisper Base Hungarian Soup

Magyar nyelvre finomhangolt openai/whisper-base modell, amely két korábbi finomhangolás súlyátlagolásával (model soup) készült.

A modell a 90%-ban a whisper-hu-base-finetuned-V2 és 10%-ban a whisper-base-hungarian_v4 súlyaiból áll — és mindkét alapmodellnél jobban teljesít.

Hogyan készült — a merge részletei

A módszer: súlyátlagolás (model soup)

Mindkét alapmodell ugyanabból az openai/whisper-base súlykészletből indult, ezért a hálózati topológiájuk és a state dict kulcsaik azonosak. A merge minden egyes paraméterre kiszámolja a súlyozott átlagot:

w_merged = α · w_V2 + (1 − α) · w_V4

minden rétegre és paraméterre külön-külön (encoder, decoder, embeddignek, fejek — a teljes state dict).

Az arány keresése

Az α arányt empirikusan hangoltuk a FLEURS hu_hu test készleten (beam=1, normalizált WER):

α (V2 aránya) FLEURS WER
0.50 25.83
0.60 25.60
0.70 25.44
0.75 25.11
0.80 24.30
0.85 24.07
0.90 24.05 ← legjobb
0.95 24.52
1.00 (tiszta V2) 25.79
0.00 (tiszta V4) 26.68

Az optimum α = 0.90 (90% V2 + 10% V4). A V4 10%-nyi súlya épp annyi zaj-robusztusságot és adatváltozatosságot ad hozzá, hogy a V2 hibáit kisimítsa anélkül, hogy a tiszta teljesítményét rontaná.

Eredmények

Tiszta anyag — FLEURS hu_hu test (normalizált WER)

Modell beam=1 beam=2 beam=3 beam=4 beam=5
whisper-base-hungarian-soup (ez) 24.05 23.33 23.09 23.04 22.94
whisper-hu-base-finetuned-V2 25.79 24.26 23.80 23.77 23.67
whisper-base-hungarian_v4 26.68 25.29 24.81 24.71 24.73
whisper-base-hungarian_v3 29.81 29.07 28.84 28.57 29.28
whisper-base-hungarian_v1 30.91 29.19 28.94 29.04 28.77

Common Voice 17.0 hu test (normalizált WER)

Modell beam=1 beam=2 beam=3 beam=4 beam=5
whisper-hu-base-finetuned-V2* 14.73 14.03 13.90 13.85 13.81
whisper-base-hungarian-soup (ez) 15.20 14.60 14.48 14.46 14.46
whisper-base-hungarian_v4 19.47 18.72 18.61 18.54 18.62
whisper-base-hungarian_v3 21.80 21.23 21.11 21.06 21.09
whisper-base-hungarian_v1 21.48 20.75 20.57 20.54 20.51

*A Common Voice 17.0 train+valid spliteket a V2 tréningje tartalmazta, ezért ott az eredményei nem teljesen függetlenek. Ennek ellenére a soup csak ~0.5 ponttal marad el tőle, miközben a többi készleten veri.

Zajos anyag (~10 dB MUSAN zaj, 905 minta, beam=1)

Modell WER
whisper-base-hungarian-soup (ez) 40.2
whisper-hu-base-finetuned-V2 41.6
whisper-base-hungarian_v4 47.5
whisper-base-hungarian_v3 51.0
whisper-base-hungarian_v1 56.2

Összegzés

  • FLEURS: 1.7 ponttal jobb, mint a legjobb alapmodell (V2)
  • Zajos anyag: 1.4 ponttal jobb, mint a legjobb alapmodell (V2)
  • CV17: ~0.5 ponttal a V2 mögött (amely a CV17 train/valid-ot látta), de 4 ponttal a V4 előtt

Az alapmodellek

V2 (whisper-hu-base-finetuned-V2) V4 (whisper-base-hungarian_v4)
Adat ~2000 óra (CV17 train+valid splitekkel bővítve) ~1617 óra (hangoskönyv + film + közösségi)
Célok normalizált (számok szövegesen, nagybetűk nélkül) nyers átiratok
Zaj-augmentáció nincs 20%, SNR 10–25 dB (MUSAN)
Hyperparaméterek lr 7e-5, 3 epoch, gradient checkpointing lr 3e-4, 3 epoch, batch 256

A két modell eltérő adaton és célokkal tanult — a soup pontosan ezt a kiegészítő információt hasznosítja.

Intended uses & limitations

Magyar nyelvű beszédfelismerésre készült. Felolvasott, stúdióminőségű beszéd mellett zajos környezetben is megbízhatóan működik. Élőbeszéd, telefonbeszélgetés vagy erős akusztikai torzítás esetén a teljesítmény elmaradhat a felolvasott anyagon mért értékektől.

A modell kereskedelmi felhasználása a hozzájárulás nélkül nem engedélyezett. Magáncélra a Whisper eredeti licencfeltételei szerint szabadon használható.

Használat

from transformers import pipeline

pipe = pipeline(
    "automatic-speech-recognition",
    model="sarpba/whisper-base-hungarian-soup",
)
result = pipe("magyar_beszed.wav", generate_kwargs={"language": "hungarian", "task": "transcribe"})
print(result["text"])

Reprodukálás

A soup a következő képlettel reprodukálható a két alapmodellből:

import torch
from transformers import AutoModelForSpeechSeq2Seq

alpha = 0.90  # V2 aránya
m2 = AutoModelForSpeechSeq2Seq.from_pretrained("sarpba/whisper-hu-base-finetuned-V2")
m4 = AutoModelForSpeechSeq2Seq.from_pretrained("sarpba/whisper-base-hungarian_v4")

sd2, sd4 = m2.state_dict(), m4.state_dict()
merged = {k: alpha * sd2[k].float() + (1 - alpha) * sd4[k].float() for k in sd2}

m = AutoModelForSpeechSeq2Seq.from_pretrained("openai/whisper-base")
m.load_state_dict(merged, strict=True)
Downloads last month
120
Safetensors
Model size
72.6M params
Tensor type
F32
·
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support

Model tree for sarpba/whisper-base-hungarian-soup

Finetuned
(751)
this model

Evaluation results