Гайды по нейронкам
May 26, 2024

Используем Talk-LLama-Fast на своем компьютере.

Привет! Это небольшой гайд о том, как можно использовать Talk-LLama-Fast на своем компьютере без каких-либо ограничений (ну почти, единственные наши ограничения - количество ОЗУ и VRAM на нашем устройстве).

Статья написана пока что лишь для Windows.

Шаг первый, нам надо установить MiniConda и MSVC, а также CUDA вместе с Microsoft Build Tools:

Сначала разберем установку миниконды. Из вложенной в слово ссылки скачиваем версию под свою систему, у меня это самое первое, 64-bit:

Нужная нам версия

При установке нам надо выбрать вот такие настройки:

Нам говорят что это не рекомендуется, но нам на это плевать - ведь нам будет проще в будущем.

Установили MiniConda? Теперь установим MSVC:

Переходим по вложенной в слово ссылке, кому лень обратно листать, то вот сюда. Листаем вниз, т.к. у меня 64 битная система, то я выбираю последнее:

нам надо x64 скачать и соответсвенно запустить

Теперь установим CUDA, для скачивания я выбрал следующие настройки:

большой скриншот, но я выбрал вот так. P.s. не забудь поставить новые драйвера!

Про Microsoft Build Tools:

Заходим вот сюда и скачиваем инсталлер по кнопке, если еще не скачали

жмем на белую кнопку и открываем скачавшийся .exe

Немного подождав подготовку Visual Studio Installer высветится вот такое окно:

Тут много сред разработки, но нам нужна всего лишь одна. (скриншотик ниже)
Собсна выбираем такие настройки и жмем установить.

Шаг второй, нам надо скачать и установить саму talk-llama-fast и модели к ней.

Скачиваем .zip из Releases

Тут нас встретят вот такие 4 архива:

no avx2 для старых процессоров, без этой пометки для новых. Скачиваем и распаковываем (АХ ДА, ЭТО ДЛЯ ИНТЕЛ!)

Открываем консоль от имени администратора (ctrl+shift+esc, запустить новую задачу, выбираем запустить с правами администратора, пишем cmd)

В консоль пишем следующий код, тем самым установим сервер xtts:

conda create -n xtts
conda activate xtts
conda install python=3.11
conda install git

pip install git+https://github.com/Mozer/xtts-api-server pydub
pip install torch==2.1.1+cu118 torchaudio==2.1.1+cu118 --index-url https://download.pytorch.org/whl/cu118
pip install git+https://github.com/Mozer/tts
conda deactivate

Теперь установим SillyTavern-Extras (мой совет - перейти в папку с вашим talk-llama), команды как это все сделать ниже:

cd "\ваш\путь\к\talk-llama\"
conda create -n extras
conda activate extras
conda install python=3.11
conda install git

git clone https://github.com/Mozer/SillyTavern-Extras
cd SillyTavern-extras
pip install -r requirements.txt
cd modules
git clone https://github.com/Mozer/wav2lip
cd wav2lip
pip install -r requirements.txt
conda deactivate

ВАЖНО! Отредактируйте xtts_wav2lip.bat, путь после --output флага замените на ваш актуальный путь до \SillyTavern-Extras\tts_out\. Если вы имеете 6 или 8 гигабайт VRAM, то отредактируйте talk-llama-wav2lip.bat, добавив в него аргумент -ngl 0 это позволит использовать LLM модель не на видеокарте, а в паре CPU+RAM. Также необходимо заменить имена моделей во всех батниках на те, которые мы скачаем чуть позже.

Теперь установим ffmpeg:

Скачаем ffmpeg отсюда и перенесем его в корень нашего диска для удобства. Теперь установим для него PATH (как это сделать смотри вот тут). Теперь скачиваем h264 кодек здесь (например я скачал http://ciscobinary.openh264.org/openh264-2.4.1-win64.dll.bz2 и распаковал его 7-zip) и помещаем .dll в путь C:\ffmpeg\bin (если вы ставили в корень, в противном случае ставим в место где ваш ffmpeg).

Ну и самое последнее, нам необходимо скачать сами модели.

Переходим по ссылке и скачиваем наш .bin файл. (при желании можно взять large-v3 версию, либо версию без квантования (но она будет весить больше и занимать места в вашей VRAM соответсвенно больше))

Шаг 3. Теперь, собственно запускаем нашу talk-llama-fast:

Заходим в SillyTavern-extras (напомню, мы ее ставили в папку талк лламы) и запускаем батник silly_extras.bat. Теперь мы переходим обратно в папку талк лламы, переходим в xtts и запускаем батник xtts_wav2lip.bat (который поднимет xtts сервер) или запустите xtts_streaming_audio.bat для того, чтобы был сервер, который позволит использовать аудио без видео. Небольшая подсказка: При первом запуске xtts загрузит DeepSpeed с github. Если deepspeed не удается загрузить "Warning: Retyring (Retry... ReadTimoutError...") - включите VPN для загрузки deepspeed (27 МБ) и чекпоинт xtts (1,8 ГБ), затем вы можете отключить его). Чекпоинт XTTS можно скачать без VPN. Но если вы прервете загрузку - чекпоинт будет сломан - вам придется вручную удалить папку \xtts_models\ и перезапустить xtts. И теперь последнее: запускаем talk-llama-wav2lip.bat или talk-llama-wav2lip-ru.bat или talk-llama-just-audio.bat в зависимости от ваших настроек (.exe запускать не надо - это консольное приложение). Снова небольшая подсказочка: Если в .bat есть кириллические (русские) буквы - сохраните его в кириллической кодировке "OEM 866" (notepadd++ её поддерживает). И начинаем говорить

