Запускаем нейросеть, имитирующую произвольный голос
Доступность реализации сложных алгоритмов и других технических ноу-хау для современного программиста породила всплеск создания интересных проектов. Одним из них является система, имитирующая произношение произвольного текста выбранным голосом. О ее установке и запуске я расскажу в этой статье.
Репозиторий англоязычной версии такой нейросети располагается на GitHub, его создателем является CorentinJ. Также имеется построенный на базе указанного русскоязычный проект за авторством vlomme. Для скачивания первоисточников проектов на локальную машину следует использовать систему контроля версий Git (команды описаны здесь). В частности, после перехода в локальную папку с вашими проектами на Python можно набрать:
git clone ссылка_на_удаленный_репозиторий имя_папки_для_проекта
Например, для русскоязычного проекта:
git clone https://github.com/vlomme/Multi-Tacotron-Voice-Cloning.git voice_cloning_test
Готовим виртуальное окружение
После создаем новое виртуальное окружение (процесс детально описан здесь), так как потребуется установка определенных версий библиотек, которые могут быть несовместимы с другими имеющимися в вашей базовой сборке. С учетом того, что у меня установлена Anaconda, для этого я воспользовался командой:
conda create --name имя_среды python=3.7
Обратите внимание, что версия Python 3.7 на данный момент является последней из поддерживаемых нейросетью.
Загружаем библиотеки
Прежде всего активируем созданное на предыдущем шаге виртуальное окружение командой:
Теперь можно начинать процесс загрузки библиотек. Во-первых, устанавливается PyTorch (фреймворк машинного обучения для языка Python с открытым исходным кодом) со страницы https://pytorch.org/get-started/locally/.
Выбираем выделенные оранжевым цветом настройки, подходящие для вашей системы, копируем получившуюся команду под ними и выполняем на своем компьютере. В моем случае итоговая команда будет иметь следующий вид:
conda install pytorch torchvision torchaudio cudatoolkit=11.0 -c pytorch
Если ваша видеокарта поддерживает CUDA (программно-аппаратная архитектура, позволяющая существенно увеличить вычислительную производительность благодаря использованию графических процессоров фирмы Nvidia), то в последней строке выбора параметров нужно указать версию библиотеки. Для этого в Linux можно воспользоваться командой:
/usr/local/cuda/bin/nvcc --version
Далее переходим в папку с проектом и устанавливаем библиотеки из файла requirements.txt командой:
pip install -r requirements.txt
Здесь придется немного подождать.
Финальные настройки
Затем необходимо распаковать веса моделей. Для этого скачиваем архив по адресу, переходим в папку проекта и извлекаем его содержание в соответствующие директории.
Дополнительно может потребоваться установка в операционной системе пакетов libportaudio2 и ffmpeg.
Запуск проекта
Попробуем набрать демонстрационную команду (-p "ex.wav" - задается файл с записью имитируемого голоса, а -t "текст" - текст, который должен быть прочитан):
python demo_cli.py -p "ex.wav" -t "Hello my friends. Я многоязычный синтез построенный на tacotron. Шла саша по шоссе и сосала сушку" --no_sound
Получаем ошибку, связанную с невозможностью записи получившегося результата из-за удаления из модуля librosa.output функции write_wav. Поэтому открываем файл demo_cli.py и вносим небольшие изменения:
В частности, импортируем библиотеку soundfile и заменяем функцию записи librosa.output.write_wav на soundfile.write (изменения выделены оранжевым цветом):
После этих корректировок повторно запускаем команду и получаем на выходе файл demo_output_00.wav с записью воспроизводимым голосом заданного текста.
Напоследок отмечу, что вы можете записать в файл произвольный голос и задать его имя через параметр -p для программы. Для этого нужно включит устройство приема звука и воспользоваться программой, например, Audacity или ffmpeg.
В первой для этого нажимаем используем панель в левом верхнем углу и сохраняем файл через меню - "Файл"-"Экспорт".
Для начала записи звука с использованием ffmpeg (рассказывал о ее многих функциях ранее) потребуется набрать команду:
ffmpeg -f alsa -i default имя_выходного файла
Вот так осуществляется настройка и запуск рассмотренного проекта. Если что-то не понятно, пишите в комментариях.