Здравствуйте, коллеги! В этой статье я кратко расскажу об особенностях построения систем биометрической верификации/идентификации, с которыми мы столкнулись, создавая собственное решение.

Задача аутентификации личности используется в областях с необходимостью контроля доступа. Это банки, страховые компании, и другие области где используются конфиденциальная информация.

Традиционно, аутентификация использует принцип знания «ключа», такого как пароль, контрольное слово или номер паспорта. Описанный способ обладает недостатком – подтверждается не личность, а известная личности информация.
Биометрические решения лишены этого недостатка.

Перспективный подход решения задачи — аутентификация по голосу. Голос каждого человека уникален, и с заданной точностью можно утверждать кому он принадлежит. Для задач идентификации этот подход неприменим, так как на текущем уровне технологий ошибка «ложного пропуска» даёт погрешность 3–5%. Точность работы алгоритмов составляет 95–97%, что позволяет использовать технологию в задаче верификации.

Дополнительным преимуществом верификации по голосу является сокращение времени аутентификации в контактном центре, что даёт экономический эффект пропорциональный количеству операторов (экономия на заработной плате и связи). По нашим расчётам достижимый эффект от внедрения составляет 27 млн. руб. в год для контактного центра из 100 операторов, но цифра сильно зависит от конкретного кейса.

Принципы работы классического подхода


Запись голоса человека представляет из себя сигнал, который надо обработать, извлечь признаки и построить классификатор.

Наше решение состоит из 4 подсистем: подсистемы цифровой обработки сигнала, подсистемы выделения признаков, подсистемы выделения речи и классификатора [1].

image

Подсистема цифровой обработки сигнала


  • Фильтруется сигнал, выделяется исследуемый диапазон. Человеческое ухо слышит частоты 20-20 тыс. Гц, но для решений по биометрической верификации берётся диапазон 300–3400Гц.
  • Сигнал, методом быстрого преобразования Фурье, переводится в частотную область.

Подсистема выделения признаков


  • Сигнал разбивается на отрезки в 20-25 мл.сек. Далее будем называть отрезки – фреймами.
  • Для каждого фрейма определяются мелкепстральные коэффициенты – MFCC, и первая и вторая дельта. Используются первые 13 MFCC коэффициентов. [2]

Подсистемы выделения речи


  • Вектор признаков подаётся в предварительно обученный бинарный классификатор наличия речи. Классификатор, для каждого фрейма, определяет наличие речи. Для максимизации качества используются модели бустинга на основе композиции деревьев, такие как XGboost. Для максимизации скорости работы используется логистическая регрессия или метод опорных векторов SVM.

Классификатор


  • Строится смесь распределений по выделенным признакам из фреймов в которых присутствовала речь [3]. Требуется брать не менее 24-30 секунд чистой речи для обучения модели и 12-15 секунд для проверки.
  • По смеси распределений строится итоговый вектор признаков (i—vector) состоящий из 100 значений.
  • Вектор признаков подаётся на бинарный классификатор. В традиционном подходе для классификации используется SVM или бустинг. [4]

Для корректной работы требуется задать коэффициенты ошибок первого и второго рода. Если требуется минимизировать ошибку ложного принятия, то «штраф» ошибки ложного принятия превышает «штраф» ошибки ложного отклонения в 100-1000 раз. Мы использовали коэффициент 100.

Для построения решения по верификации требуются размеченные по дикторам и наличию речи данные. Рекомендуется использовать не менее нескольких сотен дикторов в разных акустических условиях, таких как модели телефонов, типы помещений и т. д., в количестве речи не менее 5-10 часов. Нами был использован собственный датасет из более чем 5 тыс. аудиофайлов. Это необходимо, чтобы избежать переобучения алгоритма. Для минимизации переобучения следует дополнительно использовать кроссвалидацию и регуляризацию.

В качестве VAD (детектора речи) можно использовать следующее решение компании Google. Но, если есть желание разобраться как это работает, лучше написать собственное решение на основе XGboost. Достижимое качество по метрике точность >99%. Из нашего опыта, именно качество работы VAD является «узким местом» для итогового качества работы.
Для задач цифровой обработки сигнала известно решение Bob.

Резюме


Для построения решения верификации по речи требуются данные, навыки в цифровой обработке сигналов и машинном обучении.

Более подробно ознакомится с принципами устройства решений по верификации и с основами машинного обучения и DSP можно в прилагаемых литературных источниках.

Литература:

1. А.В. Козлов, О.Ю. Кудашев, Ю.Н. Матвеев, Т.С. Пеховский, К.К. Симончик, А.К. Шулипа. «Система идентификации дикторов по голосу для конкурса NIST SRE». 2013
2. Ю.Н. Матвеев. «Исследование информативности признаков речи для систем автоматической идентификации дикторов». 2013
3. Д.В. Пекарь, С.Г. Тихоренко. «Алгоритм использования Гаусовых смесей для идентификации диктора по голосу в технических системах».
4. Н.С. Клименко, И.Г. Герасимов. «Исследование эффективности бустинга в задаче текстонезависимой идентификации дикторов». 2014

Полезные ресурсы:

1. Курс по машинному обучению от МФТИ на курсера;
2. Курс по DSP от МФТИ на внутреннем портале.

Комментарии (5)


  1. ThePretender
    01.03.2018 09:57

    Правильно ли я понимаю, что сначала у клиента обычным способом спрашивают, кто он такой, а система потом только подтверждает, что он тот, за кого себя выдает?


    1. kirillkosolapov Автор
      01.03.2018 10:28

      Да, все верно. Первый раз требуется классическая аутентификации.


  1. veylee
    01.03.2018 10:08

    27 миллионов на 100 человек в год — это по 22 500 рублей на человека в месяц. Примерно столько в колцентрах и получают операторы в месяц. Нереальные цифры экономии.


    1. kirillkosolapov Автор
      01.03.2018 10:40

      Это верхняя оценка эффективности для К.Ц. из Москвы с учетом налогов на З.П., аренды офиса и затрат на телефонию. Обычно, получается меньше, но все зависит от конкретного кейса.


  1. MacJIEHok
    01.03.2018 12:47

    Делали что-то подобное, но не на i-векторах, а на глубинных нейронных сетях. С таким подходом хватало 2 секундной записи для 3% ошибки (EER) текстозависимой задаче, и 6% в текстонезависимой, при этом алгоритм получился очень устойчивым различным искажениям (различные источники, фоновый шум, легкие изменения в голосе, эмоции). Правда, датасет для обучения больше 1 тыс часов и 1 тыс дикторов понадобился. Причем, сейчас технологии позволяют запихивать полученные нейросети во встроенные устройства и работать им там в реальном времени (для умного дома, например).