Реалізація ідентифікації мовця з ECAPA-TDNN і FAISS

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

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

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

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

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

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

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

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

Що дає впровадження: ефекти в цифрах процесу

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

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

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

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

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

Стійкість до шуму визначає, де автоматизація взагалі застосовна.

Ембеддинги ECAPA-TDNN будуються за компактним представленням голосу, а не за абсолютними ознаками, тому телефонний канал, фон офісу й запис з диктофона не ламають зіставлення — раніше саме ці умови давали основну частку помилок під час ручного прослуховування.

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

Режими роботи: локальний контур, хмара, гібрид

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

Варіант Коли підходить Обмеження
Локальний контур обробки Записи й біометрія не повинні покидати периметр; обсяг — до кількох десятків каналів Масштабування впирається в конкретний вузол; оновлення моделі потребує регламентного вікна
Хмарний контур Пікове, нерівномірне навантаження; швидкий старт без свого заліза Аудіо виходить у зовнішнє середовище; потрібні явні політики зберігання й видалення
Гібридна схема Аудіо й ознаки залишаються на об'єкті, пошук — централізовано Потрібен стабільний канал і синхронізація індексів між майданчиками

Наші інженери обчислюють вектор голосу акустичною моделлю сімейства ECAPA-TDNN, а пошук ведуть за індексом FAISS.

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

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

Як ми впроваджуємо ідентифікацію мовця

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

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

Що залишається у вас після здачі проєкту

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

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

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

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

З практики: контакт-центр відмовився від ручного звіряння

До: звіряння записів на слух

Контакт-центр на кілька десятків операторів, один продукт і багато повторних звернень. За регламентом кожен новий запис потрібно було пов'язати з попередніми зверненнями того самого клієнта, і робили це вручну: співробітник прослуховував фрагменти й зіставляв голоси.

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

Після: ембеддинги й поріг збігу

Ми знімали із записів голосові ембеддинги моделлю ECAPA-TDNN і шукали збіги векторним пошуком за косинусною близькістю.

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

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

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

Що робити, якщо голосовий архів уже накопичено?

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

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

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

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

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

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

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

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

Технічні сумніви: шум, короткі репліки, підробки

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

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

Скільки еталонних записів потрібно на людину?

Мінімум три-п'ять фрагментів по кілька секунд з різних сесій: різні дні, мікрофони, темп мовлення. Один еталон дає великий розкид, і поріг доводиться ставити низьким — тоді чужі репліки починають прилипати до нього. На кількох записах оцінка усереднюється, межа між «свій» і «чужий» стає ширшою й стійкішою.

Що відбувається при зміні мікрофона або каналу зв'язку?

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

Якщо запис з нового каналу одна, порівнюємо не абсолютну близькість, а співвідношення за всіма кандидатами.

Що з шумом і перекривною мовою?

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

Як поводиться метод на коротких репліках?

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

Синтез голосу й підробки обходять систему?

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

Обговоримо задачу й повернемося з планом впровадження

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

  • Сценарії використання. Де саме розрізняємо голоси: діалоги операторів у контакт-центрі, запис нарад, контроль доступу. Кожен сценарій задає свої вимоги до довжини фрази й стійкості до шуму.
  • Обсяг даних. Скільки годин аудіо доступно і в якому вигляді: один канал або міксований запис, чи є перекриття мовлення, наскільки чистий сигнал.
  • Розмітка. Чи є мітки мовців і хто їх проставляв. Якщо розмітки немає — закладаємо окремий етап її підготовки й оцінюємо його трудомісткість.
  • Цільова метрика. Який відсоток помилок прийнятний і що критичніше: хибне злиття двох голосів в один або хибне розділення одного на два.
  • Обмеження інфраструктури. Де мають обчислюватися голосові ембеддинги — у вашому контурі чи в зовнішньому, і які ресурси виділено під навантаження.
  • Точки інтеграції. Куди віддаємо результат: у CRM, систему запису розмов, білінг або власний сервіс замовника.

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

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

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

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