Немного слов об оптимизации для тех, кто на 6 или 8 гигабайтах VRAM:

  • используйте CPU вместо GPU, это будет немного медленнее (5-6 с): в файле talk-llama-wav2lip.bat найдите и измените ngl на -ngl 0 (у mistral 33 слоя, попробуйте значения от 0 до 33, чтобы найти наилучшую скорость)
  • установить меньший контекст для llama: --ctx_size 512
  • Установите --lowvram в файле xtts_wav2lip.bat, это будет перемещать модель xtts из GPU в RAM после каждого запроса xtts (но это будет медленнее)
  • установите --wav-chunk-sizes=9999 в файле xtts_wav2lip.bat, это будет немного медленнее, но зато будет меньше запросов wav2lip.
  • Попробуйте использовать меньшие модели whisper (но я не рекомендую это делать, ведь вы потеряете в качестве)

Дополнительные плюшки и дополнения, которые тоже хотелось бы затронуть:

  • Добавьте новые голоса для xtts в \xtts\speakers\. Я рекомендую 16 бит моноканал, 22050 Гц 10 секундный wav без шумов и музыки. Используйте audacity или подобные решения для их редактирования.
  • Поместите новые видео в \SillyTavern-extras\modules\wav2lip\input\. Я рекомендую 300x400 25 кадров в секунду длиной 1 минута, не ставьте видео высокого разрешения, они потребляют много памяти. Одно видео в одну папку. Имя папки должно быть таким же, как имя желаемого голоса xtts и имя персонажа в talk-llama-wav2lip.bat. Например, Anna.wav и \Anna\youtube_ann_300x400.mp4 для персонажа с именем Anna. С параметром --multi-chars talk-llama передаст имя нового персонажа в xtts и wav2lip, даже если этот персонаж не определен в bat или start prompt. Если xtts не найдет этот голос, он будет использовать голос по умолчанию. Если wav2lip не найдет это видео, он будет использовать видео по умолчанию.
  • Поместите описание персонажа и некоторые ответы в файл assistant.txt.
  • Используйте одинаковые имена для персонажа, для .wav-файла и для названия папки с видео. Вы также можете сделать копии аудио- и видеофайлов (например, Kurt Cobain и Kurt). Теперь вы можете обращаться к нему в обоих случаях.
  • Для улучшения русского языка в XTTS можете использовать файнтюн модели, например: https://huggingface.co/Ftfyhh/xttsv2_banana или https://huggingface.co/NeuroDonu/RuXTTS/tree/main/10march. Но для стриминга они могут не подходить (галлюцинирует при коротких ответах). Используйте xtts по умолчанию в silly-tavern.

Опционально, улучшенная обработка комы для хттс - только для хттс аудио без wav2lip видео: Речь лучше, но немного медленнее для первого предложения. Xtts не разделяет предложения по комам ',': c:\Users[USERNAME]\miniconda3\Lib\site-packages\stream2sentence\stream2sentence.py строка 191, замените sentence_delimiters = '.(!;:,\n...)]}。' на sentence_delimiters = '.(!;:\n...)]}。'

Плагин для поиска через google:

  • Скачайте search_server.py
  • Установите langchain: pip install langchain
  • Зарегистрируйтесь вот тут: https://serper.dev/api-key, он бесплатный и быстрый, выдается 2500 бесплатных поисков. Получите API-ключ, вставьте его в search_server.py в строке 13: os.environ["SERPER_API_KEY"] = "your_key"
  • Запустите поисковый сервер, запустив файл search_server.py через любую из сред нашей miniconda (например: conda activate xtts, python search_server.py). Теперь вы можете использовать голосовые команды, например, такие: Please google who is Barack Obama или Пожалуйста погугли погоду в Москве.