/ Модель

Характеристики

Параметры
905 млн
Лицензия
CC BY 4.0
Архитектура
whisper · dense
Базовая модель
whisper-large-v3
Библиотека
transformers
Опубликована
11 сен 2026

azuolas-whisper-lt

Распознавание речиАудио → текст9 профессий

Ąžuolas — дообученная на литовской речи модель Whisper large-v3 для транскрибации аудиозаписей.

240скачиваний за 30 дней5лайковвеса обновлены11 сен 2026

Бенчмарки

Как модель справилась с задачами пользователей ailist и что о ней публикуют открытые лидерборды

Тесты пользователейпока нет

Никто ещё не опубликовал тест этой модели. Соберите бенчмарк из своих задач — результат появится здесь.

  1. Добавьте модель в бенчмарк

    Вместе с другими моделями категории «Распознавание речи» — сравнение идёт внутри одной категории.

  2. Опишите свои задачи

    Напишите запросы, при необходимости приложите файлы и эталонные ответы.

  3. Запустите и опубликуйте

    Модели ответят на каждую задачу, судья оценит ответы. Опубликованный результат появится на этой странице.

Публичные оценки

Из открытых лидербордов. Сравнивайте результаты одного теста при одинаковых условиях — отсутствие оценки не значит, что модель хуже.

В подключённых источниках результатов для этой модели пока нет.

Что умеет модель

Описание составлено по карточке модели и метаданным Hugging Face

Ąžuolas — модель распознавания литовской речи из аудиозаписей, созданная akisviete на основе Whisper large-v3 и дообученная методом SFT на корпусе LIEPA-3. В обучении использовано около 9,8 тысячи часов литовской речи: чтение, спонтанная речь и фонетические записи. Модель содержит около 905,2 млн параметров, построена на архитектуре Whisper и доступна в формате safetensors для Transformers.

Модель предназначена для транскрибации литовской речи, в том числе длинных записей и выступлений. В описанных тестах она показала более низкий WER, чем сравниваемые литовские модели, но работала медленнее. Лицензия — CC BY 4.0.

Известное ограничение: модель может генерировать связные литовские фразы на участках тишины или фонового шума. Для длинных записей автор рекомендует использовать обработку с фильтром тишины и нарезкой аудио на паузах.

Сценарии применения

  • транскрибация литовской речи из аудиозаписей
  • расшифровка спонтанной речи и выступлений
  • распознавание речи в длинных записях с паузами и несколькими голосами

Ограничения

Модель может придумывать связный текст на участках тишины или фонового шума. Она медленнее некоторых сравниваемых литовских моделей.

Для каких профессий подходит9

Разделы каталога профессий, в задачах которых используется эта модель

Все профессии

Также подходит для

Карточка модели

README от автора на Hugging Face, как он его опубликовал

Открыть на Hugging Face

Ąžuolas — lietuvių kalbos atpažinimo modelis

Ąžuolas atpažįsta lietuvišką kalbą iš garso įrašų. Tai whisper-large-v3 modelis, SFT apmokytas su visu LIEPA-3 garsynu — skaitoma kalba, laisva kalba ir fonetiniai įrašai.

Iš viso apie 9,8 tūkst. valandų garso: 5 230 val. skaitomos kalbos, 4 359 val. laisvos kalbos ir 217 val. fonetinių įrašų. Pats LIEPA-3 garsynas yra maždaug 11,4 tūkst. valandų — likusi dalis nenaudota, nes reikia apdoroti tą dataset'o dalį, o tikslas buvo išvengti papildomo apdorojimo.

Modelis pavadintas simbolinio Ąžuolo vardu Ąžuolyno bibliotekos garbei. Jis didžiausias ir lėčiausias iš čia lyginamų lietuviškų modelių, tačiau tiksliausias.

Vienas svarbus dalykas prieš pradedant. Ąžuolas prigalvoja tekstą, kai garse nieko nėra — per tylą ar foninį šnypštimą jis „išgirsta" sklandžius lietuviškus sakinius. Tai reali problema, ne smulkmena. Kaip su tuo dirbti — skyriuje Ką reikia žinoti.

