Знакът на КАГАМИ КАГАМИ
kagami.bg/academy · lesson · machine-readable viewTESTED 2026-10-28
IDENTITY
module
KW I33 · Bulgarian speech to text: trialing two local models
series
KAGAMI Way / Local AI
level
Intermediate
duration
~18 min
trust_label
TESTED 2026-10-28 (both models run locally on one machine with an NVIDIA GB10 chip and 128 GB unified memory; same audio, same scoring)
language
human view: bg · english edition: /en/academy/moduli/KW_I33_Speech_To_Text_Trial.html
prev
KW I22 · Two nodes: worker + brain
next
module index
PURPOSE

Show how to compare speech-to-text models for Bulgarian fairly — a test set with reference text, one error metric, one normalisation, the same audio for both — and what the numbers do not tell you.

RESULTS
KEY CONCEPTS
COMMANDS / PATHS
CHECKLIST
NEXT MODULE

Module index · offer: Quick experiment €39 incl. VAT (kagami.bg/stalbata/)

SOURCES
TAGS

speech-to-text · ASR · Bulgarian · WER · FLEURS · Whisper · Nemotron · vLLM · local AI · translation · evaluation

ТЕСТВАНО · 28.10.2026

Реч в текст на български: изпитание на два локални модела

Излезе нов модел, който обещава по-добро разпознаване на реч. Как да разбереш дали е по-добър за български, а не за рекламата? Един и същ звук, верен текст за сравнение и едно и също мерило. Пробвахме Nemotron 3.5 Transcribe срещу Whisper large-v3 на наша машина — ето метода и какво излезе.

⏱ ~18 мин Средно KAGAMI Way · I33 тест · грешни думи · превод
Whisper large-v3🔒 локално Nemotron 3.5 Transcribe🔒 локално FLEURS — тестови записи🌐 публични данни

01Какво ще научиш

02Преди да започнеш

⛔
Остави запас памет
Голям модел при зареждане за миг взима повече, отколкото си му разрешил. Ако на същата машина работят и други услуги, провери свободната памет преди старта и остави поне 20 GB запас. След партидата спри модела.

