Выявляем признаки аудиомонтажа методами AI
Все мы не раз могли видеть в фильмах, как героические следователи выводят на чистую воду различных негодяев и очень часто в этом им помогают эксперты, в частности, эксперты по работе с аудио, которые легко и просто, произведя несколько магических манипуляций, выводят на экран монитора непонятные графики и делают вывод – запись смонтирована. Вот и мы сейчас побудем такими экспертами. При этом используем наш старый принцип – делай сложное просто.
Одной из задач фоноскопической экспертизы является установление подлинности и аутентичности аудио записи — другими словами, выявление признаков монтажа, искажения и изменения записи. У нас возникла задача её проведения в целях установления подлинности записей – определения того, что на записи не осуществлялось никаких воздействий. Но как провести анализ тысяч, и даже сотен тысяч аудиозаписей?
Нам на помощь приходят методы AI, а также утилита по работе с аудио, о которой мы писали ранее «обработка АУДИО С помощью ffmpeg».
Как проявляются внесенные изменения в аудио? Как отличить файл, который изменили, от нетронутого файла?
Таких признаков несколько и самый простой — это выявление информации по редактированию файла и анализ даты его изменения. Данные способы легко реализуются средствами самой ОС, поэтому на данных способах мы останавливаться не будем. Но изменения может вносить более квалифицированный пользователь, который сможет скрыть или изменить информацию о редактировании, в таком случае применяются более сложные методы, например:
- сдвиг контуров;
- изменение спектрального профиля, записанного аудио;
- появление пауз;
- и многие другие.
И все эти сложно звучащие методы выполняются специально обученными экспертами — фоноскопистами с помощью специализированного софта типа Praat, Speech Analyzer SIL, ELAN, большая часть из которого платная и требует достаточно высокой квалификации для использования и трактовки результатов.
Экспертами анализ аудио осуществляется с использованием спектрального профиля, а именно, анализируя его мел-кепстральные коэффициенты. Воспользуемся опытом экспертов, и заодно используем готовый код, адаптировав его под нашу задачу.
Так изменений, которые можно внести большое множество, как будем выбирать?
Из возможных видов изменений, которые можно внести в аудио файлы, нас интересуют вырезание части из аудио, либо вырезание части и последующая замена оригинальной части аналогичным по длительности куском — так называемые cut/copy изменения, т.к. редактирование файлов в части шумоподавления, изменение частоты тона и прочие не несут рисков сокрытия информации.
И как мы будем выявлять эти самые cut/copy? Их же надо с чем-то сравнивать?
Очень просто – с помощью утилиты FFmpeg мы будем вырезать из файла часть случайной длительности и в случайном месте после чего будем осуществлять сравнение мел-кепстральных спектрограмм оригинального и «порезанного» файла.
Код для их отображения:
Подготовку датасета из исходных и порезанных файлов осуществляем с помощью команды утилиты FFmpeg:
где starttime и endtime начало и окончание вырезанного фрагмента. А с помощью команды:
соединяем часть файла для вставки part_1.wavс оригинальными частями (оборачивание команд FFmpeg в python смотрите нашу статью про FFmpeg).
Вот как выглядят оригинальные мел-спектрограммы файлов из которых были вырезаны части аудио по 0.2-2.5 секунды, и мел-спектрограммы файлов, из которых были вырезаны части аудио по 0.2-2.5 секунды, а после вставлены аудио фрагменты аналогичной длительности из этого аудиофайла:
Некоторые изображения различимы даже зрительно, другие выглядят практически одинаковыми. Распределяем полученные картинки по папкам и используем как исходные данные для обучения модели по классификации изображений. Структура папок:
Для нас нет никакой разницы был ли измененный аудио файл дополнен или сокращен — мы делим все результаты на хорошие, то есть файлы без изменений, и плохие. Таким образом, у нас решается классическая задача бинарной классификации. Классифицировать будем с использованием нейросетей, код для работы с нейросетью возьмем готовый из примеров работы с пакетом Keras.
Далее, после того как модель обучилась, проводим классификацию с её помощью
На выходе получаем классификацию аудио файла — ‘original’/’corrupt’, т.е. файл без изменений и файлы, в которые изменения были внесены.
Мы лишний раз доказали, что сложно выглядящие вещи можно сделать просто – использовали не самый трудный механизм методов AI, готовые решения и провели проверку аудио на предмет внесения изменений. Ну и побыли экспертами из детектива.