Используем Talk-LLama-Fast на своем компьютере.
Привет! Это небольшой гайд о том, как можно использовать Talk-LLama-Fast на своем компьютере без каких-либо ограничений (ну почти, единственные наши ограничения - количество ОЗУ и VRAM на нашем устройстве).
Статья написана пока что лишь для Windows.
Шаг первый, нам надо установить MiniConda и MSVC, а также CUDA вместе с Microsoft Build Tools:
Сначала разберем установку миниконды. Из вложенной в слово ссылки скачиваем версию под свою систему, у меня это самое первое, 64-bit:
При установке нам надо выбрать вот такие настройки:
Установили MiniConda? Теперь установим MSVC:
Переходим по вложенной в слово ссылке, кому лень обратно листать, то вот сюда. Листаем вниз, т.к. у меня 64 битная система, то я выбираю последнее:
Теперь установим CUDA, для скачивания я выбрал следующие настройки:
Заходим вот сюда и скачиваем инсталлер по кнопке, если еще не скачали
Немного подождав подготовку Visual Studio Installer высветится вот такое окно:
Шаг второй, нам надо скачать и установить саму talk-llama-fast и модели к ней.
Тут нас встретят вот такие 4 архива:
Открываем консоль от имени администратора (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 отсюда и перенесем его в корень нашего диска для удобства. Теперь установим для него 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илиПожалуйста погугли погоду в Москве.