03Стъпки

  1. Вземи записи с верен текст

    Без верен текст не можеш да кажеш кой греши — само кой пише различно. Затова започни с публичен тест: FLEURS на Google има български записи и текста им. Взехме 60 различни изречения, по един запис на изречение, с фиксиран случаен избор — така пробата се повтаря.

    Звукът във формата, който моделите очакват
    ffmpeg -i zapis.mp3 -ac 1 -ar 16000 zapis.wav
  2. Мери с едно мерило

    Мерилото е процентът грешни думи: колко думи са заменени, изпуснати или добавени спрямо верния текст. Преди сметката и двата текста се „нормализират“ еднакво — малки букви, без препинателни знаци. Иначе един модел губи точки за запетая, а не за дума.

    Процент грешни думи · Python
    import re, unicodedata
    
    def dumi(s):
        s = unicodedata.normalize("NFC", s.lower()).replace("ѝ", "и")
        return re.sub(r"[^\w\s]", " ", s).split()
    
    def razlika(a, b):  # колко думи да сменим, махнем или добавим
        d = list(range(len(b) + 1))
        for i, x in enumerate(a, 1):
            p, d[0] = d[0], i
            for j, y in enumerate(b, 1):
                p, d[j] = d[j], min(d[j] + 1, d[j - 1] + 1, p + (x != y))
        return d[-1]
    
    def greshki(verni, modelni):
        e = sum(razlika(dumi(v), dumi(m)) for v, m in zip(verni, modelni))
        return 100 * e / sum(len(dumi(v)) for v in verni)
    ⚠️
    Капан: числата
    Ние не нормализираме числата. „М16“ срещу „М шестнадесет“ се брои за грешка. Затова числата на различни сайтове не се сравняват едно с друго — всеки нормализира по своему.
  3. Пусни двата модела с едни и същи условия

    И на двата кажи изрично езика и сложи „температура“ 0 — без случайност. Whisper приема езика като настройка. Nemotron приема указание с думи заедно със звука: език, дословно или изчистено, как да пише числата, кои имена да очаква.

    Указание към Nemotron · транскрипция
    Audio transcription. Language: Bulgarian, in its standard writing system.
    Formatting: punctuation and capitalization. Output: transcript only.
    Заявка към локалния сървър (vLLM) · Python
    import base64, requests
    
    zvuk = base64.b64encode(open("zapis.wav", "rb").read()).decode()
    otg = requests.post("http://localhost:<порт>/v1/chat/completions", json={
        "model": "nemotron", "temperature": 0,
        "chat_template_kwargs": {"enable_thinking": False},
        "messages": [{"role": "user", "content": [
            {"type": "text", "text": "Audio transcription. Language: Bulgarian. Output: transcript only."},
            {"type": "audio_url", "audio_url": {"url": "data:audio/wav;base64," + zvuk}}]}]})
    print(otg.json()["choices"][0]["message"]["content"])
    💡
    Имена и термини
    Добави към указанието „Context terms:“ и изброй имената, които ще се чуят — организации, хора, места. Така моделът ги пише правилно, вместо да ги гадае.
  4. Прочети числата — и грешките

    На 60-те български изречения:

    Резултат · 28.10.2026
    Модел                         Грешни думи   По-добър в
    Whisper large-v3              15,23 %       14 изречения
    Nemotron 3.5 Transcribe       11,86 %       36 изречения
    (равни: 10 изречения)

    Nemotron пише по-чисто окончанията и сложните думи: „заледяванията и снеговалежите“ там, където Whisper пише „залетяванията и снеговележите“. Но прочети и обратните случаи. В едно изречение Nemotron „довърши смисъла“ сам и написа гладко, но грешно: „спускащи се от М шестнадесет“ вместо „с пушката си М16“. В жив запис веднъж обърна смисъла на цяло изречение.

    ✅
    Правилото
    По-малко грешни думи не значи по-безопасен текст. Протокол, цитат или решение, записано от модел, се чете от човек срещу звука.
    ⚠️
    Капан: скоростта
    Whisper ни работеше на процесора, Nemotron — на видеокартата. Затова 17 секунди срещу 1 секунда на запис не е сравнение на моделите, а на машините. Скорост сравнявай само на една и съща техника.
  5. Пробвай жив запис и превод

    Тестовите записи са четене на глас. Живата реч в зала е по-трудна. Пуснахме по 3 минути жива лекция на български — двата текста се различаваха в около 12 % от думите, без верен текст, по който да кажем кой е прав. Тук решава човек, който слуша.

    Nemotron може и да превежда от звук: пуснахме английско изказване с указание „Please translate the given speech to Bulgarian.“ и получихме гладък български текст. Whisper превежда само към английски.

    ⚠️
    Капан: грешно зададен език
    Ако кажеш на Whisper „български“, а записът е на английски, той връща полупревод с грешки. Първо провери на какъв език е записът — Whisper може да го познае сам, ако не му зададеш език.

04Проверка

1. Какво ти трябва, за да кажеш кой модел греши по-малко?

2. Защо текстовете се нормализират преди сметката?

3. Моделът с по-малко грешни думи написа протокол от среща. Какво правиш?

4. Единият модел работи на процесор, другият на видеокарта. Какво казва разликата в скоростта?

05Какво следва

06Източници

  1. NVIDIA · Nemotron 3.5 Transcribe — картата на модела — езици, указания, пускане с vLLM, лиценз (на английски).
  2. NVIDIA · Nemotron 3.5 Transcribe и Granary v2 — какво е „транскрипция с указания“ (на английски).
  3. Google · FLEURS — тестовите записи с верен текст, вкл. български.
  4. OpenAI · Whisper large-v3 и faster-whisper — моделът и бързото му изпълнение.
  5. The New Stack · Nvidia launches a promptable transcription model — новината, 28.10.2026 (на английски).