Rezultatai

Visi trys modeliai išbandyti su ta pačia programa — ta, kurią parašė paprika-whisper-lt-v3 autorius (kristijonasatpro/paprika). Naudotos jo dekodavimo nuostatos ir jo teksto normalizavimas. Taip visi trys lyginami vienodai, o ne kiekvienas savo taisyklėmis.

FLEURS LT — 985 įrašai, 2,96 val.

modelisdydisWER %WER % be skaitmenųgreitis
Ąžuolas (whisper-large-v3)1,55 mlrd.9,054,6826× realaus laiko
paprika-whisper-lt-v3 (large-v3-turbo)0,81 mlrd.12,067,7883× realaus laiko
kmynas-parakeet-lt-v3 (Parakeet-TDT)0,6 mlrd.17,7313,57819× realaus laiko

Common Voice 26.0 LT — 5 877 įrašai, 8,50 val.

modelisWER %greitis
Ąžuolas4,6027× realaus laiko
paprika-whisper-lt-v38,6076× realaus laiko
kmynas-parakeet-lt-v322,86956× realaus laiko

WER — žodžių klaidų dalis. Mažiau yra geriau.

Abu testai visiems trims modeliams yra iš kitos srities: nei FLEURS, nei Common Voice nėra LIEPA-3 dalis, ir jų įrašymo sąlygos kitokios. Tai verta pabrėžti, nes paprika autorius sąmoningai neskelbia tokio skaičiaus — jo paruoštas FLEURS rinkinys pasirodė esąs 44 iš 44 skaitmeninės tylos įrašų, ir visi iš jo gauti skaičiai buvo atšaukti. Tad ši lentelė yra pirmas šių trijų modelių palyginimas su nepažįstamu garsu ir su vienoda tvarka.

Greičiai išmatuoti viena RTX PRO 6000, fp16. Su kita įranga skaičiai bus kitokie. Ąžuolas maždaug 3× lėtesnis už paprika, nes turi 32 dekoderio sluoksnius, o turbo — tik 4. Kmynas yra visai kitos sandaros ir maždaug 30× spartesnis už Ąžuolą.

Kodėl yra stulpelis „be skaitmenų"

FLEURS atsakymuose skaičiai rašomi skaitmenimis (25), o šie modeliai rašo žodžiais (dvidešimt penki). Formaliai tai klaida, nors atpažinta teisingai. Paprika autorius įvertino, kad tai kainuoja „maždaug 4 WER". Pasitvirtino beveik tiksliai, ir visiems trims vienodai:

visasbe skaitmenųskaitmenų kaina
Ąžuolas9,054,684,37
paprika-whisper-lt-v312,067,784,28
kmynas-parakeet-lt-v317,7313,574,16

Kaina beveik vienoda visiems, tad tai atsakymų teksto, o ne modelių savybė. Stulpelis „be skaitmenų" geriau parodo tikrą atpažinimo kokybę.

Tikras įrašas — 57 minutės iš renginio

Testų įrašai trumpi, tvarkingi ir skaitomi. O čia tie patys trys modeliai su tikru įrašu: Vido Mačiulio knygos „Kitas gyvenimas" pristatymu Ąžuolyno bibliotekoje. 57,1 minutės nerepetuotos kalbos su publika, persidengiančiais balsais ir plojimais (youtube.com/watch?v=BrfheG5EJR4).

Šįkart naudota visa paprika ilgų įrašų programa, ne tik nuostatos: tylos filtras, karpymas pauzėse, tada atpažinimas kiekvienoje dalyje atskirai.

modelisžodžiųteksto įvairumasgreitisdažniausiai pasikartojusi frazė
Ąžuolas6 6460,9988,9× realaus laiko„ir taip toliau aš" ×4
paprika-whisper-lt-v36 6360,99835,0× realaus laiko„ir taip toliau aš" ×4
kmynas-parakeet-lt-v36 5540,9981 039× realaus laiko„ir taip toliau aš" ×4

