У каждого человека есть свои вокальные характеристики — темп, громкость и интонация голоса,— обусловленные индивидуальной структурой его голосового аппарата. Прислушиваясь к разговору, человек может на уровне подсознания идентифицировать голоса. Но можно ли научить этому компьютер?
Фото: Юрий Мартьянов, Коммерсантъ / купить фото
При разработке алгоритма идентификации личности по голосу решаются две подзадачи: распознавание говорящего и проверка. Распознавая говорящего человека, компьютер сравнивает образец речи с шаблоном из базы данных и ищет соответствия.
Сами системы распознавания могут быть разделены на текстозависимые и текстонезависимые: известен ли системе текст, который должен быть произнесен пользователем, и использует ли система данную информацию. При текстозависимом распознавании могут использоваться как фиксированные фразы, так и фразы, сгенерированные системой и предложенные пользователю. Текстонезависимые системы предназначены обрабатывать произвольную речь.
Сейчас используются несколько алгоритмов создания таких систем.
Например, алгоритм динамического преобразования времени (Dynamic Time Warping) используется для текстозависимых систем. Этот алгоритм используется для распознавания речи в том случае, когда два разных человека произнесли какую-либо одну фразу и надо узнать, кто именно. Для этого компьютер сравнивает две «карты» голоса, отображенные на синусоидных графиках (рис. 1, а). Для сравнения достаточно всего два-три слова.
Но бывает так, что эти графики у людей очень похожи. Чтобы сравнить такие голоса, компьютер будет «деформировать» ось времени одного или обоих графиков, чтобы достигнуть лучшего выравнивания (рис. 1, б). Ошибки возникают из-за того, что сравниваемые последовательности имеют разную длину и точка одного ряда будет расположена немного выше или немного ниже соответствующей точки в другом ряду. Поэтому алгоритму трудно найти видимое выравнивание двух строк. Тем не менее он хорошо справляется с распознаванием отдельных слов в ограниченном словаре. Это простой и открытый для улучшения алгоритм, подходящий для приложений в телефонах, автомобильных компьютерах или системах безопасности.
Другой алгоритм — метод опорных векторов, или SVM (от англ. Support Vector Machines), удобно применять, когда требуется идентифицировать каждого человека в большой группе говорящих людей. Этот алгоритм создает линию или гиперплоскость, которая делит данные на классы. Как в детской задаче, где надо одной линией разделить красные и синие кружочки, алгоритм должен найти наиболее правильную линию (рис. 2). Но таких линий может быть очень много. Как же алгоритм находит «ту самую»? Компьютер ищет такие точки на графике, которые расположены ближе всего к линии разделения. Эти точки называются опорными векторами. Затем алгоритм вычисляет расстояние между опорными векторами и разделяющей плоскостью. Основная цель алгоритма — найти такое место, где это расстояние будет максимально большим. Алгоритм может работать и с трехмерной моделью.
Это позволяет использовать его в анализе и классификации больших объемов данных или разрозненных данных из разных источников. Алгоритм может быть использован для выявления закономерностей в данных и создания структуры, которая потом используется для классификации. Для этого нужно ввести набор входных данных и соответствующих им выходных данных, которые используются для анализа и извлечения паттерна. При этом нам не нужно понимать поведение данных, алгоритм сам будет наблюдать за данными и связями внутри них. Кроме того, этот алгоритм хорошо умеет фильтровать шумы и ошибки данных, что часто нужно при распознавании голоса.
Оба этих алгоритма используются в современных устройствах — телефонах, роботах, системе «умный дом», компьютерах и автомобилях. И алгоритм динамического преобразования временной шкалы, и метод опорных векторов могут помочь организовать регламентированный доступ пользователей по заданной парольной фразе к ресурсам предприятия, телефонным и интернет-сервисам. Эти технологии могут упростить процесс идентификации пользователя без ущерба для информационной безопасности устройства.
Системы могут и будут улучшаться. Сегодня ученые пробуют дополнить алгоритмы языковыми моделями, которые будут описывать структуру языка — например, последовательность слов. Применение нейронных связей — это еще один этап. При этом каждое новое распознавание будет улучшать каждое новое распознавание в будущем. Таким образом, система станет самообучаемой.