Машинный слух. Как работает идентификация человека по голосу

S

SSHMAN

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

Характеристики голоса
В первую очередь голос определяется его высотой. Высота — это основная частота звука, вокруг которой строятся все движения голосовых связок. Эту частоту легко почувствовать на слух: у кого-то голос выше, звонче, а у кого-то ниже, басовитее.

Другой важный параметр голоса — это его сила, количество энергии, которую человек вкладывает в произношение. От силы голоса зависит его громкость, насыщенность.

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

Предобработка звука
Человеческий голос — это не одинокая волна, это сумма множества отдельных частот, создаваемых голосовыми связками, а также их гармоники. Из-за этого в обработке сырых данных волны тяжело найти закономерности голоса.

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

Но преобразование Фурье — математическая функция, которая нацелена на идеальный, неменяющийся звуковой сигнал, поэтому она требует практической адаптации. Так что, вместо того чтобы выделять частоты из всей записи сразу, эту запись мы поделим на небольшие отрезки, в течение которых звук не будет меняться. И применим преобразование к каждому из кусочков.

bird.gif

Спектрограмма пения птицы
Выбрать длительность блока несложно: в среднем один слог человек произносит за 70–80 мс, а интонационно выделенный вдвое дольше — 100–150 мс. Подробнее об этом можно почитать в исследовании.
Следующий шаг — посчитать спектрограмму второго порядка, то есть спектрограмму от спектрограммы. Это нужно сделать, поскольку спектрограмма, помимо основных частот, также содержит гармоники, которые не очень удобны для анализа: они дублируют информацию. Расположены эти гармоники на равном друг от друга расстоянии, единственное их различие — уменьшение амплитуды.

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

sinus_fourier.png

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

sinus_log.png

Логарифм спектрограммы синуса
Теперь, если мы будем искать спектрограмму второго порядка, или, как она была названа, «кепстр» (анаграмма слова «спектр»), мы получим во много раз более приличную картинку, которая полностью, одним пиком, отображает нашу изначальную монотонную волну.

cepstrum.png

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

mel.png

Зависимость мела от герца
Эту новую величину назвали мел, и она отлично отражает способность человека распознавать разные частоты — чем выше частота звука, тем сложнее ее различить.

mel_graph.png

График перевода герца в мелы
Теперь попробуем применить все это на практике.

Идентификация с использованием MFCC
Мы можем взять длительную запись голоса человека, посчитать кепстр для каждого маленького участка и получить уникальный отпечаток голоса в каждый момент времени. Но этот отпечаток слишком большой для хранения и анализа — он зависит от выбранной длины блока и может доходить до двух тысяч чисел на каждые 100 мс. Поэтому из такого многообразия необходимо извлечь определенное количество признаков. С этим нам поможет мел-шкала.

Мы можем выбрать определенные «участки слышимости», на которых просуммируем все сигналы, причем количество этих участков равно количеству необходимых признаков, а длины и границы участков зависят от мел-шкалы.

mfcc.png

Вычисление мел-частотных кепстральных коэффициентов
Вот мы и познакомились с мел-частотными кепстральными коэффициентами (MFCC). Количество признаков может быть произвольным, но чаще всего варьируется от 20 до 40.

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

Тестирование метода
Давай скачаем несколько записей видео с YouTube, из которых извлечем голос для наших экспериментов. Нам нужен чистый звук без шумов. Я выбрал канал TED Talks.

Скачаем несколько видеозаписей любым удобным способом, например с помощью утилиты youtube-dl. Она доступна через pip или через официальный репозиторий Ubuntu или Debian. Я скачал три видеозаписи выступлений: двух женщин и одного мужчины.

Затем преобразуем видео в аудио, создаем несколько кусков разной длины без музыки или аплодисментов.

$ ffmpeg -ss 00:00:27.0 -i man1.webm -t 200 -vn man1.1.wav

Теперь разберемся с программой на Python 3. Нам понадобятся библиотеки numpy для вычислений и librosa для обработки звука, которые можно установить с помощью pip. Для твоего удобства все сложные вычисления коэффициентов упаковали в одну функцию librosa.feature.mfcc. Загрузим звуковую дорожку и извлечем характеристики голоса.

afb1ee4f539bc81d20677.png

Результат:

same 0.08918786797751492

same 0.04016324022920391

diff 0.8353932676024817

diff 0.5290006939899561

diff 0.5996234966734799

diff 0.9143384850090941

48ed4e8d1c2bd4bc4360a.png

Протестируем новую программу.