Kiek modelių tekstai sutampa tarpusavyje:

Ąžuolas ↔ paprika93,1 %
Ąžuolas ↔ kmynas90,3 %
paprika ↔ kmynas88,6 %
  • Visi trys sutampa 92 žodžių ribose — 1,4 %. Nė vienas nepraleidžia ir neprigalvoja didelių gabalų. Būtent tai svarbiausia ilguose įrašuose, ir trumpų įrašų WER to nerodo.
  • Teksto įvairumas 0,998 visiems — niekas neįstrigo kartodamas tą patį. Dažniausia frazė visuose trijuose tekstuose ta pati — „ir taip toliau aš", keturis kartus. Tai tikra kalbos frazė, ne modelio klaida. Taip veikia karpymas pauzėse; tie patys modeliai, karpant fiksuotu žingsniu, jau įstringa.

Šios lentelės greičiai išmatuoti fp32, o ne fp16, nes paprika programa garso požymius verčia į fp32. Todėl Ąžuolas čia rodo 8,9×, o FLEURS lentelėje su fp16 — 26×. Šių dviejų lentelių greičių tarpusavyje nelyginkite.

Patikrinta ir kita programa

Tie patys modeliai išmatuoti dar ir nepriklausoma programa (šio projekto eval_compare.py, kitos nuostatos, kitas WER skaičiavimas):

FLEURS / CV 26.0paprika programanepriklausomaskirtumas
Ąžuolas9,05 / 4,609,12 / 4,970,07 / 0,37
paprika-whisper-lt-v312,06 / 8,6011,84 / 8,420,22 / 0,18

Dvi nepriklausomos programos sutampa 0,4 punkto ribose visur ir į abi puses. Todėl eiliškumu galima tikėti. Nė viena programa nepataikauja savo autoriaus modeliui: paprika programa pačią paprika įvertina net kiek griežčiau.

Dar viena patikra: kmynas modelis per šią programą gavo FLEURS 17,73 ir be skaitmenų 13,57, o jo pačio kortelėje paskelbta 17,15 ir 13,11. Skirtumas 0,6 ir 0,5 punkto. Tą skaičių gavo pats programos autorius su tuo pačiu modeliu, tad sutapimas rodo, kad programa perkelta teisingai.

Kaip naudoti

Modelis rašo mažosiomis raidėmis ir be skyrybos ženklų — taip užrašyti LIEPA-3 atsakymai. Jis rašo ir taip, kaip pasakyta, o ne kaip taisyklinga: turim, ne turime.

Jei reikia skyrybos, didžiųjų raidžių ar kalbėtojų žymų — tai atskiri modeliai. Paprika saugykloje esantis transcribe_file.py visa tai padaro aplink Whisper modelį ir veikia su šiuo per --model.

Formatai

Modelis paskelbtas trimis pavidalais. Svoriai visur tie patys — tas pats best_model.pt, iš kurio gauti visi šios kortelės skaičiai — ir visur fp16.

pavidalaskurkaip įkelti
transformersakisviete/azuolas-whisper-ltWhisperForConditionalGeneration.from_pretrained(...)
faster-whisperakisviete/azuolas-whisper-lt-ct2WhisperModel(...)
openai-whisperoriginal/best_model.pt pagrindinėje saugyklojewhisper.load_model(kelias)

Abiejuose paruoštuose pavidaluose įrašytos 10 alignment_heads porų — oficialus OpenAI rinkinys large-v3 modeliui (iš 640 dekoderio kryžminio dėmesio galvų). Be jų faster-whisper pats pasirenka 320 porų iš paskutinės dekoderio pusės; išmatuota, kad tada nulinės trukmės žodžių padvigubėja (42 → 70).

Svoriai fp16. Jei dirbate procesoriumi, įkeldami nurodykite dtype=torch.float32 — fp16 procesoriuje lėtas. Tikslumas nuo to nekinta: skaičiai tie patys, tik kitaip užrašyti.

Trumpi įrašai

