Розробка AI-системи транскрибації з API під ключ

Розшифрування зустрічей і дзвінків вручну з’їдають години, а помилки на шумі й акцентах доводиться виправляти заново. Ми розробляємо API транскрибації під ключ: добираємо режим під ваше навантаження, налаштовуємо якість і відмовостійкість. Впровадження скорочує ручне виправлення розшифрувань у кілька разів.
Часті запитання

Чому API транскрипції збоїть на реальних записах

На демо запис звучить чисто, а в роботі через API транскрипції надходять файли з переговорних, з телефонів у шумному опенспейсі, з вебінарів із луною. Розпізнавання мовлення через API впевнено витягує лише ті фрагменти, де говорить одна людина в добрий мікрофон.

Записи з поганим звуком дають точність розшифрування, за якої сенс фрази губиться, і ручне вичитування забирає більше часу, ніж набір з нуля.

Друга причина відмов — не якість звуку, а режим завантаження. Коли підрозділ вивантажує архів увечері однією пачкою, сервіс іде в чергу: короткий файл чекає годинами, частина з’єднань обривається на піку, а повторні спроби породжують дублікати однієї й тієї самої зустрічі.

Ламається вже не розпізнавання, а прив’язка реплік до часу: розшифрування не збігається із записом, і потрібний момент за ним не знайти.

Окремо роз’їжджається розмітка спікерів. При перекритті голосів модель перекидає репліки між учасниками, а на довгих зустрічах голоси «дрейфують» — до середини мовець міняється місцями зі співрозмовником.

Для підрозділу це обертається тим, що розшифрування не можна долучити до протоколу: незрозуміло, хто взяв зобов’язання і хто його оспорює. Ручна перевірка по кожному дзвінку вбиває саму ідею автоматизації.

Усе це не екзотика, а штатна поведінка сервісу, зібраного без підготовки вхідного звуку, без контролю черги і без перевірки результату на узгодженість. Розбираємо, як це закривається на рівні архітектури рішення.

Що змінюється після впровадження: швидкість, якість, відмовостійкість

Швидкість розшифрування перестає залежати від довжини запису. Файл розрізається на сегменти й обробляється паралельно, тому за годинною розмовою результат приходить у рази швидше, ніж при послідовному прогоні, а проміжний текст з’являється ще до закінчення запису. Для робочого дня це різниця між «готово до наступної зустрічі» і «готово до вечора».

Пропускна здатність черги тримається на пріоритетах і ліміті одночасних завдань на обробник.

Пікові інтервали — коли пишуть кілька каналів одразу — більше не дають лавиноподібного зростання очікування: короткі завдання обганяють довгі, завислі повертаються в роботу за таймаутом, а глибина черги видна в моніторингу і слугує сигналом до масштабування. Замість «сервіс ліг у час пік» отримуємо рівний час відгуку протягом доби.

На Whisper ми налаштовуємо доменний шар: словник термінів, назв і абревіатур, нормалізацію чисел і дат, розділення голосів. Після цього частка записів, які йдуть на ручну правку, падає з більшості до одиниць відсотків — розшифрування стає готовим документом, а не чернеткою.

Помилки на рідкісних термінах залишаються передбачуваними: їх видно у звіті за впевненістю моделі, і словник доповнюється без перезбирання всієї системи.

Клас відмов «запис загубився» зникає зовсім. Вихідний файл зберігається до підтвердження результату, завдання ідемпотентні, тому повторна доставка не створює дублікатів, а обробка продовжується з останньої контрольної точки, а не з початку.

Падіння окремого обробника або вузла не обвалює сервіс — запит просто переходить на живий, і клієнт отримує ту саму відповідь.

Назовні це видно як стабільний API: надходить посилання на запис, повертається текст, таймкоди і статус обробки.

Режими API транскрипції: пакетний, потоковий і гібридний

