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

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 Интересно Тест-драйв: как избавиться от сомнений в выборе ИБ-решения за 7 дней. Новости в сети 0
Admin Интересно Как управлять скрытыми ИИ-инструментами без замедления работы сотрудников. Новости в сети 0
Admin Интересно Ошибка из 2018 и подставные аккаунты. Рассказываем, как популярный пакет art-template начал атаковать айфоны. Новости в сети 0
Admin Интересно Сотрудник ушёл, а доступ остался. Как забытая учётка открыла хакерам путь к водоснабжению целого города. Новости в сети 0
Admin Интересно Роботы научились двигаться как живая материя. Новости в сети 0
Admin Интересно Идентификация как основной вектор атак в современных системах безопасности. Новости в сети 0
Admin Интересно Студенты возмущены после того, как ИИ пропустил сотни имён на выпускной церемонии. Новости в сети 0
Admin Интересно Как небольшая группа пользователей может ухудшить рекомендации в TikTok. Новости в сети 0
Admin Интересно Как небольшая группа пользователей может испортить рекомендации на TikTok. Новости в сети 0
Admin Интересно Как снизить риск фишинга до того, как он приведёт к сбоям в бизнесе. Новости в сети 0
Admin Интересно Как автоматизация ИБ закрывает угрозы без рутины. Новости в сети 0
Admin Интересно VPN, просевший трафик и минус 7 млрд руб. Как новые требования Минцифры ударили по маркетплейсам. Новости в сети 0
Admin Интересно Как анализ собственных инструментов помогает снизить риски кибератак. Новости в сети 0
Admin Интересно Практический вебинар: Как PT NGFW защищает от атак в реальном времени. Новости в сети 0
Admin Интересно ИИ уходит на дно: плавучие серверы в океане как новый этап развития технологий. Новости в сети 0
Admin Интересно Мы искали инопланетян не там? Жизнь прячется не в молекулах, а в том, как они организованы. Новости в сети 0
Admin Интересно Как спрятать секрет с помощью недоказуемой математики? Учёный обошёл 30-летний запрет в криптографии. Новости в сети 0
Admin Интересно Anthropic рассказала, как отучила искусственный интеллект угрожать людям. Новости в сети 0
Admin Интересно Безопасность КИИ: что изменилось и как выстроить защиту. Новости в сети 0
Admin Интересно Звездные каннибалы и космические ДТП. Как во Вселенной появляются самые тяжелые черные дыры. Новости в сети 0
Admin Интересно Азбука Морзе, Grok и $200 000: как один пост в X заставил ИИ-агента перевести токены. Новости в сети 0
Admin Интересно ФБР также читает чаты. Как переписка в мессенджере стоила хакеру восьми лет свободы. Новости в сети 0
Admin Интересно Защита или цензура? История о том, как Касперский стал личным Роскомнадзором на MacBook. Новости в сети 0
Admin Интересно Первый удар по VPN в США: как Юта хочет запретить анонимность, не имея на это технических средств. Новости в сети 0
Admin Интересно Исследователь показал, как отследить австралийских полицейских через Bluetooth. Новости в сети 0
Admin Интересно Галактике 400 миллионов лет, но она выглядит на миллиарды. Уэбб нашёл невозможного красного монстра — и астрономы не понимают, как он успел повзрослет Новости в сети 0
Admin Интересно Целились в Starlink — попали в iPhone. Как новый запрет на спутниковое оборудование создал правовую неопределённость для всего рынка смартфонов. Новости в сети 0
Admin Интересно СМС, которую вы никогда не прочитаете. Как спецслужбы находят «важных персон» за пару часов. Новости в сети 0
Admin Интересно Скафандры не готовы, Луна ждёт. Как бюрократия срывает планы NASA вернуться на Луну. Новости в сети 0
Admin Интересно ИИ врёт так же, как раньше. Но теперь он делает это мило — и вы ему доверяете. Новости в сети 0
Admin Интересно Азартные игры, долги и переписка двух гениев. Как ссора из-за 100 долларов создала современную математику. Новости в сети 0
Admin Интересно Приключения казаха в южнокорейских сетях. Как жадность довела взломщика до тюрьмы. Новости в сети 0
Admin Интересно Что скрыто за вымогательством: как работает индустрия ransomware. Новости в сети 0
Admin Интересно Режиссёры защищают использование ИИ для воссоздания Вэла Килмера в новом фильме как «этичное». Новости в сети 0
Admin Интересно Частица, которая спасла бы физику. Стерильное нейтрино искали 30 лет — как жаль, что оно оказалось миражом. Новости в сети 0
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

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