import torch, soundfile as sf
from transformers import WhisperForConditionalGeneration, WhisperProcessor

MODEL = "akisviete/azuolas-whisper-lt"

proc = WhisperProcessor.from_pretrained(MODEL, language="lithuanian", task="transcribe")
mdl = WhisperForConditionalGeneration.from_pretrained(MODEL, dtype=torch.float16).to("cuda").eval()

wav, sr = sf.read("irasas.wav", dtype="float32")        # 16 kHz, vienas kanalas
f = proc(wav, sampling_rate=16000, return_tensors="pt")
ids = mdl.generate(f.input_features.to("cuda", torch.float16),
                   language="lithuanian", task="transcribe",
                   condition_on_prev_tokens=False,
                   temperature=(0.0, 0.2, 0.4, 0.6, 0.8, 1.0),
                   logprob_threshold=-1.0,
                   compression_ratio_threshold=1.35,
                   no_speech_threshold=0.6)
print(proc.decode(ids[0], skip_special_tokens=True))

Su faster-whisper — maždaug 4× greičiau ir mažiau atminties. vad_filter=True kartu išsprendžia tylos problemą, aprašytą žemiau:

from faster_whisper import WhisperModel

m = WhisperModel("akisviete/azuolas-whisper-lt-ct2", device="cuda",
                 compute_type="float16")
segs, _ = m.transcribe("irasas.wav", language="lt", beam_size=5,
                       vad_filter=True, condition_on_previous_text=False)
for s in segs:
    print(f"[{s.start:6.2f} -> {s.end:6.2f}] {s.text}")

Ilgi įrašai — karpykite patys

Supjaustykite garsą į dalis iki 22 sekundžių, kirpdami tylose tarp kalbos, ir atpažinkite kiekvieną dalį atskirai.

Kirpimo vietas imkite iš Silero VAD — raskite kalbos sritis ir kirpkite tarpų tarp jų viduriuose. Tai svarbu ne mažiau už patį ilgį: išmatuota, kad toks kirpimas duoda apie 4 punktais geresnį rezultatą nei paieška pagal garso lygį, kuri gali pataikyti į tylesnę vietą žodžio viduryje.

22 sekundės nėra spėjimas. Su 57 minučių įrašu išbandytos visos ribos ir palygintos su atskaitos tekstu:

dalies ilgisskirtumas nuo atskaitos
16 s13,86 %
22 s13,38 %
28 s14,07 %
40 s15,10 %
60 s24,62 %

Trumpesnės dalys verčia kirpti kalbos viduryje (prie 8 s taip nutinka 71 % kirpimų, prie 28 s — 56 %), ir kiekvienas nevykęs kirpimas prigalvoja žodžių abiejuose galuose. Ilgesnės dalys pradeda mesti tekstą: prie 60 s praleidimų penkis kartus daugiau. Tai patikrinta su dviem skirtingai apmokytais modeliais, ir geriausia riba nepasikeitė.

Du įspėjimai, abu patirti savo kailiu:

  • Nenaudokite chunk_length_s iš transformers. Jis karpo fiksuotu žingsniu ir lipdo tekstą pagal persidengimus, o ko nesulipdo — išmeta. Paprika autorius išmatavo, kad taip tyliai prarandama 30 ir 52 žodžiai sandūrose. Tekstas atrodo tvarkingas, niekas nerodo, kad kažko nėra.
  • Per ilgos dalys sugenda tyliai. Prie 60 s tekste pritrūksta apie 13 % žodžių, o visi „sveikatos" rodikliai atrodo geri. Tik žodžių skaičius, palygintas su atskaita, tai parodo.

Ką reikia žinoti

Modelis prigalvoja tekstą per tylą, ir apsauga neveikia. Su 60 sekundžių įrašais: visiška tyla — 78 simboliai, tylus šnypštimas — 947 simboliai sklandaus lietuviško teksto, kambario fonas — 247. Pati Whisper apsauga nesuveikia: išmatuota tikimybė „nėra kalbos" per šnypštimą 0,0009, o originaliam large-v3 — 0,8154.

