Хотите себя клонировать? Начните с голоса. Как запускать голосовую модель для синтеза речи на облачном GPU

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

Фильм "Вспомнить все" Картинка из интернета. 
Фильм "Вспомнить все" Картинка из интернета. 

Простота регистрации и использование виртуальной машины

Я использую Immers.сloud, который предоставляет удобный и интуитивно понятный сервис для аренды виртуальных машин. Процесс регистрации и настройки занимает считанные минуты, что позволяет быстро приступить к работе. Никаких VPN и ЦОДЫ в РФ.

Шаг 1: Регистрация и выбор конфигурации

Регистрация на платформе проста и занимает всего несколько минут. Для этого достаточно зайти на сайт Immers.сloud, создать учетную запись и выбрать подходящий тарифный план. В данном случае мне потребовалась конфигурация GPU Tesla A100, что позволяет эффективно работать с моделями машинного обучения, требующими значительных вычислительных ресурсов.

Шаг 2: Создание и настройка виртуальной машины

После регистрации и выбора тарифа вы можете приступить к созданию виртуальной машины. Выбираем конфигурацию `teslaa100-1.32.128.320`, что означает использование одного графического процессора Tesla A100, 32 vCPU, 128 ГБ оперативной памяти и 320 ГБ SSD. По мощности это условно Феррари, есть и мощнее, но для решения нашей задачи создания голосовой модели этого более чем достаточно.

Процесс формирования конфигурации GPU 

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

mv ~/Desktop/SSH_Keys/your_keys.pem ~/.ssh/

chmod 400 ~/.ssh/your_keys.pem

После этого подключаемся к серверу:

ssh -i ~/.ssh/your_keys.pem ubuntu@100.100.100.100

Теперь мы готовы к установке необходимых инструментов и настройке окружения.

Установка и настройка окружения

На сервере с предустановленным образом Ubuntu 20.04.4, который предоставляется Immers.cloud, мы установим Miniconda для управления пакетами и зависимостями Python.

Шаг 1: Установка Miniconda

sh sudo apt update sudo apt install wget wget https://repo. anaconda. com/miniconda/Miniconda3-latest-Linux-x86_64.sh

bash Miniconda3-latest-Linux-x86_64.sh

Шаг 2: Создание и активация виртуального окружения

sh conda create -n tacotron_tf1 python=3.6 conda activate tacotron_tf1

Шаг 3: Установка необходимых пакетов

sh conda install tensorflow=1.15.0 pip install numpy==1.19.5 scipy==1.5.4 cython pyaudio h5py falcon==1.2.0 inflect==0.2.5 audioread==2.1.5 librosa==0.5.1 matplotlib==2.0.2 tqdm==4.11.2 Unidecode==0.4.20 sounddevice==0.3.10 pip install numba==0.48

Важно: ставьте именно tensorflow=1.15.0 и все зависимости вручную, а не из requirements.txt. Либо можете сразу апгрейдить файл, забрав репозиторий к себе в GitHub.

Теперь окружение готово к работе с моделью Tacotron.

Tacotron — это глубокая нейронная сеть для синтеза речи. Она преобразует текстовые последовательности в мел-спектрограммы, которые затем могут быть преобразованы в аудиосигналы. Основные компоненты модели Tacotron:

  • Энкодер: Принимает последовательность символов и преобразует их в представление с высокой размерностью.
  • Декодер: Принимает выход энкодера и генерирует мел-спектрограммы.
  • Post-processing сеть: Преобразует мел-спектрограммы в линейные спектрограммы, которые затем могут быть конвертированы в аудиосигналы с помощью Griffin-Lim или WaveNet.

Tacotron позволяет создавать высококачественные синтезированные голоса, которые звучат естественно и выразительно. На ютубе куча видео разного использования этой НС.

Клонирование репозитория Tacotron и подготовка данных

Шаг 1: Клонирование репозитория

sh git clone https://github. com/Rayhane-mamah/Tacotron-2.git cd Tacotron-2

Шаг 2: Создание структуры папок и перенос файлов данных

P/S. Этот репозиторий старенький, вы можете поискать посвежее. Я же просто подстроил окружение и скорректировал некоторые скрипты.

Для создания голосовой модели нам потребуется качественный аудиоматериал и соответствующая транскрипция. Мы будем использовать 16-битные WAV файлы с частотой дискретизации 22050 Гц. Для получения транскрипции я воспользовался сервисом Turboscribe. ai, который позволяет быстро и точно расшифровывать аудиозаписи. Супер крутой сервис, кстати, и с русским языком дружит, что сейчас редкость.

Не ленитесь на этом этапе, чем качественнее будет датасет, тем лучше будет результат и тем меньше будет потрачено количество эпох обработки, и соответственно, меньше денег вы потратите на аренду машины.

