Steven
Steven6 мин четене

Защо AI транскрипцията греши техническите термини (и как го поправихме)

Сесия на живо чу "what is the pointer in C++" като "what is the point in life". Ето криминалистичната следа от този транскрипт до GeekBye v2.0.11 — keyterm biasing, състезание по време, което прекъсваше връзката, и денят, в който собственият ни фикс даде обратен ефект.

Транскрипция
Надеждност
Инженерство
GeekBye издания
Защо AI транскрипцията греши техническите термини (и как го поправихме)

На 2 юли пуснахме тестова сесия и зададохме на GeekBye прост въпрос на глас: "What is the pointer in C++?" (на български: „какво е пойнтерът в C++?")

Транскриптът на живо ни отговори с поезия:

[23:16:37] You: Tell me, what is the point in life? [23:16:52] You: Handy Plus. [23:17:02] You: What the pointer in Plus Plus? [23:17:09] You: C.

Същата сесия — здравните метрики разказаха останалото: 3 прекъснати транскрипционни връзки за 163 секунди и 51-секундна дупка в транскрипта. И още една улика, която се оказа най-важната: нашият пас за възстановяване след сесията — който повторно транскрибира локално записаното аудио, за да запълни дупките — улучи изречението почти правилно: "a pointer in plus, plus? What the pointer in plus, plus C++."

Аудиото беше наред. Живият модел просто нямаше причина да очаква C++.

Това е историята на GeekBye v2.0.11, разказана през реалните транскрипти и продукционните логове.

Защо речевите модели грешат твоята лексика

Разпознаването на реч е задача за предсказване. При двусмислено аудио моделът избира най-вероятните думи — а за модел с общо предназначение "point in life" (т.е. „смисълът на живота") е далеч по-вероятна фраза от "pointer in C++" („пойнтер в C++"). Всеки инженер, гледал как транскрипт от среща изписва Kubernetes като "cube and eddies", познава този тип провал.

Решението не е по-добър микрофон. То е keyterm biasing: да кажеш на модела, преди сесията да започне, кои малко вероятни думи са вероятни за теб. Нашият доставчик на реч поддържа до 50 biasing термина на сесия. А ето и неудобната част: тръбопроводът за тези термини съществуваше от край до край в нашия стек — клиент, бекенд, доставчик — и нищо никога не го беше запълвало. Всяка сесия вървеше с нулева домейн помощ.

Фикс 1: профилът ти става речник на модела

GeekBye вече знае твоя домейн — той е в активния ти профил. v2.0.11 извлича biasing keyterms от името и описанието на профила: термини със символи (C++, Node.js), акроними (SQL, AWS), camel-case имена (TypeScript, PostgreSQL) и собствени имена. Профил, споменаващ твоя стек, вече прави този стек очакван, а не екзотичен.

Денят, в който фиксът влоши всичко

Първата ни версия третираше всяка дума с главна буква като собствено име. На вътрешен тестов билд (това никога не стигна до клиенти) профил, написан в проза, изпрати на модела този biasing списък:

Senior, Writing, Direct, For, Includes, Write, Role, Intent…

Да насочваш речеви модел към думата "For" е по-лошо, отколкото изобщо да не го насочваш. Още в следващата тестова сесия думата "speak" — изговорена ясно, многократно — се върна като "Clicky", "Hey, Vicky" и "Peter Paderty". Урокът ни струва един следобед: насочвай само с отличителни термини. Думите с главна буква вече се броят само когато се появяват в средата на изречение (истински сигнал за собствено име); markdown заглавията, където всяка дума е с главна буква, никога не допринасят. Същият профил вече извлича точно LinkedIn, AI, CEO, MCP — а валидационната сесия транскрибира правилно многоезично, бързо превключващо аудио в продължение на 199 непрекъснати секунди, 189 транскрипт сегмента, нула грешки.

Фикс 2: състезанието, което прекъсваше връзките

Keyterms обясниха сгрешените думи. Но не обясниха трите прекъснати връзки.

Тази следа отведе на по-фино място. Нашият доставчик commit-ва (финализира) транскрипцията по собствената си детекция на гласова активност, около секунда след настъпване на тишина. Нашият клиент също изпраща предпазен commit 250 милисекунди след настъпване на тишина, за да изчисти всяко висящо недовършено изречение. Потвърждението на доставчика, че вече е commit-нал, пътува обратно от една до три секунди. Направи сметката с тези три числа: винаги когато доставчикът commit-неше пръв, нашият предпазен commit се задействаше срещу почти празен буфер — а отговорът на доставчика не беше просто учтив отказ. Той прекъсваше връзката. Всяка пауза в говора беше хвърляне на ези-тура.

v2.0.11 доставя два слоя защита срещу това:

  1. В приложението: когато пристигне commit-нат транскрипт, клиентът вече знае, че буферът на доставчика току-що е бил изчистен, и пропуска излишния предпазен commit.
  2. В нашия бекенд, същия ден: проксито, което стои между приложението и доставчика, огледално следи аудио счетоводството на доставчика — вижда всеки аудио кадър и всяко commit потвърждение с нулева латентност — и просто отказва да препрати всеки commit, който доставчикът би отхвърлил. Този слой защитава всички клиентски версии наведнъж, включително потребителите, които не са обновили.

Видяхме го да работи в продукция в рамките на час. Guard-ът прихвана обречени commit-и, носещи 178ms и 256ms буферирано аудио — всеки от тях, преди този ден, гарантирано прекъсната връзка и дупка в нечии бележки от среща. 60-минутна непрекъсната сесия същия следобед регистрира пет прихващания и нула прекъсвания. Преди фикса реален потребител същата сутрин беше рестартирал записа си пет пъти за шест минути, борейки се точно с този бъг.

Два по-малки фикса в комплекта

AI прозренията вече чакат за съдържание. Онези изкривени ранни фрагменти захранваха живите чипове с предложения на GeekBye, които уверено произвеждаха теми като "Defining Life's Ultimate Purpose" от сгрешен въпрос за C++. Предложенията вече чакат, докато сесията натрупа реална разговорна маса.

Възстановеният текст получава правилния говорител. Пасът за възстановяване, който транскрибира правилно нашия въпрос за C++, го беше приписал на "Them". Локално записаната аудио времева линия вече отбелязва кой е говорил, така че възстановените сегменти се приписват правилно на You или Them.

Таблото с резултати

Метрика (измерена, не оценена) Преди След v2.0.11 + бекенд guard
Прекъснати връзки в тестовата сесия 3 за 163s 0
Най-дълга дупка в транскрипта 51s най-лоша дупка ~6s при валидация
"pointer in C++" "point in life" правилно, с насочен речник
Обречени commit-и, стигнали до доставчика всичките 0 (прихванати в бекенда)

Ако градиш върху realtime speech API-та

Три преносими урока от това издание:

  1. Захрани biasing функцията. Ако твоят STT доставчик поддържа keyterms/phrase hints, запълването им с малък, отличителен речник е най-евтината налична печалба в точност — а запълването им с обикновени думи е загуба на точност.
  2. Никога не се състезавай със state machine-а на доставчика от грешната страна на мрежов round-trip. Нашият клиент не можеше да спечели информационно състезание 250ms срещу 3s. Guard-ът принадлежи там, където двата сигнала се събират — за нас това е бекенд проксито.
  3. Валидирай на жив билд преди публикуване. Регресията с keyterms беше хваната, защото всяко GeekBye издание се тества като подписан, нотаризиран билд срещу продукция, преди да излезе. Лошата версия съществува няколко часа на една вътрешна машина, не на твоя Mac.

GeekBye v2.0.11 е на живо сега — ако си на v2, вече го имаш чрез auto-update. За основите на надеждността, върху които стъпва това издание, виж защо твоят AI notetaker спира при лош Wi-Fi и какво се промени в GeekBye v2. За това как работи живата транскрипция ден за ден, започни с транскрипция в реално време в GeekBye.

Свързани статии

Защо твоят AI notetaker спира записа по средата на срещата
Steven
Steven5 мин четене

Защо твоят AI notetaker спира записа по средата на срещата

Собственото ни приложение прекрати две от нашите срещи, докато отсрещната страна беше по средата на изречение. Криминалистичната следа отведе до добронамерен idle таймер, който не чуваше никого освен теб — и до втори бъг, който можеше да заключи целия ти десктоп. И двата поправени в GeekBye v2.0.9.

Надеждност
Срещи
Инженерство
Как да транскрибирате интервютата си в реално време с GeekBye
Steven
Steven3 мин четене

Как да транскрибирате интервютата си в реално време с GeekBye

Спрете да се мъчите да си водите бележки по време на интервю. GeekBye транскрибира всичко в реално време - вашия глас и този на събеседника - за да можете да се съсредоточите върху важното.

Транскрипция
Инструменти за интервюта
Продуктивност
От срещи към агенти: превърнете разговорите в работа, която вашият AI може да изпълни
Chris
Chris6 мин четене

От срещи към агенти: превърнете разговорите в работа, която вашият AI може да изпълни

Тясното място не е моделът — а вкарването на реален контекст в агентите ви. Ето практическия начин да станете по-добри с агентните инструменти и как да подадете решеното на дадена среща право в Claude Code, Codex или който и да е агент.

AI агенти
Агентни процеси
Бележки от срещи