same 0.07287868313339689

same 0.07599075249316399

diff 1.1107063027198296

diff 0.9556985491806391

diff 0.9212706723328299

diff 1.019240307344966

Мы посчитали значения различных признаков.

2woman_mfcc.png

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

Теперь сравним мужской и женский голоса.

same 0.07287868313339689

same 0.1312549383658766

diff 1.4336642787341562

diff 1.5398833283440216

diff 1.9443562070029585

diff 1.6660100959317368

manwoman_mfcc.png

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

Этот алгоритм действительно работает, и работает хорошо. Главный его недостаток — зависимость точности результата от шумов и длительности записи. Если запись короче десяти секунд, точность стремительно убывает.

Идентификация голоса с помощью нейронных сетей
Мы можем улучшить наш алгоритм с помощью нейронных сетей, которые на таких задачах показывают невероятную эффективность. Используем библиотеку Keras для создания модели нейронной сети.

68655d43cf65ad82e6d6d.png

9ac6d1c5b4d19d8e2a146.png


В этой модели используется два слоя долгой краткосрочной памяти (Long Short-Term Memory), которые позволяют нейронной сети анализировать не только сам голос, его высоту и силу, но и его динамические параметры, например переходы между звуками голоса.

Тестирование метода
Давай обучим модель и посмотрим на ее результаты.

Epoch 1/20

5177/5177 [====================] - loss: 0.4099 - acc: 0.8134 - val_loss: 0.2545 - val_acc: 0.8973

...

Epoch 20/20

5177/5177 [====================] - loss: 0.0360 - acc: 0.9944 - val_loss: 0.2077 - val_acc: 0.9807

[0.18412712604838924, 0.9819283065512979]

Отлично! 98% точности — хороший результат. Посмотрим статистику точности по каждому отдельному человеку.

woman1: 98.4%

woman2: 99.0% - цель

man1: 98.4%

Нейронная сеть справляется прекрасно, преодолевая большинство помех: шумы и ограничения по длине записи (нейронная сеть анализирует всего по одной секунде записи за раз). Такой способ идентификации человека наиболее перспективен и эффективен.

Выводы
Технологии распознавания человека по его голосу находятся только лишь на стадии научных исследований и разработок, и поэтому в открытом доступе хороших и популярных решений нет. Однако в коммерческом секторе такие программные продукты уже распространяются, чем облегчают работу сотрудников кол-центров, разработчиков умных домов. Теперь и ты можешь использовать этот прием на работе или для своих проектов.
 