Я же взял голосовые данные студийной записи неповторимой Медведевой — закадровый голос Кеши из мультсериала «Ми-ми-мишки».

Транскрипция аудио файла с помощью <a href="https://turboscribe.ai/" rel="nofollow noreferrer noopener" target="_blank">Turboscribe.ai</a> 
Транскрипция аудио файла с помощью Turboscribe.ai 

Шаг 3: Подготовка данных

Создайте структуру папок и перенесите файлы данных:

sh mkdir -p /home/ubuntu/voice_data/LJSpeech-1.1/wavs mv ~/Desktop/voice_data/metadata. csv /home/ubuntu/voice_data/LJSpeech-1.1/

mv ~/Desktop/voice_data/example. wav /home/ubuntu/voice_data/LJSpeech-1.1/wavs/

Шаг 4: Проверка содержимого файла metadata. csv

Убедитесь, что ваш файл metadata. csv содержит корректные данные:

sh echo «example. wav|This is an example sentence. |This is an example sentence.» > /home/ubuntu/voice_data/LJSpeech-1.1/metadata. csv

Предварительная обработка данных

Для успешной предварительной обработки данных необходимо немного модифицировать скрипт `preprocessor.py` для добавления диагностики:

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

sh python preprocess. py --base_dir=/home/ubuntu/voice_data --output=/home/ubuntu/Tacotron-2

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

Обучение модели Tacotron

После успешной предварительной обработки данных мы можем перейти к обучению модели Tacotron.

Шаг 1: Запуск процесса обучения

Для запуска процесса обучения используйте следующий скрипт:

sh python train. py --output_dir=/home/ubuntu/Tacotron-2/logs-tacotron --tacotron_train_steps=200000 --gpu_id=0

Этот процесс может занять значительное время, в зависимости от объема данных и доступных вычислительных ресурсов. В нашем случае мы используем графический процессор Tesla A100, который значительно ускорит процесс обучения, но потребуется не менее 50000 эпох и несколько дней, чтобы был хороший результат. На момент написания статьи прошло два дня обучения. Можно уже предварительно сделать вывод, что чтобы получить хороший результат арендовать машину нужно минимум на 7 - 12 дней. Как ранее уже говори многое зависит от качества датасета. Хороший датасет = экономия на аренде.

Шаг 2: Мониторинг процесса обучения

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

sh tensorboard --logdir=/home/ubuntu/Tacotron-2/logs-tacotron

Откройте браузер и перейдите по адресу, указанному в консоли, чтобы увидеть визуализацию процесса обучения.

Синтез речи

После завершения процесса обучения вы можете использовать обученную модель для синтеза речи.

Шаг 1: Запуск скрипта синтеза

Используйте следующий скрипт для синтеза речи:

sh python synthesize. py --model=«Tacotron' --checkpoint='/home/ubuntu/Tacotron-2/logs-tacotron/taco_pretrained/' --text_list='text_list. txt»

Шаг 2: Подготовка текстового файла

Создайте файл `text_list.txt` и добавьте туда предложения, которые вы хотите синтезировать:

"Привет, это пример. Это еще один пример синтезированной речи."

Шаг 3: Запуск синтеза

Запустите скрипт синтеза и получите WAV файлы с синтезированной речью. Результаты будут сохранены в указанной директории.

Использование результата

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

Для интеграции модели в чат-бот вы можете использовать следующие шаги:

Создание API для синтеза речи: Напишите серверное приложение, которое принимает текст и возвращает аудиофайл с синтезированной речью. Это можно сделать с помощью Flask или FastAPI на Python.

Этот этап потянет на отдельную статью, поэтому тут разворачивать и затягивать не вижу смысла.

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

Отдельное спасибо службе поддержки, которая оперативно отвечает на любые вопросы.

2
6 комментариев

я свой голос даже в гс не могу слушать, еще копировать его, в целом копировать свою личность брр, это ж какую самооценку нужно иметь😁

1
Ответить

У Вас правильное восприятие и самооценка) Многие свой голос критикуют. Когда мы говорим мы слышим его совсем иначе чем в записи. Тут речь скорее о производительности и интеграции его устройства, например в голосовые помощники и тгд.

Ответить

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

1
Ответить

Да, нужно просто использовать ИИ как инструмент и управлять им.

Ответить

Это же теперь можно делать озвучку для игр, как мод, если вдруг, её не добавили. Как в киберпанке, например

Ответить

Совершенно верно) Можно озвучить абсолютно любым голосом…🤫 Но только для личного использования) Голос это тоже предмет будущих судебных споров, поэтому нужно относится к нему как к интеллектуальной собственности. Вот кстати пример первых разборок из-за использования голоса: https://t.me/HumanReadyTech/371

Ответить