Полное руководство по сборке локальной системы AI-NPC в Skyrim Special Edition с русским языком, оригинальными голосами актёров и работой на видеокартах NVIDIA RTX 50-серии.
Версия гайда: 2026.05
Тестировалось на: Windows 11, RTX 5080 16GB, Ryzen 9 5900X, 32GB RAM
Skyrim: Anniversary Edition 1.6.1170 + SKSE 2.2.6
⚠️ Даже не пытайтесь если меньше 16GB VRAM
Что мы строим
Локальная система, где NPC в Skyrim:
- Понимают твою русскую речь (через микрофон)
- Отвечают через LLM с учётом своей роли, истории Скайрима и контекста
- Говорят оригинальными голосами актёров русской локализации с любым текстом
- Совершают действия: атакуют, следуют, торгуют, бегут
Всё работает полностью локально, без интернета и платных API.
Системные требования
Минимум
- NVIDIA GPU 12GB+ (RTX 4070 Ti / 3080 Ti / выше)
- 16 GB RAM
- 50 GB свободного места на SSD
- Микрофон
Рекомендуется
- NVIDIA RTX 4080/5080 (16GB) или RTX 4090/5090 (24-32GB)
- 32 GB RAM
- NVMe SSD
Для RTX 50xx (Blackwell) — этот гайд специально для вас
Стандартные сборки XTTS-сервера НЕ работают на 50-серии. Этот гайд решает.
Архитектура
[Микрофон]
↓
[Whisper STT] ─────────── распознавание речи (Python, CUDA)
↓
[Mantella.exe] ────────── оркестратор (запускается с Skyrim)
↓ ↑
↓ └─── (получает от Skyrim: имя NPC, локацию, события)
↓
[LM Studio + Stheno] ──── генерация ответа (HTTP API :1234)
↓
[XTTS-сервер] ─────────── синтез русской речи (HTTP API :8020)
↓
[Skyrim] ──────────────── проигрывает .wav через actor.SayLine
Три отдельных процесса работают параллельно:
- LM Studio — мозг (LLM)
- XTTS-сервер в PowerShell — голос
- Mantella.exe + Skyrim — игра и оркестратор
Этап 1: Skyrim + Mantella
1.1 Skyrim Special Edition (Anniversary Edition)
- Купить и установить через Steam
- Версия игры: русская локализация (для русских голосов в дальнейшем)
- Запустить один раз чтобы создались папки сохранений
1.2 SKSE64
- Скачать с https://skse.silverlock.org/
- Версия 2.2.6 для Skyrim 1.6.1170
- Распаковать в корень папки игры (Skyrim Special Edition/)
- Проверить через консоль: getskseversion (должна вернуть 2.2.6)
1.3 Mod Organizer 2
- Скачать с https://www.modorganizer.org/
- Установить в отдельную папку, например D:\Games\ModOrganizer2
- Создать инстанс под Skyrim Special Edition
1.4 Базовые моды (через MO2 / Nexus)
В порядке установки:
- Address Library for SKSE Plugins — All-in-one
- SkyUI 5.2 SE
- UIExtensions 1.2
- SSE Creation Kit Fonixdata Lip Sync Fix
- Unofficial Skyrim Special Edition Patch (USSEP) 4.3.8+
- World Encounter Hostility Fix (Performance Version)
- No NPC Greetings 1.1 (опционально, отключает заскриптованные приветствия)
1.5 Mantella mod
- Версия 0.14 или новее
- Установить через MO2
1.6 Visual C++ Redistributable
- Установить пакет VC++ 2015-2022 (если нет)
1.7 Проверка
- Запустить MO2 → SKSE → игра загружается
- В MCM игры должно появиться меню Mantella
Этап 2: LM Studio + LLM
2.1 Установка LM Studio
- Скачать с https://lmstudio.ai/
- Установить
- При первом запуске пропустить онбординг
2.2 Загрузка модели Stheno
Stheno 3.2 — лучшая 8B-модель для ролевых диалогов на момент написания.
В LM Studio → вкладка 🔎 Discover:
- Поиск: Lewdiculous Stheno v3.2
- Репо: Lewdiculous/L3-8B-Stheno-v3.2-GGUF-IQ-Imatrix
- Выбрать квант Q5_K_M (~5.7 GB) — оптимум качества/VRAM
- Скачать
2.3 Запуск сервера
- В LM Studio → вкладка Developer
- Загрузить модель кнопкой Load Model → выбрать Stheno Q5_K_M
- Status: Running (зелёный тогл)
- Адрес сервера: http://127.0.0.1:1234
- Запомнить API Model Identifier (правая панель) — это строка вида:
l3-8b-stheno-v3.2-iq-imatrix@q5_k_m
2.4 Параметры модели
- Context Length: 4096 (хватит для большинства диалогов)
- GPU Offload: Auto / максимум
- Server Settings → Max idle TTL: 60 minutes или Never
Этап 3: XTTS-сервер для Blackwell
⚠️ Этот этап — главное отличие от стандартных гайдов. Обычные сборки
XTTS-сервера не работают на RTX 50xx из-за устаревшего PyTorch.
3.1 Установить Python 3.11
⚠️ НЕ устанавливай Python 3.12 или 3.13 — XTTS зависимости несовместимы.
- Запустить установщик
- На первом экране:✅ Add python.exe to PATH (внизу)
Customize installation - Optional Features — оставить как есть, Next
- Advanced Options:✅ Install for all users
✅ Add Python to environment variables
Customize install location: C:\Python311 - Install
- Закрыть и открыть PowerShell заново
Проверка:
powershell
python --version # Python 3.11.9
where.exe python # должен показать C:\Python311\python.exe ПЕРВЫМ
pip --version # pip 24.0+
⚠️ Если where.exe python показывает C:\Users\...\WindowsApps\python.exe —
в PATH прописан Microsoft Store stub раньше реального Python. Исправить:
Win → "переменные среды" → системные → Path → подними C:\Python311 выше WindowsApps.
3.2 Установить Git
- Стандартная установка с дефолтами
3.3 Клонировать Blackwell-форк XTTS-сервера
powershell
mkdir D:\AI
cd D:\AI
git clone https://github.com/shmitix/xtts-api-server-mantella-blackwell.git
cd xtts-api-server-mantella-blackwell
3.4 Создать venv и активировать
powershell
python -m venv venv
# Разрешить выполнение скриптов в PowerShell (один раз):
Set-ExecutionPolicy -Scope CurrentUser -ExecutionPolicy RemoteSigned
# На вопрос ответить Y
.\venv\Scripts\Activate.ps1
В приглашении PowerShell должна появиться приставка (venv).
3.5 Исправить requirements.txt (КРИТИЧНО)
Оригинальный requirements.txt содержит конфликтующие версии. Перепиши его:
powershell
copy requirements.txt requirements.txt.bak
@"
PyAudio==0.2.14
requests==2.31.0
pyttsx3==2.90
stream2sentence==0.2.2
fastapi>=0.104.1
loguru
pydantic
pydub
python-dotenv
uvicorn
cutlet
fugashi[unidic-lite]
coqui-tts[languages]==0.24.3
transformers>=4.43.0
uuid
spacy
"@ | Out-File -Encoding utf8 requirements.txt
3.6 Установить зависимости
powershell
pip install -r requirements.txt
Долго (~5-15 минут). Жёлтые warnings игнорировать. Должно завершиться Successfully installed ....
3.7 Установить PyTorch nightly с CUDA 12.8 (для Blackwell)
powershell
pip install --pre --force-reinstall torch torchaudio --index-url https://download.pytorch.org/whl/nightly/cu128
⚠️ --force-reinstall обязателен — иначе pip оставит CPU-версию torch которая
была установлена как зависимость coqui-tts.
Скачивание ~3 GB, время 10-25 минут.
3.8 Проверить что Blackwell видится
powershell
python -c "import torch; print('PyTorch:', torch.__version__); print('CUDA available:', torch.cuda.is_available()); print('CUDA device:', torch.cuda.get_device_name(0) if torch.cuda.is_available() else 'NONE'); print('CUDA version:', torch.version.cuda)"
Должно вывести:
PyTorch: 2.12.0.dev20260408+cu128 ← важно: НЕ +cpu!
CUDA available: True
CUDA device: NVIDIA GeForce RTX 5080 (или твоя 50xx)
CUDA version: 12.8
3.9 Зафиксировать совместимую версию transformers
Новейшие transformers ломают coqui-tts (нет LogitsWarper). Фиксируем:
powershell
pip install transformers==4.46.3
3.10 Установить torchcodec
Новые torchaudio требуют отдельный пакет:
powershell
pip install torchcodec
3.11 Установить FFmpeg shared (КРИТИЧНО)
torchcodec нужны DLL-файлы FFmpeg. Стандартный winget ставит статическую версию без DLL.
- Финальная структура должна быть:
C:\ffmpeg\bin\ffmpeg.exe
C:\ffmpeg\bin\avcodec-61.dll
C:\ffmpeg\bin\avformat-61.dll
... ещё DLL
- Добавить в PATH (Win → "переменные среды" → системные → Path → Создать):
C:\ffmpeg\bin
Поднять выше C:\Users\...\WindowsApps
5. Закрыть и открыть PowerShell заново
Проверка:
powershell
ffmpeg -version
Должно вывести ffmpeg version 7.1.1-full_build с --enable-shared.
⚠️ Если выводит 8.x.x или без --enable-shared — у тебя winget-версия,
удали её через winget uninstall Gyan.FFmpeg и поставь shared вручную.
3.12 Первый запуск XTTS-сервера
powershell
python -m xtts_api_server --device cuda --speaker-folder "D:\AI\xtts-api-server-mantella-blackwell\speakers"
При первом запуске:
- Скачается модель XTTS v2.0.2 (~2 GB)
- Может попросить согласия с CPML лицензией — ввести y
- Завершение: Uvicorn running on http://localhost:8020
Не закрывать окно — сервер должен работать всё время игры.
Проверка в браузере: http://localhost:8020/docs — должна открыться Swagger UI.
Этап 4: Русские голоса из Skyrim
4.1 Концепция
Mantella для каждого NPC шлёт в XTTS имя voice_model (например MaleEvenToned).
XTTS ищет образцы голоса в папке speakers/ru/<voice_model>/*.wav.
Мы извлечём оригинальные русские голоса из BSA-архива Skyrim, отберём короткие
качественные сэмплы и разложим по voice_model папкам.
4.2 Установить BAE (Bethesda Archive Extractor)
- Скачать bae.exe (portable)
- Положить куда-нибудь, например D:\Tools\BAE\
4.3 Извлечь BSA
- Запустить bae.exe
- File → Open Archive
- Открыть D:\Steam\steamapps\common\Skyrim Special Edition\Data\Skyrim - Voices_ru0.bsa (~2 GB)
- Извлечь всё содержимое в:
C:\Users\<имя>\Downloads\BAE-extracted\
Должны появиться 4 папки: skyrim.esm, dawnguard.esm, dragonborn.esm, hearthfires.esm.
4.4 Установить Yakitori Audio Converter
- Скачать YakitoriAudioConverter v1.4 (Main Files, не BmlFuzTools)
- Распаковать в D:\Tools\Yakitori\
- Запустить YakitoriAudioConverter.exe
4.5 Отобрать нужные .fuz файлы
Скрипт берёт по 10 файлов размером 40-60 KB (~5-10 сек звука) из каждого voicetype:
powershell
# === НАСТРОЙКИ ===
$sourceRoot = "C:\Users\<ИМЯ>\Downloads\BAE-extracted\sound\voice\skyrim.esm"
$destRoot = "D:\Tools\BAE-selected"
$filesPerVoice = 10
$minSize = 40KB
$maxSize = 60KB
$voicetypes = @(
"femalesultry", "malenord", "femaleyoungeager", "femaleeventoned",
"maleeventoned", "femalenord", "femalecommoner", "malecommoneraccented",
"malecommoner", "malecondescending", "maleorc", "maleyoungeager",
"malebrute", "malekhajiit", "femalecommander", "maleargonian",
"maleelfhaughty", "maledarkelf", "femaleelfhaughty", "malechild",
"maleeventonedaccented", "maleslycynical", "femalecondescending",
"femaledarkelf", "femalechild", "femaleoldgrumpy"
)
if (Test-Path $destRoot) {
Remove-Item $destRoot -Recurse -Force
}
New-Item -ItemType Directory -Path $destRoot -Force | Out-Null
foreach ($vt in $voicetypes) {
$srcPath = Join-Path $sourceRoot $vt
if (-not (Test-Path $srcPath)) {
Write-Host " [SKIP] $vt" -ForegroundColor Red
continue
}
$destPath = Join-Path $destRoot $vt
New-Item -ItemType Directory -Path $destPath -Force | Out-Null
$files = Get-ChildItem -Path $srcPath -Filter "*.fuz" |
Where-Object { $_.Length -ge $minSize -and $_.Length -le $maxSize } |
Get-Random -Count $filesPerVoice -ErrorAction SilentlyContinue
if (-not $files) {
$files = Get-ChildItem -Path $srcPath -Filter "*.fuz" |
Sort-Object { [Math]::Abs($_.Length - 50KB) } |
Select-Object -First $filesPerVoice
}
foreach ($f in $files) {
Copy-Item $f.FullName -Destination $destPath
}
Write-Host " [OK] $vt ($($files.Count))" -ForegroundColor Green
}
⚠️ Заменить <ИМЯ> на твоё имя пользователя Windows.
Должно скопировать ~260 файлов в D:\Tools\BAE-selected\<voicetype>\.
4.6 Конвертация .fuz → .wav через Yakitori
В Yakitori:
- Input format: .fuz
- Output format: .wav
- ❌ Снять галку Same as input folder
- Output folder: D:\AI\xtts-api-server-mantella-blackwell\speakers\ru
- ✅ Поставить галку Create subfolders
- Max threads: 16
Перетащить все 26 папок из D:\Tools\BAE-selected\ в окно Yakitori → Convert.
⚠️ Известный баг Yakitori: иногда игнорирует "Create subfolders" и сваливает
всё в одну папку. Если файлы лежат вперемешку — следующий скрипт раскладывает их по папкам:
powershell
$yakitoriOutput = "D:\AI\xtts-api-server-mantella-blackwell\speakers\ru"
$bumpedSource = "D:\Tools\BAE-selected"
$tempWavDump = "$env:TEMP\yakitori_dump"
if (-not (Test-Path $tempWavDump)) { New-Item -ItemType Directory -Path $tempWavDump -Force | Out-Null }
Get-ChildItem -Path $yakitoriOutput -Filter "*.wav" -File | Move-Item -Destination $tempWavDump -Force
Get-ChildItem -Path $yakitoriOutput -Filter "*.lip" -File | Remove-Item -Force
$voicetypeFolders = Get-ChildItem -Path $bumpedSource -Directory
foreach ($vtFolder in $voicetypeFolders) {
$destPath = Join-Path $yakitoriOutput $vtFolder.Name
New-Item -ItemType Directory -Path $destPath -Force | Out-Null
$fuzFiles = Get-ChildItem -Path $vtFolder.FullName -Filter "*.fuz"
foreach ($f in $fuzFiles) {
$wavInDump = Join-Path $tempWavDump ($f.BaseName + ".wav")
if (Test-Path $wavInDump) {
Move-Item $wavInDump -Destination $destPath -Force
}
}
Write-Host " [OK] $($vtFolder.Name)" -ForegroundColor Green
}
4.7 Переименовать папки в PascalCase
Skyrim BSA хранит имена в lowercase, а Mantella ожидает PascalCase:
powershell
$root = "D:\AI\xtts-api-server-mantella-blackwell\speakers\ru"
$rename = @{
"femalesultry" = "FemaleSultry"
"malenord" = "MaleNord"
"femaleyoungeager" = "FemaleYoungEager"
"femaleeventoned" = "FemaleEvenToned"
"maleeventoned" = "MaleEvenToned"
"femalenord" = "FemaleNord"
"femalecommoner" = "FemaleCommoner"
"malecommoneraccented" = "MaleCommonerAccented"
"malecommoner" = "MaleCommoner"
"malecondescending" = "MaleCondescending"
"maleorc" = "MaleOrc"
"maleyoungeager" = "MaleYoungEager"
"malebrute" = "MaleBrute"
"malekhajiit" = "MaleKhajiit"
"femalecommander" = "FemaleCommander"
"maleargonian" = "MaleArgonian"
"maleelfhaughty" = "MaleElfHaughty"
"maledarkelf" = "MaleDarkElf"
"femaleelfhaughty" = "FemaleElfHaughty"
"malechild" = "MaleChild"
"maleeventonedaccented" = "MaleEvenTonedAccented"
"maleslycynical" = "MaleSlyCynical"
"femalecondescending" = "FemaleCondescending"
"femaledarkelf" = "FemaleDarkElf"
"femalechild" = "FemaleChild"
"femaleoldgrumpy" = "FemaleOldGrumpy"
}
foreach ($pair in $rename.GetEnumerator()) {
$oldPath = Join-Path $root $pair.Key
if (Test-Path $oldPath) {
$tempName = $pair.Key + "_temp"
$tempPath = Join-Path $root $tempName
Rename-Item -Path $oldPath -NewName $tempName -Force
Rename-Item -Path $tempPath -NewName $pair.Value -Force
Write-Host " [OK] $($pair.Key) -> $($pair.Value)" -ForegroundColor Green
}
}
# Создаём копию MaleDarkElf -> MaleDunmer (Mantella использует оба имени)
$src = Join-Path $root "MaleDarkElf"
$dst = Join-Path $root "MaleDunmer"
if ((Test-Path $src) -and (-not (Test-Path $dst))) {
Copy-Item $src -Destination $dst -Recurse -Force
Write-Host " [OK] MaleDarkElf -> MaleDunmer (copy)" -ForegroundColor Cyan
}
Двойное переименование через _temp нужно потому что Windows file system
регистронечувствительная — femaleeventoned и FemaleEvenToned для неё
один и тот же путь.
После этого в speakers/ru/ должно быть 27 папок в PascalCase
(26 voicetype + MaleDunmer как копия MaleDarkElf).
4.8 Перезапустить XTTS-сервер
В окне сервера: Ctrl+C → дождаться приглашения → запустить заново:
powershell
python -m xtts_api_server --device cuda --speaker-folder "D:\AI\xtts-api-server-mantella-blackwell\speakers"
В логах должно появиться:
Latents created for all 27 new speakers in ru.
Этап 5: Настройка Mantella
5.1 Запустить Mantella UI
Открыть в браузере: http://localhost:4999/ui/?__theme=dark
Mantella UI работает только когда Skyrim запущен (mantella.exe запускается с игрой).
5.2 Вкладка Large Language Model
ПолеЗначениеLLM Servicehttp://localhost:1234/v1/Modell3-8b-stheno-v3.2-iq-imatrix@q5_k_m (точное имя из LM Studio)Max Sentences per Response (Single NPC)4Max Sentences per Response (Multi NPC)12Custom Token Count4096Custom Summary Model☐ выключено
⚠️ После смены Model жми зелёную кнопку Update — без неё изменения не применятся.
5.3 Вкладка Text-to-Speech
ПолеЗначениеTTS ServiceXTTSxVASynth Folder(пусто)XTTS Folder(пусто — работаем через URL)Number of Words TTS3Lip File GenerationEnabledXTTS URLhttp://127.0.0.1:8020XTTS Default ModelmainXTTS DevicecudaXTTS DeepSpeed☐ выключено (не работает на Blackwell)XTTS Low VRAM☐ выключеноXTTS Dataдефолтный JSON
⚠️ Красные предупреждения про несуществующие xVASynth/XTTS Folder можно игнорировать —
Mantella работает с XTTS по HTTP.
5.4 Вкладка Speech-to-Text
ПолеЗначениеAudio Threshold0.4Allow Interruption☑ или ☐ (см. ниже)STT ServiceWhisperPause Threshold0.25Push-to-Talk☑ включеноPush-to-Talk HotkeyV (или твоё)Whisper Modellarge-v3Whisper STT LanguageruWhisper Process Devicecuda
Allow Interruption — если включено, NPC прерывается когда ты начинаешь говорить.
Это частая причина "пропавших" реплик. Если хочешь чтобы NPC всегда дослушивал —
отключи.
5.5 Вкладка Vision
- Vision: ☐ выключено (Stheno не умеет в vision)
5.6 Вкладка Actions
Оставить дефолт (Attack, Barter, EndConversation, Flee, Follow, Inventory, Listen,
Look, MoveTo, StandDown активны).
5.7 Вкладка Language
- Language: ru
5.8 MCM в игре (Mantella → System → Mods → Mantella)
General:
- ✅ Microphone Enabled
- ✅ Use Hotkey to Start Mic
- Controls: B = Start, H = Text Prompt, N = End
- ❌ Radiant Dialogue (жор VRAM)
- ❌ NPCs can Approach Player
Player:
- ❌ Voice Player Input ← ВАЖНО! Отключить! Иначе твоя речь будет
дублироваться голосом NPC и пайплайн будет в 2 раза медленнее. - Player Voice Model: твой выбор (MALENORD, MALEEVENTONED и т.д.)
Запуск и порядок старта сервисов
Каждый раз перед игрой:
1. LM Studio
- Запустить
- Developer → Load Model → Stheno Q5_K_M
- Status: Running
2. XTTS-сервер
В PowerShell:
powershell
cd D:\AI\xtts-api-server-mantella-blackwell
.\venv\Scripts\Activate.ps1
python -m xtts_api_server --device cuda --speaker-folder "D:\AI\xtts-api-server-mantella-blackwell\speakers"
НЕ закрывать это окно до конца сессии.
3. Skyrim
- MO2 → SKSE
- Mantella.exe запустится автоматически
- В игре: создать персонажа → подойти к NPC → нажать B (Mantella spell) → нажать V и говорить
Известные проблемы и решения
"Python was not found"
Microsoft Store stub в PATH раньше реального Python. Решение:
- Системные → Path → подними C:\Python311 выше C:\Users\...\WindowsApps
- Закрой и открой PowerShell заново
Could not load libtorchcodec
FFmpeg установлен как static, нужен shared. См. п. 3.11.
ImportError: cannot import name 'LogitsWarper' from 'transformers'
Слишком свежий transformers. Решение: pip install transformers==4.46.3
Could not find voice model X in XTTS models list
В speakers/ru/ нет папки с этим именем. Проверь:
- Папка создана с PascalCase, не lowercase
- Перезапусти XTTS-сервер с флагом --speaker-folder
Loaded latents for 0 speakers in 'ru' subfolder
XTTS-сервер смотрит не в ту папку. Запускать обязательно с флагом:
--speaker-folder "D:\AI\xtts-api-server-mantella-blackwell\speakers"
Mantella говорит "No secret key found"
Это обманчивое сообщение. Реальная причина — LM Studio не отвечает.
Проверь:
- LM Studio Status: Running
- Mantella UI → Model совпадает с API Model Identifier в LM Studio
NPC говорит только первую часть реплики
- Отключить Allow Interruption в Speech-to-Text
- Увеличить Number of Words TTS с 3 до 10-15
- Не двигай камеру / не уходи во время речи NPC
LLM иногда вставляет английские/иероглифы в русский ответ
Известная проблема 8B моделей. Решения:
- В Prompts добавить жёсткую инструкцию по языку
- Уменьшить max_tokens в Parameters (Advanced LLM) с 250 до 150
- Попробовать модель Saiga-Llama3-8B (русско-натренированная альтернатива)
Cold-start 4-5 секунд после простоя
Проверить в LM Studio Server Settings:
- Max idle TTL: не меньше 60 минут (или Never)
- Just-in-Time Model Loading: можно выключить
Оптимизация VRAM
Распределение VRAM в нашей сборке (RTX 5080 16GB):
XTTS-сервер: ~3.7 GB
Skyrim (рендер): ~2.0 GB (зависит от настроек графики)
Stheno Q5_K_M + контекст: ~7.5 GB
─────────────────────────────────────
Idle: ~13 GB
На пиках (синтез речи): ~15 GB
Запас: ~1-2 GB
Меры экономии VRAM (от лёгких к радикальным):
- Stheno Q5_K_M вместо Q6_K: экономия ~1 GB (этот гайд уже использует Q5_K_M)
- Context Length 4096 → 3072: экономия ~300-500 MB
- Whisper Process Device → CPU: экономия ~200 MB, добавит 0.5 сек к STT
- XTTS Low VRAM (галка в Mantella UI): экономия ~1.5 GB, может не работать на Blackwell
- Понизить графику Skyrim: только если совсем впритык
Меры если VRAM 12 GB и меньше:
- Stheno Q4_K_M (~5 GB) вместо Q5_K_M
- Skyrim на 1080p вместо 1440p/4K
- XTTS Low VRAM включить
Структура папок в финале
D:\
├── AI\
│ ├── LM studio\ ← LM Studio + модели
│ └── xtts-api-server-mantella-blackwell\
│ ├── venv\ ← Python окружение
│ ├── speakers\
│ │ └── ru\
│ │ ├── FemaleEvenToned\ ← 10 wav-сэмплов
│ │ ├── MaleEvenToned\
│ │ └── ... (27 папок)
│ └── xtts_api_server\
├── Games\
│ └── ModOrganizer2\ ← MO2 с модами
├── Steam\steamapps\common\
│ └── Skyrim Special Edition\
└── Tools\
├── BAE\ ← BSA extractor
├── Yakitori\ ← fuz → wav конвертер
└── BAE-selected\ ← временно: отобранные .fuz
C:\
├── Python311\ ← Python 3.11
└── ffmpeg\bin\ ← FFmpeg shared 7.1.1
Финальная проверка работоспособности
Заходим в Ривервуд → подходим к Алвору (кузнецу) → жмём B → жмём V, говорим:
"Привет! Как дела с работой?"
Ожидаемое поведение:
- ~0.5 сек — Whisper распознаёт
- ~0.5 сек — Stheno генерит ответ на русском
- ~1-2 сек — XTTS синтезирует голос Алвора
- Алвор отвечает оригинальным голосом актёра русской локализации, но с твоим контекстом и в характере кузнеца
Если всё работает — поздравляю, ты собрал самую навороченную AI-NPC сборку
для Skyrim из доступных в 2026.
Кредиты
- Mantella: art-from-the-machine — основной мод
- XTTS-сервер для Blackwell: shmitix — Python-форк
- XTTS v2: Coqui AI — мультиязычная TTS модель
- Stheno v3.2: Sao10K + Lewdiculous — RP-натренированная Llama 3
- Whisper: OpenAI — STT
- LM Studio: удобный GUI для локальных LLM
Гайд составлен на основе двухдневной отладки на реальном железе.