Похожие темы
Admin Интересно Вашему RDP поставили «лайк». История о том, как горстка серверов прочесала Интернет и нашла все изъяны. Новости в сети 0
Admin Интересно Русские хакеры против картошки фри. Как взлом кассы самообслуживания обернулся годом условно. Новости в сети 0
Admin Интересно Тройная порция шантажа под соусом анонимности. Как одна банда притворяется сразу тремя разными группировками. Новости в сети 0
Admin Интересно Как соседей России заставляют выбирать между Европой и личным спокойствием. Новости в сети 0
Admin Интересно Позвони мне через пылесос. Как выживает рунет после блокировки мессенджеров. Новости в сети 0
Admin Интересно Ускоритель частиц размером с карандаш. Мощность — как у километрового. И это работает. Новости в сети 0
Admin Интересно Война правок и логотипов: Как Euro-Office поссорился с ONLYOFFICE из-за лицензии. Новости в сети 0
Admin Интересно Цифры врали. Не специально — просто их сложили неправильно. Вот как парадокс Симпсона ломает статистику. Новости в сети 0
Admin Интересно Цифровые активы после смерти: как управлять рисками для цифрового наследства. Новости в сети 0
Admin Интересно Тихий взлом и полная невидимость. Рассказываем, как новый вирус RoadK1ll захватывает корпоративные сети. Новости в сети 0
Admin Интересно Как заморозить воду быстрее? Сначала вскипятите её и плюньте на здравый смысл. Новости в сети 0
Admin Интересно Откройте доступ к коду из любой точки мира. Как работает новый проект rustunnel. Новости в сети 0
Admin Интересно Не просто «стенка с мониторами». Как за 6 недель создать работающий центр кибербезопасности. Новости в сети 0
Admin Интересно Хакеров много, а работать некому. Как кадровый голод обнуляет защиту мировых гигантов. Новости в сети 0
Admin Интересно Римские цифры, узелки инков и буква x в магазине: как запись чисел определила всю историю математики. Новости в сети 0
Admin Интересно 43% сотрудников опасаются, что ИИ лишит их работы. Как страх увольнения убивает эффективность бизнеса. Новости в сети 0
Admin Интересно Власти Венгрии решили завербовать сторонника оппозиции. Вышло как при коммунизме. Новости в сети 0
Admin Интересно Веб-семинар: Как проверить эффективность вашей защиты от реальных атак. Новости в сети 0
Admin Интересно Как заставить нейросеть удалить всё лишнее (и нужное тоже)? Разбираемся в «токсичных потоках». Новости в сети 0
Admin Интересно 27 граммов еды из 1 грамма бактерий. Как превратить марсианскую пыль в полноценный обед. Новости в сети 0
Admin Интересно Сложность облачных сред как главный враг кибербезопасности. Новости в сети 0
Admin Интересно Три миллиона IP-камер и роутеров по всему миру. Как спецслужбы разгромили гигантскую сеть ботнетов. Новости в сети 0
Admin Интересно Как короткий код превращает рабочую станцию в зомби. Новости в сети 0
Admin Интересно 20 часов до первого удара. Как ИИ-инструменты лишили системных администраторов сна. Новости в сети 0
Admin Интересно Форум SocioTech 2026: как объединить бизнес, информационную безопасность и персонал. Новости в сети 0
Admin Интересно GhostMail: как письмо о стажировке украло всю почту за 90 дней. Новости в сети 0
Admin Интересно Рынок шпионских программ: как посредники делают слежку анонимной и дорогой. Новости в сети 0
Admin Интересно Как быстро восстановить взломанный аккаунт: краткое руководство. Новости в сети 0
Admin Интересно Драйверы-предатели. Как легитимные программы помогают преступникам шифровать ваши данные. Новости в сети 0
Admin Интересно Практический онлайн-курс: как внедрить и настроить UserGate. Новости в сети 0
Admin Интересно Центральная предельная теорема: как случайности формируют закономерности. Новости в сети 0
Admin Интересно Как Mesh CSMA выявляет и устраняет пути атак на ключевые активы. Новости в сети 0
Admin Интересно Капча с двойным дном. Как обычное подтверждение, что вы не робот, превращается в установку шпиона. Новости в сети 0
Admin Интересно Кавычки решают всё. Как одна забытая проверка в коде подставила четверть миллиона владельцев сайтов. Новости в сети 0
Admin Интересно Спутники за миллиарды долларов боятся батарейки из супермаркета. Как военные и хулиганы «выключают» космос одной кнопкой. Новости в сети 0
Admin Интересно Anthropic запустила сервис для проверки кода, который работает как опытный разработчик. Новости в сети 0
Admin Интересно Как предотвратить утечку данных через ИИ: вебинар по аудиту современных агентских процессов. Новости в сети 0
Admin Интересно Фишинговая кампания перед выборами в Армении: как злоумышленники обошли защиту. Новости в сети 0
Admin Интересно Живые нейроны играют в «Doom»: как ученые заставили кусок плоти из пробирки расстреливать кибердемонов. Новости в сети 0
Admin Интересно Слишком сложно для Microsoft. Как три разработчика сделали сайт npm лучше, чем целая корпорация. Новости в сети 0
Admin Интересно Киберпреступники используют ICE как прикрытие для фишинговой кампании. Новости в сети 0
Admin Интересно Цифровой детокс по принуждению. Как юг Москвы неожиданно вернулся в эпоху до интернета. Новости в сети 0
Admin Интересно Как малый и средний бизнес использует исследования угроз и MDR для защиты. Новости в сети 0
Admin Интересно Claude AI демонстрирует, как технологии опережают правила и этику. Новости в сети 0
Admin Интересно Пчелиные соты, 24 измерения и нейросеть. Как ИИ проверил главную математическую работу десятилетия. Новости в сети 0
Admin Интересно Защита образования: как MDR может помочь школам в борьбе с киберугрозами. Новости в сети 0
Admin Интересно Укол вместо скальпеля. Ученые из MIT придумали, как вырастить «запасную» печень без операции. Новости в сети 0
Admin Интересно Робот стоит — лицо как живое. Улыбается — жуть. Пришлось собрать 200 тысяч 3D-лиц, чтобы научить машины мимике. Новости в сети 0
Admin Интересно Защита образования: как MDR помогает школам в борьбе с киберугрозами. Новости в сети 0
Admin Интересно Остров Рунет за триллион. Как Россия планирует окончательно отгородиться от мировой сети к 2028 году. Новости в сети 0

Название темы