11 декабря 2019

Голосовой DeepFake, или Как работает технология клонирования голоса

Пишу, перевожу и иллюстрирую IT-статьи. На proglib написал 140 материалов. Увлекаюсь Python, вебом и Data Science. Открыт к диалогу – ссылки на соцсети и мессенджеры: https://matyushkin.github.io/links/ Если понравился стиль изложения, упорядоченный список публикаций — https://github.com/matyushkin/lessons
Как научить искусственный интеллект читать текст любым голосом? Рассказываем, что известно о технологии клонирования голоса, на примере открытого репозитория Real-Time Voice Cloning.
Голосовой DeepFake, или Как работает технология клонирования голоса

Проблема синтеза речи из текста (Text-to-Speech, TTS) представляет собой одну из классических задач для искусственного интеллекта. Цель ИИ – автоматизировать процесс чтения текста, основываясь на наборах данных, содержащих пары «текст – аудиофайл».

Одной из важных проблем синтеза речи является задача создания образа голоса со всеми его характерными особенностями. Соответствующие наборы методик называют технологией клонирования голоса (англ. voice changing, voice cloning).

Решение указанной проблемы имеет множество практических приложений:

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

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

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

Отличительной особенностью последних разработок является то, что для создания правдоподобного образа «голосовой мишени» достаточно всё меньших интервалов звучащей устной речи.

Современное состояние

В сфере создания инструментов для клонирования голоса работают множество команд, стремящихся к коммерциализации программных продуктов. По приведённым ниже ссылкам вы можете оценить текущее состояние технологии:

  • Resemble.AI (предоставляется демоверсия программы).
  • iSpeech (есть демо для 27 языков, включая русский).
  • Lyrebird AI (можно загрузить демоверсию на 3 часа речи).
  • Vera Voice, созданный компанией Screenlife Technologies Тимура Бекмамбетова и командой проекта «Робот Вера». Недавно команда показала пример адаптации голосов русских знаменитостей:

Другие компании стараются обойти стороной этический вопрос за счёт использования вместо клонирования голоса нейросетевых систем синтеза-смешения множества голосов. Таким коммерческим продуктом является, например, Yandex SpeechKit.

В связи с тем, что данная технология представляет конкурентный интерес для множества IT-компаний, проекты с открытым исходным кодом крайне редки. В этой статье мы остановимся на редком свободном проекте Real-Time Voice Cloning. Этот открытый репозиторий является результатом применения технологии переноса обучения SV2TTS, описанной в научной публикации (сэмплы, полученные в результате применения подхода).

Автор библиотеки с июня 2019 участвует в упомянутом выше коммерческом проекте Resemble.AI и уделяет репозиторию меньше времени, но ничто не мешает вам сделать собственный форк проекта.

Телеграм-каналы об ИИ

Алгоритм клонирования голоса

Чтобы компьютер мог читать вслух текст, ему нужно понимать две вещи: что он читает и как это произнести. Поэтому в проекте Real-Time Voice Cloning система клонирования принимает два входных источника: текст, который необходимо озвучить, и образец голоса, которым этот текст должен быть прочитан.

Голосовой DeepFake, или Как работает технология клонирования голоса

С технической точки зрения система разбита на три компонента:

  1. Переданный аудиофайл с образцом речи, записанным в виде звуковой дорожки, преобразуется кодером речи (speaker encoder) в векторное представление фиксированной размерности.
  2. Переданный текст также кодируется в векторное представлении кодером текста (text encoder). Объединение речевого вектора и вектора текста декодируется в спектрограмму. Кодер текста, конкатенатор векторов и декодер (на схеме объединены синим цветом) представляют собой структуру синтезатора речи.
  3. Вокодер (vocoder, виртуальное устройство синтеза речи) преобразует спектрограмму в звуковую форму.

Модели трёх выделенных компонентов обучаются независимо друг от друга.

Где взять данные?

Объёмы информации, необходимой для качественного обучения системы клонирования, составляют десятки и сотни Гб. В рассматриваемой библиотеке для хранения датасетов служит одна общая директория. Все сценарии предварительной обработки данных выводят результаты в новый каталог SV2TTS, создаваемый в корневом каталоге датасетов. Внутри этой директории появится каталог для каждой модели: кодера, синтезатора и вокодера.

Для обучения кодера речи можно обратиться к следующим библиотекам:

  • LibriSpeech (зеркало): набор данных train-other-500 (извлеките как LibriSpeech/train-other-500).
  • VoxCeleb1: наборы данных Dev A–D, в том числе набор метаданных (извлеките как VoxCeleb1/wav и VoxCeleb1/vox1_meta.csv).
  • VoxCeleb2: наборы данных Dev A–H (извлеките как VoxCeleb2/dev).

Для обучения синтезатор и вокодера:

  1. LibriSpeech: наборы данных train-clean-100 (зеркало) и train-clean-360 (зеркало) – извлеките как LibriSpeech/train-clean-100 and LibriSpeech/train-clean-360
  2. LibriSpeech alignments (только если у вас уже есть LibriSpeech): объедините структуру каталогов с загруженными вами наборами данных LibriSpeech

