Как стать автором
Обновить

Speaker Recognition. Как искать человека по голосу

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров873

Приветствую, Хабр! В этой статье мы поговорим про задачу Speaker Recognition. О том, как работает такая система, как мы ее оцениваем. И хотя речь пойдет про распознавание человека по голосу, этот же концепт можно использовать и для других биометрических систем, в частности, распознавание лиц.

Metric Learning

В основе такой системы лежит ML-модель (как правило, нейроночка), которая принимает на вход участок голоса и выдает вектор-признак голоса (feature vector или voice embedding). Причем участок голоса может быть как фиксированной длины, так и динамической. Это в большей степени зависит от архитектуры модели, а также от датасета.

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

Пример датасета
Пример датасета

В рамках этой статьи Speaker Recognition определяется так:
имея голос неизвестного человека, нужно найти его в базе, если он есть. Если его нет, выдать сообщение.

Для этого решаются 2 задачи: Speaker Identification и Speaker Verification

Speaker Identification Task

Задача в том, чтобы, имея образец голоса, найти Top-K совпадений в базе. Оценивают как долю совпадений, так и порядок следования. Условно, система заработает "больше очков", если найдет нужного человека на первом месте в топе, нежели на 4-ом.

Метод поиска Top-5 по базе (Gallery)
Метод поиска Top-5 по базе (Gallery)

Методы оценки

Для оценки такой задачи используют следующий подход. Имеется база людей и их голосов. Это также называют галереей. Чем больше людей в галерее, тем сложнее для системы. Из этой базы забирают некоторых людей, и их голоса складывают отдельно в индекс. И теперь для каждого примера из индекса пытаются найти Top-K совпадений из галереи. Чем больше совпадений и чем выше они в топе, тем лучше.

Понятно, что чем меньше К, тем меньше шансов найти совпадения. Поэтому используют метрику CMC при разных К (СМС@k).

CMC@K=\begin{cases}     1 &:  \text{среди Top-К совпадение есть} \\      0 &: \text{среди Top-K совпадения нет}    \end{cases}
График CMC при K=1 и 10
График CMC при K=1 и 10

Скорее всего кто-то догадался, что формулировка задачи по смыслу похожа на задачу ранжирования. Так что можно использовать метрики оценки и оттуда (precision@k, map@k, NDCG).

Стоит отметить, что при большом объеме датасета проведение такого теста может быть вычислительно затратным, поскольку нужно извлечь векторы всех примеров и сложить в базу для формирования галереи и индекса.

Speaker Verification Task

Эта задача попроще — нужно всего лишь сравнить 2 конкретных голоса и выдать процент схожести (или меру расстояния). Это прям как на таможне, где сотрудник берет ваш паспорт с фото и сравнивает его, глядя на лицо человека перед собой. Если по его мнению процент совпадения высокий, он вас пропускает.

Имея датасет пар голосов одного человека и голосов разных людей, задача сводится к бинарной классификации, ведь нужно предсказать вероятность совпадения. Потому мы можем использовать метрики бинарной классификации: TP, FN, FP, TN, Precision, Recall, F1, F2, Accuracy, ROC-AUC, PR-curve.

Матрица ошибок
Матрица ошибок

Какие из этих метрик нам понадобятся далее:

  • Recall - вероятность найти совпадение среди всех одинаковых пар голосов

Recall = \frac{TP}{TP+FN}
  • FAR - вероятность найти совпадение среди всех разных пар голосов

FAR = \frac{FP}{FP+TN}
  • FRR - вероятность не пройти порог совпадение для всех одинаковых пар

FRR = 1 - Recall

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

Два кейса выбора порога
  1. Когда мы пытаемся авторизоваться через Face ID, нам лучше, чтоб была уверенность в правильном человеке. Чем выше порог, тем меньше шанс ложного совпадения, а значит потенциального взлома. Да, высокий порог будет реже давать человеку доступ. Ну уж лучше он сам введет пароль, чем дать доступ ненужному лицу.

  2. Представим модель предсказания диагноза. Есть диагноз или нет — бинарная классификация. Лучше пусть порог будет низкий, тогда меньше шансов пропустить пациента. Даже если будут ложные срабатывания, лучше перестраховаться и обратиться к специалисту.

Способ оценки всей системы

Для решения задачи нам нужно понять

  1. есть ли человек в базе

  2. если есть, то какой процент совпадения

Для начала проводится поиск Top-1 самых похожих голосов в базе (это speaker identification). Если этот Top-1 превышает порог схожести с искомым голосом, тогда мы нашли нужного человека. Если порог схожести не преодолен, значит в базе нет нужного человека. Это speaker verification.

Теперь когда мы обсудили, как работает вся система Speaker Recognition, как идет оценка отдельных задач, можем рассмотреть, как оценивать всю систему. Нам нужно предоставить понятные метрики качества, а именно:

  • Вероятность успешно найти Петю, который есть в базе.

    Нам нужно найти человека в Top-1, а также пройти порог совпадения (условная вероятность).

P_1 = СМС@1 \times Recall
  • Вероятность не найти никого, когда искомого человека действительно не было в базе.

    Независимо от Top-1 нам нужно только верно не пройти по порогу.

P_2 = (1 - FAR)
  • Вероятность найти Васю, хотя на самом деле это Петя.

    Нам нужно неверно найти человека в Top-1, а также ложно пройти порог совпадения.

P_3 = (1 - СМС@1) \times FAR
  • Вероятность не найти никого, хотя на самом деле искомый человек есть в базе.

    Нам нужно неверно найти человека в Top-1, а также верно не пройти порог совпадения, либо
    нужно верно найти человека в Top-1, но ошибочно не пройти по порогу.

P_4 = (1 - СМС@1) \times (1 - FAR) + CMC@1 \times (1 - Recall)
  • Вероятность, что мы найдем кого-то, хотя на самом деле искомого человека в базе вообще нет.

    Независимо от Top-1 нам нужно только ошибочно пройти по порогу.

P_5 = FAR

Заключение

При расчете метрик обязательно стоит учитывать размер базы (галереи), количество примеров голосов на каждого человека, а также домен.

Таким образом мы можем вместе обсуждать, на какие метрики делать больший упор и, отталкиваясь от этого, выбирать оптимальный порог и/или модель.

Теги:
Хабы:
0
Комментарии0

Публикации

Работа

Data Scientist
70 вакансий

Ближайшие события