Режим — не налаштування на смак, а наслідок сценарію. Пакетне розшифрування бере файл повністю: модель бачить діалог цілком, тому точніше розводить мовців і нормалізує терміни, але результат з’являється лише після завантаження всього запису.

Потокове розшифрування віддає гіпотези в міру надходження аудіо — перше слово приходить за частки секунди, зате часткові результати доводиться добудовувати.

Другий вододіл — де обробляється звук. Хмарне розпізнавання знімає питання пікового навантаження й оновлення моделей, але вимагає, щоб запис міг вийти за периметр.

Власний контур залишає дані всередині, зате прискорювачі, оновлення і контроль якості лягають на інфраструктуру замовника.

Варіант Коли підходить Обмеження
Пакетне розшифрування в хмарі архіви дзвінків, записи зустрічей, нічні вивантаження результат після повного завантаження файлу; потрібен запас за каналом і розміром пакета
Потокове розшифрування в хмарі жива стенограма, підказки оператору, контроль діалогу постійне з’єднання; часткові результати уточнюються на ходу
Власний контур повністю аудіо з персональними даними не повинно залишати периметр свої прискорювачі, оновлення моделей і моніторинг якості на боці замовника
Гібридний режим частина каналів має залишитися всередині, частину допустимо обробляти ззовні дві гілки обробки, синхронізація словників і розмітки між контурами

Гібридний режим виправданий, коли вимоги до даних різняться за каналами. Тоді словники й розмітка ведуться однаково, а маршрут запису задається політикою, а не правкою коду в момент запуску.

Як ми впроваджуємо систему: етапи інженерної роботи

Робота йде ітераціями: спочатку розбираємося з реальними записами, потім збираємо інтеграцію, і тільки після цього налаштовуємо поведінку системи під навантаженням. Нижче — послідовність, за якою ми ведемо проєкти транскрипції з API.

  1. Аудит аудіоданих. Беремо вибірку з архіву замовника і слухаємо її: скільки каналів, рівень фонового шуму, частка перекривного мовлення, які мови і професійний жаргон зустрічаються. На виході — вимоги до якості розпізнавання, профіль навантаження і перелік записів, на яких система буде перевірятися.
  2. Схема інтеграції. Визначаємо, як записи потрапляють у систему: подія від телефонії, вивантаження зі сховища або завантаження через інтерфейс. Фіксуємо формат відповіді API — посегментні позначки часу, розмітка спікерів, оцінка впевненості за кожним фрагментом.
  3. Налаштування черг. Записи надходять нерівномірно, тому розводимо їх за пріоритетами: короткі звернення обробляються одразу, довгі наради йдуть в окрему чергу. Тут же задаємо повторні спроби і межу паралельних завдань, щоб пікове навантаження не обвалювало обробку.
  4. Адаптація під домен. Движок Whisper дає хорошу базову точність, але назви продуктів, прізвища і внутрішні скорочення він чує неправильно. Додаємо словники термінів і правила постобробки, перевіряємо ефект на контрольній вибірці.
  5. Приймальні перевірки. Рахуємо частку слів з помилкою і помилку за ключовими сутностями, звіряємо таймкоди і розділення спікерів з еталонним розшифруванням. Фіксуємо пороги, нижче яких результат не приймається, і тільки після їх проходження йдемо далі.
  6. Передача в експлуатацію. Віддаємо документацію по API і схему інтеграції, налаштовуємо моніторинг черг і помилок розпізнавання, проводимо навчання команди замовника і домовляємося про регламент доучування словників.

Кожен етап закінчується артефактом, який можна перевірити, — тому проєкт не розтягується, а питання якості розбираються на даних, а не на відчуттях.

Артефакти впровадження: схеми, конфігурації, регламенти

Впровадження закінчується не демонстрацією працюючого розпізнавання, а комплектом, з яким команда замовника залишається один на один.