Du būdai, abu veikia:

  • Išfiltruokite tylą prieš atpažinimą — paprastas garso lygio patikrinimas, kaip daro paprika programa. Užima mikrosekundes ir problemą pašalina.
  • Naudokite vad_filter=True su faster-whisper. Išmatuota: 0 simbolių visais trimis atvejais.

Kodėl taip atsitiko: dėl mokymo duomenų, ne dėl sandaros. Garsynas buvo paruoštas suklijuojant sakinių įrašus į 30 sekundžių langus be tarpų, tad modelis niekada nematė lango be kalbos ir neišmoko nutilti.

Kiti apribojimai:

  • Rašo mažosiomis raidėmis, be skyrybos.
  • 16 kHz, vienas kanalas. Vyrauja skaitoma ir laisva kalba. Tarmių dalies nėra — paprika v3 ją turi.
  • Maždaug 3× lėtesnis už paprika. Išmatuota: 404 s prieš 128 s su 985 FLEURS įrašais.
  • Ankstesnėse šios linijos versijose buvo sugedęs ilgų įrašų laiko žymėjimas. Priežastis — langų klijavimas, kuris išjungdavo laiko žymų mokymą. Pataisyta nustatant no_timestamp_rate: 0.5; klaidų skaičius nukrito nuo 23 iki 0. Šioje versijoje laiko žymos patikimos, bet tekstui vis tiek geriau karpyti patiems.
  • Mokymo metu matytas 2,99 % WER yra iš tos pačios srities kaip ir mokymo duomenys. Tai ne tikras vertinimas — remkitės FLEURS ir CV skaičiais.

Kaip apmokyta

Metodas ne savas. Jis paimtas iš i4Ds/FHNW darbo Fine-tuning Whisper on Low-Resource Languages for Real-World Applications (arXiv:2412.15726) — ten aprašytas ir duomenų klijavimas, ir mokymo tvarka. Skirtumai nuo straipsnio surašyti šaltiniuose.

pagrindasopenai/whisper-large-v3, apmokyti visi svoriai
duomenysvisas LIEPA-3 — 5 230 val. skaitoma + 4 359 val. laisva + 217 val. fonetinė
paruošimasi4Ds Whisper-prep, klijavimas į 30 s langus, overlap_chance 0,4
optimizatoriusAdamW + Muon, muon_ndim_threshold 2
mokymo greitis2e-5, kosinusinis, 64 įšilimo žingsniai
Muonmomentas 0,95, svorių slopinimas 0,01
AdamW (pagalbinis)betos [0,9 · 0,98], eps 1e-6, svorių slopinimas 0,01
paketas32 × 8 = 256
epochos2
reguliarizacijažymų lyginimas 0,1, atsitiktinis gylis 0,1, max_grad_norm 1,0
garso iškraipymaiSpecAugment ir deep SpecAugment
skaičių tikslumasfp16, gradientų perskaičiavimas koduotuve ir dekoduotuve
laiko žymosno_timestamp_rate 0,5, prompt_use_rate 0,5
failas3,09 GB fp16

Muon taikomas tik dvimačiams svoriams transformerio blokuose. Įterptiniai vektoriai, konvoliucinis įėjimas, normalizavimo sluoksniai ir visi poslinkiai tvarkomi pagalbiniu AdamW.

Šaltiniai

Lyginti modeliai

Vertinimo programa (naudota visoms lentelėms)

