как узнать пол человека по голосу
Машинный слух. Как работает идентификация человека по его голосу
Содержание статьи
Характеристики голоса
В первую очередь голос определяется его высотой. Высота — это основная частота звука, вокруг которой строятся все движения голосовых связок. Эту частоту легко почувствовать на слух: у кого-то голос выше, звонче, а у кого-то ниже, басовитее.
Другой важный параметр голоса — это его сила, количество энергии, которую человек вкладывает в произношение. От силы голоса зависит его громкость, насыщенность.
Еще одна характеристика — то, как голос переходит от одного звука к другому. Этот параметр наиболее сложный для понимания и для восприятия на слух, хотя и самый точный — как и отпечаток пальца.
Предобработка звука
Человеческий голос — это не одинокая волна, это сумма множества отдельных частот, создаваемых голосовыми связками, а также их гармоники. Из-за этого в обработке сырых данных волны тяжело найти закономерности голоса.
Нам на помощь придет преобразование Фурье — математический способ описать одну сложную звуковую волну спектрограммой, то есть набором множества частот и амплитуд. Эта спектрограмма содержит всю ключевую информацию о звуке: так мы узнаем, какие в исходном голосе содержатся частоты.
Но преобразование Фурье — математическая функция, которая нацелена на идеальный, неменяющийся звуковой сигнал, поэтому она требует практической адаптации. Так что, вместо того чтобы выделять частоты из всей записи сразу, эту запись мы поделим на небольшие отрезки, в течение которых звук не будет меняться. И применим преобразование к каждому из кусочков.
Спектрограмма пения птицы
Выбрать длительность блока несложно: в среднем один слог человек произносит за 70–80 мс, а интонационно выделенный вдвое дольше — 100–150 мс. Подробнее об этом можно почитать в исследовании.
Следующий шаг — посчитать спектрограмму второго порядка, то есть спектрограмму от спектрограммы. Это нужно сделать, поскольку спектрограмма, помимо основных частот, также содержит гармоники, которые не очень удобны для анализа: они дублируют информацию. Расположены эти гармоники на равном друг от друга расстоянии, единственное их различие — уменьшение амплитуды.
Давай посмотрим, как выглядит спектр монотонного звука. Начнем с волны — синусоиды, которую издает, например, проводной телефон при наборе номера.
Видно, что, кроме основного пика, на самом деле представляющего сигнал, есть меньшие пики, гармоники, которые полезной информации не несут. Именно поэтому, прежде чем получать спектрограмму второго порядка, первую спектрограмму логарифмируют, чем получают пики схожего размера.
Логарифм спектрограммы синуса
Теперь, если мы будем искать спектрограмму второго порядка, или, как она была названа, «кепстр» (анаграмма слова «спектр»), мы получим во много раз более приличную картинку, которая полностью, одним пиком, отображает нашу изначальную монотонную волну.
Одна из самых полезных особенностей нашего слуха — его нелинейная природа по отношению к восприятию частот. Путем долгих экспериментов ученые выяснили, что эту закономерность можно не только легко вывести, но и легко использовать.
Зависимость мела от герца
Эту новую величину назвали мел, и она отлично отражает способность человека распознавать разные частоты — чем выше частота звука, тем сложнее ее различить.
График перевода герца в мелы
Теперь попробуем применить все это на практике.
Идентификация с использованием MFCC
Мы можем взять длительную запись голоса человека, посчитать кепстр для каждого маленького участка и получить уникальный отпечаток голоса в каждый момент времени. Но этот отпечаток слишком большой для хранения и анализа — он зависит от выбранной длины блока и может доходить до двух тысяч чисел на каждые 100 мс. Поэтому из такого многообразия необходимо извлечь определенное количество признаков. С этим нам поможет мел-шкала.
Мы можем выбрать определенные «участки слышимости», на которых просуммируем все сигналы, причем количество этих участков равно количеству необходимых признаков, а длины и границы участков зависят от мел-шкалы.
Вычисление мел-частотных кепстральных коэффициентов
Вот мы и познакомились с мел-частотными кепстральными коэффициентами (MFCC). Количество признаков может быть произвольным, но чаще всего варьируется от 20 до 40.
Эти коэффициенты отлично отражают каждый «частотный блок» голоса в каждый момент времени, а значит, если обобщить время, просуммировав коэффициенты всех блоков, мы сможем получить голосовой отпечаток человека.
Тестирование метода
Давай скачаем несколько записей видео с YouTube, из которых извлечем голос для наших экспериментов. Нам нужен чистый звук без шумов. Я выбрал канал TED Talks.
Скачаем несколько видеозаписей любым удобным способом, например с помощью утилиты youtube-dl. Она доступна через pip или через официальный репозиторий Ubuntu или Debian. Я скачал три видеозаписи выступлений: двух женщин и одного мужчины.
Затем преобразуем видео в аудио, создаем несколько кусков разной длины без музыки или аплодисментов.
Продолжение доступно только участникам
Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте
Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее
Слово, и в дело
Та система, которая тестируется в московских судах, даст возможность вести качественные протоколы заседаний. Не секрет, что далеко не все реплики защиты, показания обвиняемых и свидетелей звучат четко. А это, в свою очередь, вызывает затруднения при стенографировании и составлении протокола заседания. Если новая цифровая технология окажется эффективной, то это качественно повысит работу всей судебной системы, и не только в Москве. Печатные протоколы будут полностью соответствовать тому, что говорилось на заседаниях.
Но стоит отметить, что сама система распознавания речи открывает гораздо большие возможности, чем только повышение качества стенографических записей. Более того, это абсолютно новое слово в мировой криминалистике. И первыми его сказали в России.
В Санкт-Петербурге группа энтузиастов основала «Центр речевых технологий». Сегодня это целая группа компаний, объединенных аббревиатурой ЦРТ.
Прослушкой, записью чужих разговоров и их расшифровкой во всем мире занимаются с тех пор, как изобрели радио и телефон. Однако исследовать речевую биометрию догадались только в нашей стране. Дело оказалось сложнейшим, в СССР его до конца довести не успели.
Лишь с появлением цифровых технологий и мощных компьютеров удалось выделить голосовые алгоритмы, которые присущи каждому индивидууму и повторяться не могут. Была выполнена сложнейшая работа, которая потребовала необычных математических решений и разработки оригинального компьютерного софта. Надо отдать должное профессионализму российских математиков и программистов.
Сегодня отечественные технологии голосовой биометрии используют правоохранители почти восьмидесяти стран мира. Активно они внедряются и в России. Без этих технологий немыслимо дальнейшее развитие Единой биометрической системы России, запущенной в 2018 году.
Как научить компьютер узнавать знакомых и незнакомых
У каждого человека есть свои вокальные характеристики — темп, громкость и интонация голоса,— обусловленные индивидуальной структурой его голосового аппарата. Прислушиваясь к разговору, человек может на уровне подсознания идентифицировать голоса. Но можно ли научить этому компьютер?
При разработке алгоритма идентификации личности по голосу решаются две подзадачи: распознавание говорящего и проверка. Распознавая говорящего человека, компьютер сравнивает образец речи с шаблоном из базы данных и ищет соответствия.
Сами системы распознавания могут быть разделены на текстозависимые и текстонезависимые: известен ли системе текст, который должен быть произнесен пользователем, и использует ли система данную информацию. При текстозависимом распознавании могут использоваться как фиксированные фразы, так и фразы, сгенерированные системой и предложенные пользователю. Текстонезависимые системы предназначены обрабатывать произвольную речь.
Сейчас используются несколько алгоритмов создания таких систем.
Например, алгоритм динамического преобразования времени (Dynamic Time Warping) используется для текстозависимых систем. Этот алгоритм используется для распознавания речи в том случае, когда два разных человека произнесли какую-либо одну фразу и надо узнать, кто именно. Для этого компьютер сравнивает две «карты» голоса, отображенные на синусоидных графиках (рис. 1, а). Для сравнения достаточно всего два-три слова.
Но бывает так, что эти графики у людей очень похожи. Чтобы сравнить такие голоса, компьютер будет «деформировать» ось времени одного или обоих графиков, чтобы достигнуть лучшего выравнивания (рис. 1, б). Ошибки возникают из-за того, что сравниваемые последовательности имеют разную длину и точка одного ряда будет расположена немного выше или немного ниже соответствующей точки в другом ряду. Поэтому алгоритму трудно найти видимое выравнивание двух строк. Тем не менее он хорошо справляется с распознаванием отдельных слов в ограниченном словаре. Это простой и открытый для улучшения алгоритм, подходящий для приложений в телефонах, автомобильных компьютерах или системах безопасности.
Другой алгоритм — метод опорных векторов, или SVM (от англ. Support Vector Machines), удобно применять, когда требуется идентифицировать каждого человека в большой группе говорящих людей. Этот алгоритм создает линию или гиперплоскость, которая делит данные на классы. Как в детской задаче, где надо одной линией разделить красные и синие кружочки, алгоритм должен найти наиболее правильную линию (рис. 2). Но таких линий может быть очень много. Как же алгоритм находит «ту самую»? Компьютер ищет такие точки на графике, которые расположены ближе всего к линии разделения. Эти точки называются опорными векторами. Затем алгоритм вычисляет расстояние между опорными векторами и разделяющей плоскостью. Основная цель алгоритма — найти такое место, где это расстояние будет максимально большим. Алгоритм может работать и с трехмерной моделью.
Это позволяет использовать его в анализе и классификации больших объемов данных или разрозненных данных из разных источников. Алгоритм может быть использован для выявления закономерностей в данных и создания структуры, которая потом используется для классификации. Для этого нужно ввести набор входных данных и соответствующих им выходных данных, которые используются для анализа и извлечения паттерна. При этом нам не нужно понимать поведение данных, алгоритм сам будет наблюдать за данными и связями внутри них. Кроме того, этот алгоритм хорошо умеет фильтровать шумы и ошибки данных, что часто нужно при распознавании голоса.
Оба этих алгоритма используются в современных устройствах — телефонах, роботах, системе «умный дом», компьютерах и автомобилях. И алгоритм динамического преобразования временной шкалы, и метод опорных векторов могут помочь организовать регламентированный доступ пользователей по заданной парольной фразе к ресурсам предприятия, телефонным и интернет-сервисам. Эти технологии могут упростить процесс идентификации пользователя без ущерба для информационной безопасности устройства.
Системы могут и будут улучшаться. Сегодня ученые пробуют дополнить алгоритмы языковыми моделями, которые будут описывать структуру языка — например, последовательность слов. Применение нейронных связей — это еще один этап. При этом каждое новое распознавание будет улучшать каждое новое распознавание в будущем. Таким образом, система станет самообучаемой.
Кто там? — Идентификация человека по голосу
Здравствуй, дорогой читатель!
Предлагаю твоему вниманию интересную и познавательную статью об отдельно взятом методе распознавания говорящего. Всего каких-то пару месяцев назад я наткнулся на статью о применении мел-кепстральных коэффициентов для распознавании речи. Она не нашла отклика, вероятно, из-за недостаточной структурированости, хотя материал в ней освещен очень интересный. Я возьму на себя ответственность донести этот материал в доступной форме и продолжить тему распознавания речи на Хабре.
Под катом я опишу весь процесс идентификации человека по голосу от записи и обработки звука до непосредственно определения личности говорящего.
Запись звука
Наша история начинается с записи аналогового сигнала с внешнего источника с помощью микрофона. В результате такой операции мы получим набор значений, которые соответствуют изменению амплитуды звука со временем. Такой принцип кодирования называется импульсно-кодовой модуляцией aka PCM (Pulse-code modulation). Как можно догадаться, «сырые» данные, полученные из аудио-потока, пока еще не годятся для наших целей. Первым делом нужно преобразовать непослушные биты в набор осмысленных значений — амплитуд сигнала. [1, с. 31] В качестве входных данных я буду использовать несжатый 16-битный знаковый (PCM-signed) wav-файл с частотой дискретизации 16 кГц.
Освежить знания про порядок байтов можно на википедии.
Обработка звука
Нормализация, на мой взгляд, — самый простой и эффективный алгоритм предварительной обработки звука. Существуют также масса других: «отрезающие» частоты выше или ниже заданной, сглаживающие и др.
Разделяй и властвуй
Даже при работе со звуком с минимально достаточной частотой дискретизации (16 кГц) размер уникальных характеристик для секундного образца звука просто огромен — 16000 значений амплитуд. Производить сколь-нибудь сложные операции над такими объемами данных не представляется возможным. Кроме того, не совсем понятно, как сравнивать объекты с разным количеством уникальных черт.
Для начала снизим вычислительную сложность задачи, разбив ее на меньшие по сложности подзадачи. Этим ходом убиваем сразу двух зайцев, ведь установив фиксированный размер подзадачи и усреднив результаты вычислений по всем задачам, получим наперед заданное количество признаков для классификации.
На рисунке изображена «порезка» звукового сигнала на кадры длины N с половинным перекрытием. Необходимость в перекрытии вызвана искажением звука в случае, если бы кадры были расположены рядом. Хотя на практике этим приемом часто принебрегают для экономии вычислительных ресурсов. Следуя рекоммендациям [1, с. 28], выберем длину кадра равной 128 мс, как компромисс между точностью (длинные кадры) и скоростью (короткие кадры). Остаток речи, который не занимает полный кадр, можно заполнить нулями до желаемого размера или просто отбросить.
Для устранения нежелаетльных эффектов при дальнейшей обработке кадров, умножим каждый элемент кадра на особую весовую функцию («окно»). Результатом станет выделение центральной части кадра и плавное затухание амплитуд на его краях. Это необходимо для достижения лучших результатов при прогонке преобразования Фурье, поскольку оно ориентировано на бесконечно повторяющийся сигнал. Соответственно, наш кадр должен стыковаться сам с собой и как можно более плавно. Окон существует великое множество. Мы же будем использовать окно Хэмминга.
n — порядковый номер элемента в кадре, для которого вычисляется новое значение амплитуды
N — как и ранее, длина кадра (количество значений сигнала, измеренных за период)
Дискретное преобразование Фурье
Следующим шагом будет получение кратковременной спектрограммы каждого кадра в отдельности. Для этих целей используем дискретное преобразование Фурье.
N — как и ранее, длина кадра (количество значений сигнала, измеренных за период)
xn — амплитуда n-го сигнала
Xk — N комплексных амплитуд синусоидальных сигналов, слагающих исходный сигнал
Кроме этого, возведем каждое значение Xk в квадрат для дальнейшего логарифмирования.
Переход к мел-шкале
На сегодняшний день наиболее успешными являются системи распознавания голоса, использующие знания об устройстве слухового аппарата. Несколько слов об этом есть и на Хабре. Если говорить вкратце, то ухо интерпретирует звуки не линейно, а в логарифмическом масштабе. До сих пор все операции мы проделывали над «герцами», теперь перейдем к «мелам». Наглядно представить зависимость поможет рисунок.
Как видно, мел-шкала ведет себя линейно до 1000 Гц, а после проявляет логарифмическую природу. Переход к новой шкале описывается несложной зависимостью.
m — частота в мелах
f — частота в герцах
Получение вектора признаков
Сейчас мы как никогда близко к нашей цели. Вектор признаков будет состоять из тех самых мел-кепстральных коэффициентов. Вычисляем их по формуле [2]
cn — мел-кепстральный коэффициент под номером n
Sk — амплитуда k-го значения в кадре в мелах
K — наперед заданное количество мел-кепстральных коэффициэнтов
n ∈ [1, K]
Как правило, число K выбирают равным 20 и начинают отсчет с 1 из-за того, что коэффициент c0 несет мало информации о говорящем, так как является, по сути, усреднением амплитуд входного сигнала. [2]
Так кто же все-таки говорил?
Последней стадией является классификация говорящего. Классификация производится вычислением меры схожести пробных данных и уже известных. Мера схожести выражается расстоянием от вектора признаков пробного сигнала до вектора признаков уже классифицированного. Нас будет интересовать наиболее простое решение — расстояние городских кварталов.
Такое решение больше подходит для векторов дискретной природы, в отличие от расстояния Евклида.
Внимательный читатель наверняка помнит, что автор в начале статьи упоминал про усреднение признаков речевых кадров. Итак, восполняя этот пробел, завершаю статью описанием алгоритма нахождения усредненного вектора признаков для нескольких кадров и нескольких образцов речи.
Кластеризация
Нахождение вектора признаков для одного образца не составит труда: такой вектор представляется как среднее арифметическое векторов, характеризующих отдельные кадры речи. Для повышения точности распознавания просто необходимо усреднять результаты не только между кадрами, но и учитывать показатели нескольких речевых образцов. Имея несколько записей голоса, разумно не усреднять показатели к одному вектору, а провести кластеризацию, например с помощью метода k-средних.
Итоги
Я всегда рад полезным комментариям по поводу улучшения материала. Спасибо за внимание.
Система распознавания пола по голосу определила гендерную принадлежность 3,25 млн человек
Искусственный интеллект для распознавания пола по голосу, разработанный сервисом сквозной аналитики и управления рекламой Calltouch, за три месяца определил пол у 3,25 млн человек, звонки от которых поступали с сайтов постоянных клиентов. Об этом «Хайтеку» сообщили в Calltouch.
Читайте «Хайтек» в
Определение пола клиента — важная метрика при подсчете количества просмотров объявлений и конверсии от них. Однако «Яндекс.Метрика» и Google Analytics отслеживают этот показатель некорректно. В случае со звонками статистика по полу не ведется вовсе — операторы call-центров крайне редко отслеживают гендерный показатель своих клиентов.
Calltouch проводила тестирование своей технологии в течение трех месяцев. За это время искусственному интеллекту удалось определить пол 3,25 млн звонивших через 15 тыс. сайтов, принадлежащих клиентам компании.
«При подсчете результатов использовались специальные алгоритмы классификации, основанные на методах машинного обучения, а точность определения пола составила 90%. Оставшиеся 10% — это неотвеченные звонки или звонки, где клиент молчал».
Московские военные представили систему распознавания лиц, которая может различать близнецов
Ранее группа инженеров из Индии создала искусственный интеллект, который позволяет найти человека на видео по росту, цвету одежды и полу.