К основному контенту

Как с помощью нейронной сети подделать голос

https://cs9.pikabu.ru/post_img/2019/09/04/8/1567602816160381096.png
Способов идентифицировать человека по голосу появляется все больше. И параллельно исследователи придумывают, как обойти эти механизмы — и для защиты собственной персональной информации, и для взлома защищенных таким образом систем. Разберемся в самых последних достижениях ученых в этой сфере.

"Статья взята из открытых источников"

Генерация голоса

Голос человека — результат движения связок, языка, губ. В распоряжении компьютера только числа, изображающие записанную микрофоном волну. Как же компьютер создает звук, который мы можем услышать из динамиков или наушников?

Текст в речь

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

Звуки в речь

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

Речь в речь

Относительно новый подход полностью основан на нейронных сетях. Рекурсивная архитектура WaveNet, построенная исследователями из DeepMind, позволяет преобразовывать звук или текст в другой звук напрямую, без привлечения заранее записанных строительных блоков (научная статья).
Ключ к этой технологии — правильное использование рекурсивных нейронов Long Short-Term Memory, которые сохраняют свое состояние не только на уровне каждой отдельной клетки нейронной сети, но и на уровне всего слоя.
Схема работы WaveNet
Схема работы WaveNet
В целом эта архитектура работает с любым видом звуковой волны, вне зависимости от того, музыка это или голос человека.
На основе WaveNet есть несколько проектов.
Для воссоздания речи такие системы используют генераторы звуковой нотации из текста и генераторы интонаций (ударения, паузы), чтобы создать натурально звучащий голос.
Это самая передовая технология создания речи: она не просто склеивает или смешивает непонятные машине звуки, но самостоятельно создает переходы между ними, делает паузы между словами, меняет высоту, силу и тембр голоса в угоду правильному произношению — или любой другой цели.

Создание поддельного голоса

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

Принцип работы имитатора голоса

Для создания правдоподобной модели «голос в голос», основанной на WaveNet, потребуется множество усилий: нужно записать большое количество текста, сказанного двумя разными людьми, причем так, чтобы все звуки совпадали секунда в секунду, — а сделать это сложновато. Однако есть и другой метод.
Основываясь все на тех же принципах, что и технология синтеза звука, можно достичь не менее реалистичной передачи всех параметров голоса. Так, была создана программа, которая клонирует голос на основе небольшой записи речи. Именно ее мы с тобой и используем.
Сама программа состоит из нескольких важных частей, которые работают последовательно, поэтому разберемся поэтапно.

Кодирование голоса

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

Создание спектрограммы

На основе этих характеристик можно из текста создать мел-спектрограмму звука. Этим занимается синтезатор, в основе которого лежит Tacotron 2, использующий WaveNet.
Пример сгенерированной спектрограммы
Пример сгенерированной спектрограммы
Сгенерированная спектрограмма содержит всю информацию о паузах, звуках и произношении, и в ней уже заложены все заранее вычисленные характеристики голоса.

Синтез звука

Теперь другая нейронная сеть — основанная на WaveRNN — будет постепенно создавать из мел-спектрограммы звуковую волну. Эта звуковая волна и станет воспроизводиться как готовый звук.
Все характеристики основного голоса сохраняются в синтезированном звуке, который, пусть и не без трудностей, воссоздает исходный голос человека на любом тексте.

Тестирование метода

Теперь, зная, как создать правдоподобную имитацию голоса, давайте попробуем применить это на практике. Есть два очень простых, но рабочих метода идентификации человека по голосу: с использованием анализа мел-кепстральных коэффициентов и с помощью нейронных сетей, специально обученных определять одного человека. Давайте узнаем, насколько хорошо мы можем обмануть эти системы поддельными записями.
Возьмем пятисекундную запись голоса мужчины и создадим две записи с помощью нашего инструмента.
Сравним эти записи с помощью мел-кепстральных коэффициентов.
Вид коэффициентов на графике
Вид коэффициентов на графике
Разница в коэффициентах также видна и в числах:

Синтез_1 - оригинал: 0.38612951111628727
Синтез_2 - оригинал: 0.3594987201660116
 
Как же отреагирует на такую хорошую подделку нейронная сеть?

Синтез_1 - оригинал: 89.3%
Синтез_2 - оригинал: 86.9%

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

Выводы

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

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

Источник - https://tech-geek.ru/voice-cloning-with-neural-network/

Популярное

Пробив информации. Osint-ресурсы.

Думаю что эта подборка будет полезна и вам, список ресурсов не всеобъемлющий по этому всем кому есть что добавить, добро пожаловать в коментарии. Поиск По Фотографиям Поиск по лицу: FindTwin face search demo + @VkUrlBot Face search • PimEyes Betaface free online demo - Face recognition, Face search, Face analysis VK.watch – история профилей ВКонтакте Поиск первоисточника картинки и всех доменов где она хоститься: TinEye Reverse Image Search Reverse image search for images and video - Berify.com Search by image | Reverse Image Search on Google 2019 Reverse Image Search - Search By Image Reverse Image Search - Find Similar Photos Online Karma Decay - Reverse image search of Reddit.com Поиск фото по геометкам в социальных сетях: Поиск фото по геометкам в соц. сетях Поисковик фотографий с привязкой к геолокации Другое: Поиск по фото мошенников и фейков Поисковые Cистемы Людей Мир: Free People Search | PeekYou https://pipl.com/

Скрытые функции поисковика DuckDuckGo

Если пoисковик DuckDuckGo кому-то и известен, то в первую очередь в связи с повышенной приватностью. В отличие от Google или «Яндекса» он не собирает данные о пользователях, но и результаты у него не такие же хорошие. Однако стоит копнуть глубже, и оказывается, что это мощнейший инструмент, способный значительно облегчить и ускорить извлечение информации из Сети. Начнем с того, что на самом деле DDG — не совсем поисковик. Вернее даже, совсем не поисковик, а этакий агpегатор ответов с разных поисковиков. В своей работе он использует поисковую выдачу Yahoo, Bing, Yummly, «Яндекса», «Википедии» и сотен других «надежных» источников. Такая особенность делает DDG очень точным, если источники содержат информацию именно по этому запросу. Он легко выдает исчерпывающие ответы на запросы типа «linux df», «долгая счастливая жизнь», «Java InterruptedException» или даже «is it raining». Но как только ты введешь что-то более сложное, что-то, чего не окажется в источниках DDG,

Пишем бот для рыбалки в игре Albion Online на языке Python (Albion Online Fishing bot)

import numpy as np import cv2 from mss.linux import MSS as mss from PIL import Image import time import pyautogui as pg import imutils import mss import numpy import pyautogui template = cv2.imread("2019-07-02_06-55_1.png", cv2.IMREAD_GRAYSCALE) w, h = template.shape[::-1] color_yellow = (0,255,255) mon = {'top': 80, 'left': 350, 'width': 100, 'height': 100} def process_image(original_image):     processed_image = cv2.cvtColor(original_image, cv2.COLOR_BGR2GRAY)     processed_image = cv2.Canny(processed_image, threshold1=200, threshold2=300)     return processed_image def ss():     op = 1     with mss.mss() as sct:         monitor = {"top": 40, "left": 0, "width": 800, "height": 640}         while "Screen capturing":             last_time = time.time()             img = numpy.array(sct.grab(monitor))             gray_frame = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)             res = cv2.matchTem