Pagrindinis mokymo šaltinis

  • Vincenzo Timmel, Claudio Paonessa, Reza Kakooee, Manfred Vogel, Daniel Perruchoud. Fine-tuning Whisper on Low-Resource Languages for Real-World Applications. arXiv:2412.15726, 2024 m. gruodžio 20 d., CC BY 4.0 — https://arxiv.org/html/2412.15726v1

    FHNW (Šiaurės vakarų Šveicarijos taikomųjų mokslų universitetas) ir Noxenum. Būtent šis darbas aprašo metodą, kuriuo Ąžuolas paruoštas ir apmokytas, o Whisper-prep bei Whisper-finetune yra jo kodas. Iš jo perimta: sakinių lygio įrašų klijavimas į 30 s langus su VAD pataisytomis laiko žymomis, kalbėtojo išlaikymas, persidengimai, no_timestamp_rate ir prompt_use_rate po 0,5, paketas 256, gradientų perskaičiavimas koduotuve ir dekoduotuve, atsitiktinis gylis ir SpecAugment.

    Kur nukrypta: jie pradėjo nuo large-v2 (šveicarų vokiečių kalbai jis pasirodė geresnis), Ąžuolas — nuo large-v3; jų mokymo greitis 2e-4 ir tiesinis mažėjimas, Ąžuolo 2e-5 ir kosinusinis; jie naudojo 8 bitų AdamW, Ąžuolas — AdamW + Muon.

    Vertas dėmesio ir straipsnio 4.4 skyrius: autoriai patys pastebi, kad po tokio permokymo tikrų ilgų įrašų skaidymas ir atpažinimas pablogėja. Tas pats matyti ir čia — todėl kortelėje ir rašoma karpyti patiems.

Mokymo kodas

Naudotos šios pataisos, visos pasiūlytos ir pirminiams projektams. no_timestamp_rate pataisa yra ta, dėl kurios šioje versijoje laiko žymos naudotinos:

pataisaprojektaską pataiso
whisper-prep#6whisper-preppalieka visą 30 s langą ir įrašo persidengiančio segmento pradžios laiką
whisper-prep#7whisper-prepVTT MM:SS.mmm skaitymas, prarasta paskutinė eilutė, pasenęs buferis (perkelta iš jumon#33)
whisper-finetune#11whisper-finetuneįspėja, kad no_timestamp_training tyliai išjungia no_timestamp_rate
whisper-finetune#12whisper-finetunepriima vieną likusią pradžios žymą _get_partial_segment_start
whisper-finetune#13whisper-finetunepraleidžia nieko nekeičiantį kalbos map (~65 min. garso perrašymo per kiekvieną mokymą)

Duomenys

Metodai

  • Muon — https://kellerjordan.github.io/posts/muon/ ir Muon is Scalable for LLM Training, arXiv:2502.16982
  • Silero VAD — https://github.com/snakers4/silero-vad
  • Distil-Whisper, arXiv:2311.00430 — iš kur 22 sekundės. Jų 23 lentelė rodo, kad geriausias gabalo ilgis seka mokymo lango ilgį: Whisper optimalus ties 30 s, Distil-Whisper ties 15 s, nes pastarojo mokymo imties vidurkis 7,1 s. Ten pat ir haliucinacijų matavimas per pasikartojančias 5-gramas. Patys autoriai naudoja persidengiantį chunk_length_s karpymą; išbandyta su šiuo modeliu — Silero VAD karpymas už jį geresnis.
  • Semantic Segmentation with Bidirectional Language Models Improves Long-form ASR, arXiv:2305.18419 — išbandyta ir atmesta. Siūloma kirpti ties sakinių ribomis, o ne ties pauzėmis. Patikrinta su šiuo modeliu ir 57 minučių įrašu: pralaimi Silero VAD kirpimui. Pasirodo, kad svarbu pataikyti į tikrą tylą, o ne į sakinio ribą — Silero kerpa per sakinio vidurį dažniau, ir vis tiek yra geresnis.

Licencija

Svoriai — CC BY 4.0, perimant LIEPA-3 garsyno nuorodų grandinę (VU / raštija.lt). Pagrindinis modelis openai/whisper-large-v3 — Apache-2.0.

Kontaktai

Dėl klausimų ir pasiūlymų rašykite akisviete@gmail.com.

Как запустить

На своей GPU в ailist. Цена — по текущим предложениям провайдеров

GPU в ailist

Универсальный рантайм · transformers

Можно запустить

Подбираем GPU…

Класс архитектуры
WhisperForConditionalGeneration
Ревизия весов
ec413b4

0 моделей