Фільтрація нецензурної лексики в розшифровках: де ламається якість
Штатне рішення задачі виглядає просто: словник заборонених слів на виході розпізнавання. На студійному записі з одним диктором він працює — і саме тому здається, що фільтрацію нецензурної лексики закрито.
На реальному потоці правило пропускає помітну частину лайки й водночас ріже нейтральні слова, після чого розшифровка перестає бути джерелом, якому довіряє контроль якості.
Найбільше просідають шумні записи розпізнавання: перебивання, музика на утриманні, стиснення телефонного каналу. Модель підставляє фонетично близьке слово, і мат у розшифровці мовлення або зникає, або з’являється там, де його не було. Словник порівнює рядки, а не зміст, тому таку підстановку він не ловить.
Другий шар — обхід правил. Лайка приходить латиницею, розбитою дефісами, зірочками, пробілами всередині слова, евфемізмами й сленгом конкретної зміни.
Водночас спрацьовує зворотна помилка: під правило потрапляють прізвища, топоніми й побутові слова — і оператор отримує розбір за фразою, якої не було.
У розмові двох каналів додається атрибуція. Розділення за голосами на перебиваннях плутає ролі, і репліка клієнта приписується операторові, хоча саме від цього залежить оцінка роботи.
Тут і ламається якість транскрипту контакт-центру: річ не в тому, що слова немає в словнику, а в тому, що рішення про нього ухвалюється без контексту розмови.
Розбираємо, як це закривається: доменний словник у зв’язці з правилами на контекст, поріг упевненості замість жорсткого збігу рядків, розмітка спірних ділянок на вибіркову перевірку й контроль частки хибних спрацювань після кожної правки.
Що дає керована обробка мовлення: вимірювані ефекти
До фільтрації розшифровка живе в режимі ручного доопрацювання: оператор вичитує текст і править лексику — це 20–30% реплік у записах кол-центру.
Коли чистка розшифровок відбувається всередині розпізнавання, а не поверх готового тексту, частка ручної правки транскриптів падає до одиниць відсотків, і запис надходить в облікову систему вже придатним до використання.
Ключова величина, за якою ми приймаємо роботу, — частка хибних спрацювань на нормативній лексиці.
Російський мат омонімічний: під правило потрапляють прізвища, топоніми, назви ліків і розмовні «блин» або «хрін», тому фільтр будується не на списку слів, а на словнику винятків, контексті фрази й морфології.
На тестовій вибірці тримаємо хибні спрацювання нижче 0,5%, пропуск реальної нецензурної лексики — у межах 1–2%.
Єдиний стандарт мовлення дає передбачуваність: одна політика обробки працює і на телефонії, і на мікрофоні в переговорній, і на записах вебінарів — не потрібно вести окремі набори правил під кожен канал.
За основу беремо відкриту модель Whisper і дообучаємо її на доменному словнику замовника, щоб імена, абревіатури й галузеві терміни не маскувалися фільтром разом із лайкою.
Стабільність розпізнавання мовлення перевіряємо на довгих записах, де якість каналу пливе: вузькосмугова телефонія, голоси, що перекриваються, фоновий шум.
Метрика тут — частка слів, що потребують правки після обробки, та її розкид між каналами: якщо телефонна розшифровка й студійна розходяться в рази, політику перезбирають до збіжності.
Фільтрація в потоці розпізнавання та на післяобробці: що вибрати
Розвилка проста: правило спрацьовує всередині декодера, поки аудіо перетворюється на текст, або вже на готовій розшифровці. Перший варіант не додає затримки в потік, другий — бачить фразу цілком і працює зі словниками й контекстом.
Вибір диктує архітектура обробки мовлення: потокові субтитри й голосове введення з одного боку, фінальна розшифровка для аналітики й протоколів — з іншого.
Окремо вирішується, де обрізається оригінал. Маскування фрагментів у потоці не залишає «сирого» тексту, а післяобробка розшифровки зберігає вихідник і дає змогу розібрати спірні спрацювання.
| Варіант | Коли підходить | Обмеження |
|---|---|---|
| Правила на етапі розпізнавання | Потік: субтитри, телефонія, голосове введення — неприпустиме слово не повинно потрапити у видачу взагалі | Словник вшито в модель: оновлення списку — перезбирання й перевірка якості. Омофони й імена страждають, точність розпізнавання падає |
| Післяобробка розшифровки | Аналітика, протоколи, довгі записи, де затримка в секунди допустима | Аудіо недоступне: злиття слів і нестандартні написання проходять повз. Потрібен другий прохід і стабільний проміжний формат |
| Гібрид: зміщення декодера плюс текстовий шар | Масові сервіси, де список слів змінюється, а затримка критична | Два набори правил доводиться синхронізувати, щоб маскування не спрацювало двічі |
Чим саме маскувати — зірочками, тегом-заглушкою або пропуском — вирішується на тому ж кроці й впливає на те, як розшифровку потім читає пошук та аналітика.
Етапи впровадження: від аудиту записів до передачі регламентів
Робота йде ітераціями: спочатку дивимося на реальні записи, а не на демонстраційні приклади, і лише потім обираємо схему. Так фільтр не починає глушити звичайні слова й не пропускає те, заради чого його ставили.
- Аудит записів. Вивантажуємо архів за типовий період: рахуємо частку нецензурної лексики, дивимося канали запису, фоновий шум і перекриття голосів. Без цього пороги налаштовувати нема на чому.
- Схема обробки. Визначаємо, де стоїть фільтр — до розпізнавання, за звуковою доріжкою, або після, за текстом, — і що відбувається при спрацюванні: заглушення, сигнал, заміна або позначка для модератора.
- Розмітка контрольного корпусу. Вручну розмічаємо кілька годин записів: де мат є, де його немає, і окремо — спірні випадки та схожі за звучанням слова. Корпус стає еталоном для всіх наступних перевірок.
- Налаштування й калібрування. Збираємо словники з урахуванням словоформ, задаємо пороги окремо для чистих і шумних доріжок. Хибні спрацювання на цьому етапі важливіші за пропуски: вони ламають довіру до фільтру.
- Перевірка на контрольній вибірці. Прогоняємо розмічений корпус і рахуємо, скільки зловили, скільки пропустили і скільки нормальних слів зачепили. Дивимося найгірші фрагменти, а не середні.
- Приймання якості розпізнавання. Переконуємося, що фільтр не погіршив сам текст: зміст фраз зберігся, затримка в допустимих межах. Приймання йде за узгодженими показниками, а не на слух.
- Передача регламентів. Віддаємо документацію: як додати слово, оновити словник, перевірити зміни на тому ж корпусі, підключити новий канал запису. Корпус і правила залишаються в замовника.
Що залишається в замовника: словники, правила й регламенти
Проєкт закривається не демонстрацією, а набором артефактів, які команда замовника править без нас. Усе, що впливає на поведінку фільтра, лежить у файлах налаштувань під контролем версій, а не всередині коду обробника — тому правку словника можна перевірити рев'ю й відкотити.
- Словники термінів. Базовий список нецензурних основ із нормалізацією: регістр, трансліт, латинські омогліфи, розтягнуті повторювані літери. Окремим блоком — список хибних спрацювань, щоб легальні слова всередині довгих токенів не маскувалися.
- Профілі чутливості. Набори порогів під канали й сценарії: строгий для ефіру й запису клієнтських розмов, м'який для внутрішньої розшифровки, де важливіша повнота транскрипту, ніж чистота тексту.
- Правила заміни фрагментів. Маскування за символами, заміна на нейтральну мітку, видалення слова зі збереженням тайм-кодів — субтитр не з'їжджає щодо звуку.
- Поріг за впевненістю розпізнавання. Слово маскується лише тоді, коли модель упевнена в гіпотезі; на шумних доріжках звичайне мовлення перестає потрапляти під заміну.
- Регламент експлуатації. Хто поповнює словник, з якою періодичністю, як проганяється перевірка на розміченому наборі й що робити при хибному спрацюванні в робочому контурі.
- Документація й передача. Опис форматів файлів налаштувань, схема потоку аудіо, порядок викладки профілю й відкат на попередню версію.
Віддаємо у вашому репозиторії разом із прикладами записів і набором перевірних кейсів — відтворюваність важливіша за усні домовленості.
Кейс: контакт-центр, частка браку в розшифровках до і після
Контакт-центр із потоком у кілька тисяч діалогів на добу вивантажував розшифровки в контроль якості, у звіти керівників змін і у вибірку для розмітки.
У сирому тексті залишалися неприпустимі фрагменти — лайка на адресу оператора, образи в репліках клієнтів, — і вони розходилися внутрішніми документами разом із розшифровкою.
Метрики до і після
| Метрика | До впровадження | Після |
|---|---|---|
| Частка неприпустимих фрагментів у розшифровках | 4,8% | 0,4% |
| Хибні спрацювання на нормальній лексиці | 7,1% | 1,3% |
| Діалоги, що потребували ручної правки | 21% | 4% |
Що дало зниження хибних спрацювань
Ключовим виявилося не розширення словника, а розведення двох режимів: упевнений збіг маскується одразу, спірний — не вирізається, а позначається прапорцем і йде на перевірку.
Пороги налаштовували на своєму розміченому наборі: відкритий корпус Common Voice плюс кілька тисяч діалогів із подвійною розміткою, де спірні репліки незалежно розмічали два перевіряльники.
Маскування зробили зворотним: на місці фрагмента залишається службова мітка зі збереженням структури репліки, тому мовленнєва аналітика за паузами й перебиваннями продовжує працювати, а ручна правка скоротилася з п'ятої частини діалогів до поодиноких випадків. Схожі потоки розбираємо так само — від розмітки до порогів.
Чим відрізняється маскування від видалення фрагментів запису?
Різниця проявляється в тому, що відбувається з часовою шкалою запису. Маскування залишає на місці лайливого слова співзвучну заміну або короткий маркер, тому тривалість фрагмента не змінюється і хронометраж запису залишається вихідним.
Видалення вирізає ділянку цілком: доріжка коротшає, і всі наступні таймкоди зміщуються на зекономлені частки секунди.
Для архіву інтерв'ю це непомітно, а для аналітики — ні: сегментація мовлення прив'язує репліки до абсолютного часу, і після видалення спікер, субтитри й відеоряд розходяться.
Збереження змісту фрази теж залежить від способу. При маскуванні контекст відновлюється за сусідніми словами, при видаленні рвуться інтонація й зв'язки, а коротка репліка може згорнутися в порожній рядок — за такою розшифровкою вже не зрозуміти, про що йшлося.
За затримкою обробки виграє маскування: заміна йде за словником на готовій розшифровці, без перезбирання аудіо. Видалення в потоці потребує перерахунку буфера й повторного склеювання звуку — це додає затримку й ризик клацань на стиках.
На практиці в зв'язці з розпізнаванням мовлення на Whisper ми частіше ставимо гібрид: у тексті — маскування, в аудіо — короткий тон або сигнал тієї ж тривалості.
Тоді запис не містить ненормативної лексики, хронометраж сходиться з вихідним, а аналітика за репліками працює без ручної правки таймкодів.
Спірні випадки: хибні спрацювання, діалекти, імена
Омоніми та власні назви дають хибні спрацювання найчастіше: коротке слово в іншому контексті або прізвище, співзвучне з коренем матюка, вирізають нормальну репліку з розшифровки.
Ми не вирішуємо за одним збігом — вердикт збирається з контексту фрази, упевненості розпізнавання й білого списку сутностей, зібраного з довідників і бази клієнта.
Спірні фрагменти не видаляються мовчки: вони позначаються й уходять у чергу на вичитку, щоб правка словника була налаштуванням, а не переписуванням уже відданих результатів.
Клієнта звати так само, як звучить нецензурне слово — постраждає розшифровка?
Ні. Білий список імен, топонімів і назв компаній має пріоритет над загальним словником: при збігу рішення ухвалюється за контекстом фрази й упевненістю моделі, а не за фактом входження підрядка.
Якщо впевненість низька, слово залишається як є з позначкою — втратити зміст репліки дорожче, ніж пропустити поодинокий випадок.
Що робити з акцентами, діалектами й змішуванням мов в одному записі?
Словник розширюємо фонетичними варіантами вимови, для кожної мови фрази підключаємо свою мовну модель, а перемикання визначаємо по ходу запису — інакше вставка іншою мовою всередині російської репліки розпізнається як випадковий набір звуків.
Акцентні й діалектні форми перевіряємо на реальних записах замовника, а не на синтетиці: так видно, де модель помиляється системно й потрібне доналаштування, а де достатньо поповнити словник.
Слабкий звук, шум приміщення й голоси, що перекривають один одного, — головне джерело помилок в обидва боки: фільтр або спрацьовує на невинному слові, або пропускає справжню лайку. Тут працює відсікання немовленнєвих ділянок, вирівнювання рівня гучності й повторний прохід за менш упевненими гіпотезами розпізнавання. Образливе слово ми маскуємо, а не вирізаємо: зміст і довжина репліки зберігаються, метрики аналітики не ламаються, а частка хибних спрацювань тримається нижче узгодженого із замовником порогу.Обговоримо задачу: зберемо правила під ваш потік записів
Щоб повернутися з оцінкою, а не із загальними словами, нам потрібен ваш матеріал: 20–30 хвилин реальних записів із типовими голосами, шумом і обмовками, плюс короткий опис, куди надходить текст після розпізнавання.
За цими даними видно, де розпізнавання помиляється найчастіше і скільки правил доведеться описати вручну.
- зразки записів — аудіо з різних умов: телефонний дзвінок, мікрофон у переговорній, запис із вулиці;
- вимоги до результату — що вважаємо неприпустимим, що допустимо залишити й хто затверджує спірні випадки;
- словник винятків — імена, назви й терміни, які не можна вирізати;
- маршрут тексту — куди надходить очищена розшифровка: у звіт, у пошук, в архів;
- режим обробки — потік у реальному часі або пакетне завантаження вже накопичених файлів;
- критерії приймання — допустима частка пропусків і хибних спрацювань на вашому наборі.
Із цього збираємо план впровадження: порядок робіт, строки налаштування й пілот на ваших записах. Пілот запускаємо на обмеженому наборі — ви порівнюєте результат на своїх прикладах і вирішуєте, чи йдемо в повний обсяг.
Опишіть задачу: надішліть зразки й вимоги — повернемося з оцінкою, планом і строками.