Ми збираємо артефакти в репозиторій замовника і версіонуємо їх разом з кодом — при наступному релізі відразу видно, що змінилося в контракті, а що в політиках.

  • Документація з інтеграції — сценарії «завантажив запис → отримав текст», обробка довгих файлів, поведінка при обриві з’єднання і повторному надсиланні.
  • Опис методів API транскрипції: параметри запиту, структура відповіді, коди помилок і що робити клієнту при кожному з них.
  • Схема розгортання — де живуть сервіс розпізнавання, черга і сховище записів, як контур масштабується при піковому навантаженні і що відбувається при відмові вузла.
  • Конфігурації обробки: вибір мови й діаризації, пунктуація, пороги впевненості, розмір батча і правила повторних спроб.
  • Політики доступу — ролі й ключі з обмеженим строком життя, прив’язка до джерела запиту, журнал звернень до розшифровок.
  • Регламент експлуатації: які метрики дивитися щоденно, яка частка відмов вважається нормою, коли перезапускати обробку вручну, а коли чекати автовідновлення.
  • Інструкції для служби підтримки — розбір типових звернень щодо розшифрування, що закривається на першій лінії і що ескалюється інженерам.
  • Порядок оновлення моделей: прогін нової версії на відкладеній вибірці записів замовника, критерії приймання і точка повернення до попередньої.

Комплект розрахований на те, що документацію читає інженер, який нас не бачив. Опишіть завдання — повернемося з оцінкою і планом, включно зі складом артефактів під ваш контур.

Кейс: контакт-центр скоротив ручну правку розшифровок у шість разів

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

Оператори отримували розшифровки з помилками в іменах клієнтів, артикулах і назвах послуг і витрачали на правку більше часу, ніж на розбір самої розмови. Керівник зміни не міг опертися на статистику за свіжими дзвінками — даних за вчора на момент розбору ще не існувало.

Ми перенесли розпізнавання на власний контур: за основу взяли відкриту модель Whisper, донавчили її на архіві записів замовника і додали нормалізацію звуку телефонного каналу, розмітку реплік за мовцями і словник предметних термінів.

Той самий масив у сорок годин тепер обробляється приблизно за дев’яносто хвилин замість восьми годин нічного вікна — час розшифрування скоротився більш ніж у п’ять разів, а результат з’являється майже відразу після дзвінка.

Метрики якості розпізнавання перестали бути оцінкою «на слух»: частка правок операторів упала з двадцяти одного відсотка до трьох із половиною відсотків на контрольній вибірці, а частота правок на сто діалогів стала регулярно вимірюваною величиною, за якою видно деградацію після будь-яких змін.

Навантаження контакт-центру змістилося: оператори займаються змістом розмови і контролем якості, а не набором тексту.

Пікові дні контур тримає інакше, ніж зовнішній сервіс. Обробка розбита на короткі незалежні завдання, тому при подвоєнні потоку дзвінків черга не зростає — додаються виконавці, а при відмові вузла завдання перерозподіляються без втрати записів. Саме поведінка на піках, а не середні цифри, показала, що рішення готове до робочої експлуатації.

Чим відрізняється потокове розшифрування від пакетного?

Потокове розшифрування віддає текст у міру надходження звуку: фрагмент розпізнано — одразу пішов у відповідь. Пакетне бере готовий файл повністю, проганяє його через модель і повертає один документ з розміткою за часом. Різниця не в якості розпізнавання, а в тому, коли приходить результат і як влаштований обмін.

При потоці з’єднання тримається відкритим, звук іде короткими порціями, відповідь приходить із затримкою в частки секунди — мовлення встигає перетворюватися на субтитри й підказки оператору.

Зворотний бік — чутливість до каналу: обриви рвуть сесію, а перезбирання контексту на стиках псує пунктуацію і назви термінів.

Пакет обробляє обсяг за один запуск: годинний запис віддають одним файлом і отримують розшифрування з розділенням за мовцями. Затримка дорівнює часу обробки, зате модель бачить весь контекст — точніше розбирає термінологію, шум і перекриття голосів.

