Иногда установка программ из мира нейросетей превращается в небольшое приключение.
Так произошло и с SadTalker — проектом, который умеет анимировать лицо на фотографии и заставлять его говорить.
Казалось бы, всё просто: клонировать репозиторий, установить зависимости и запустить.
На практике всё заняло почти два дня.
День первый. Всё должно работать… но не работает
Началось всё довольно стандартно.
Склонировали репозиторий:
git clone https://github.com/OpenTalker/SadTalker.git
cd SadTalker
Создали виртуальное окружение и начали устанавливать зависимости.
Но уже на этапе запуска появилась первая ошибка:
ModuleNotFoundError: No module named 'pkg_resources'
Это означало, что Python не видит модуль pkg_resources, который входит в пакет setuptools.
Странность заключалась в том, что setuptools был установлен.
Проверка:
pip install setuptools
Ответ системы:
Requirement already satisfied
Но Python продолжал утверждать, что модуля не существует.
Первая гипотеза — версия Python
Первоначально использовался Python 3.11.
Многие проекты машинного обучения до сих пор плохо поддерживают эту версию.
Особенно старые зависимости вроде librosa, numpy и scikit-image.
После нескольких попыток стало ясно — нужно перейти на Python 3.10.
После смены версии часть ошибок исчезла.
Но не все.
Вторая проблема — numpy
Следующей неожиданностью стала версия numpy.
Новая версия (1.26+) конфликтует с рядом библиотек, которые использует SadTalker.
Решение оказалось простым:
pip install "numpy<1.26"
После этого большинство библиотек установилось без ошибок.
День второй. Виртуальное окружение и «магия»
К утру стало ясно, что проблема могла быть в самом virtualenv.
Иногда окружение повреждается во время установки зависимостей.
Поэтому было принято простое решение:
удалить его и создать заново.
rm -rf venv
python3.10 -m venv venv
source venv/bin/activate
После этого:
pip install -r requirements.txt
И — неожиданно — всё установилось намного спокойнее.
Ещё одна мелочь — ffmpeg
SadTalker использует ffmpeg для сборки видео.
Если его нет в системе, программа не сможет создать итоговый ролик.
Решение:
sudo apt install ffmpeg
Наконец запуск
После всех исправлений программа наконец стартовала:
python app_sadtalker.py --cpu
В консоли появился адрес:
Running on local URL: http://127.0.0.1:7860
Открываем браузер — и интерфейс работает.
Фотография загружается, аудио добавляется, лицо начинает говорить.
Что оказалось самым важным
За два дня экспериментов выяснилось несколько ключевых вещей.
- Лучше использовать Python 3.10
- numpy должен быть ниже версии 1.26
- virtualenv иногда проще пересоздать
- ffmpeg обязательно должен быть установлен
- проекты с нейросетями часто чувствительны к версиям библиотек
Итог
Несмотря на сложности установки, SadTalker отлично работает даже на обычной системе без GPU.
Самое сложное — не сама программа, а правильная комбинация библиотек Python.
Когда они совпадают — всё запускается буквально одной командой.