Официальным хостингом наиболее популярных наборов данных LibriSpeech служит openslr.org, который из-за популярности темы постоянно находится под существенной нагрузкой. Поэтому выше мы приложили ссылки на «зеркала» архивов.

Если вы решили с головой погрузиться в данную тему, обратите внимание на библиотеку Python для работы с аудиодатасетами audiodatasets:

        pip install audiodatasets
    

Будьте осторожны: при установке библиотека загружает более 100 Гб данных трех наборов:

Перечислим также другие датасеты, которые не проверялись в рассматриваемой библиотеке, но применимы для обучения, в том числе корпуса русскоязычной устной речи:

  1. Корпус речи англоговорящих людей CSTR VCTK
  2. Набор данных M-AILABS: имеются примеры речи на русском, украинском, немецком, английском, испанском, итальянском, французском и польском языках
  3. Корпуса звучащей русской речи
  4. Мультимедийный корпус русского языка: преимущественно фрагменты кинофильмов с распознанным текстом
  5. Подборка различных речевых датасетов

Использование предобученных моделей

Имеется инструкция по переносу проекта с помощью Docker, здесь мы рассмотрим установку на локальной машине. Учтите, что наличие GPU является обязательным. Клонируем репозиторий:

        git clone https://github.com/CorentinJ/Real-Time-Voice-Cloning.git
    

В качестве языка программирования используется Python 3, автор рекомендует версию 3.7. В связи с тем, что репозиторий предполагает привлечение вполне конкретных версий библиотек, рекомендуем питонистам пускать в ход виртуальное окружение.

Переходим в папку и устанавливаем необходимые зависимости:

        pip3 install -r requirements.txt
    

Также потребуется фреймворк глубокого обучения PyTorch (версия не ниже 1.0.1).

Далее необходимо загрузить предобученные модели (архив на Google drive, зеркало). Согласно с вышеописанной схеме загруженный архив содержит три директории для трех моделей. Их нужно слить вместе с соответствующими директориями корневого каталога библиотеки.

Проверить правильность конфигурации можно ещё до загрузки датасетов:

        python3 demo_cli.py
    

Если все тесты пройдены (вы увидите строку All tests passed), можно двигаться дальше. Скрипт предложит указать пути к файлам примеров, но для работы удобнее обратиться кграфическому интерфейсу:

        python3 demo_toolbox.py
    

Если у вас уже загружены датасеты, то можно сразу указать путь к директории:

        python3 demo_toolbox.py -d <путь_к_директории_датасетов>
    

Чтобы просто поиграть с программой, достаточно наименьшего по объёму датасета LibriSpeech/train-clean-100 (см. выше).

Пример результата вызова интерфейса:

Голосовой DeepFake, или Как работает технология клонирования голоса

Для первой пробы вы можете нажать под каждым разделом кнопки Random , чтобы выбрать случайный аудиопример, затем Load, чтобы загрузить голосовой ввод в систему. Выпадающий список Dataset служит для выбора набора данных, Speaker – для выбора персоны, Utterance – для произносимой фразы. Чтобы услышать как звучит отрывок, просто нажмите Play. Для запуска алгоритма нажмите Synthesize and vocode. С помощью кнопки Record one можно записать свой собственный сэмпл.

Пример работы с интерфейсом без обучения нейросетей представлен в следующем видеоролике:

🤖 Библиотека data scientist’а
Больше полезных материалов вы найдете на нашем телеграм-канале «Библиотека Data scientist’а»
🤖🎓 Библиотека Data Science для собеса
Подтянуть свои знания по DS вы можете на нашем телеграм-канале «Библиотека Data Science для собеса»
🤖🧩 Библиотека задач по Data Science
Интересные задачи по DS для практики можно найти на нашем телеграм-канале «Библиотека задач по Data Science»

Процесс обучения

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

Начинаем с подготовки данных для обучения кодера:

        python3 encoder_preprocess.py <datasets_root>
    

Для обучения кодер использует окружение visdom. Инструменты окружения выглядят следующим образом:

Голосовой DeepFake, или Как работает технология клонирования голоса

При необходимости вы можете отключить окружение с помощью аргумента --no_visdom .

Обучаем кодер:

        python3 encoder_train.py my_run <datasets_root>
    

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

        python3 synthesizer_preprocess_audio.py <datasets_root>
    

Затем вложения:

        python3 synthesizer_preprocess_embeds.py <datasets_root>/synthesizer
    

Теперь вы можете обучить синтезатор:

        python3 synthesizer_train.py my_run <datasets_root>/synthesizer
    

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

        python3 vocoder_preprocess.py <datasets_root>
    

Наконец, обучаем вокодер:

        python3 vocoder_train.py <datasets_root>
    

Вокодер выводит сгенерированные аудиофайлы в директорию модели.

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

Интересны ли вам проекты, связанные с дипфейками лиц и голоса? Будем рады вашим ответам в комментариях.

МЕРОПРИЯТИЯ

Комментарии

ВАКАНСИИ

Добавить вакансию
Go-разработчик
по итогам собеседования

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