Режим Затримка видачі Разова порція Коли підходить Обмеження
Потоковий частки секунди, текст іде по ходу мовлення короткі фрагменти, тривалість не обмежена субтитри, живий контроль розмови, підказки оператору потребує стійкого каналу і запасу за навантаженням
Пакетний дорівнює часу обробки запису файл повністю — від хвилини до кількох годин розшифрування дзвінків, інтерв’ю, нарад, архівів результат надходить тільки після завершення файлу

Вибір режиму — про сценарій, а не про «потужність». Живі субтитри, контроль якості розмови, підказки оператору — потік. Розбір дзвінків, інтерв’ю та архіву — пакет.

Обидва режими тримаємо за одним API: спільний контракт на файл і на потік, єдина авторизація й повідомлення про готовність результату.

Сумніви щодо навантаження, приватності та якості даних

Перед стартом інженерна команда ставить один і той самий набір запитань: чи витримає рішення пікове навантаження, де лежать аудіозаписи, хто має до них доступ і як перевіряється якість на галузевій лексиці. Нижче — відповіді за кожним блоком.

Що буде при піковому навантаженні, коли всі дзвінки йдуть в одну зміну?

Вхідний потік приймається незалежно від зайнятості обчислювачів і стає в чергу, тому записи не губляться. Розбір іде паралельно, а при зростанні обсягу додаються робочі вузли — пропускна здатність зростає лінійно, без переписування логіки.

Де зберігаються записи і хто має до них доступ?

Аудіо шифрується під час передавання і в сховищі, доступ розмежований за ролями, ключі лежать окремо від файлів. Строк зберігання задається політикою: вихідний файл видаляється після закінчення періоду, а текст із позначками часу залишається для аналітики. Є режим обробки без збереження аудіо.

Як розпізнаються галузеві терміни — артикули, назви препаратів, юридичні формулювання?

Базова модель доповнюється словником термінів і правилами підстановки, які збираються з ваших довідників і записів. На вузькій лексиці це помітно підвищує точність, а непевні фрагменти позначаються для вибіркової перевірки оператором.

Як результат потрапляє в наші облікові системи?

Транскрипт забирається через API транскрипції: система повідомляє про готовність запису подією, ваш бік отримує текст, структурні поля й метрики. Схему відповідності сутностям облікової системи узгоджуємо до старту, тому ручне вивантаження не потрібне.

Обговоримо завдання: що варто підготувати до першої розмови

Розбір завдання вкладається в одну розмову, якщо вхідні дані зібрані заздалегідь. Перелічене нижче — мінімум, за яким уже видно архітектуру сервісу транскрипції, схему інтеграції та реалістичний план робіт.

  • Зразки записів: 5–10 файлів із реальних каналів, включно з найгіршими — із шумом, кількома мовцями, уривками зв’язку. За ними видно, чи потрібна підготовка звуку і яка точність досяжна.
  • Сценарій використання: дослівний текст, протокол зустрічі з розділенням за спікерами або вижимка з ключовими рішеннями й завданнями.
  • Вимоги до інтеграції: куди йде результат — у вашу систему чи сховище, чи потрібна відповідь у реальному часі або підійде відкладена обробка.
  • Обсяг і піки: скільки годин запису надходить на добу і як розподілене навантаження — від цього залежать масштабування і схема черги.
  • Правила роботи з даними: чи можна виносити записи в зовнішнє середовище, скільки зберігати вихідні файли, у кого доступ до розшифровок.
  • Критерії приймання: що вважаємо результатом — частка правильно розпізнаних слів, точність розділення спікерів, час обробки годинного запису.
  • Ваша інфраструктура: чи є сервіс, з яким потрібно стикуватися, хто на вашому боці приймає результат і перевіряє якість.

Цього набору достатньо, щоб повернутися з оцінкою строків, схемою інтеграції та планом робіт за етапами. Опишіть завдання і надішліть зразки — зберемо пропозицію під ваш сценарій.

Напрямки AI-розробки

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1542
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1369
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142