Датасеты
Привет. Где вы брали датасеты? Я хочу обучить новые модели для RVC.
Здраствуйте - я достаю напрямую из игры.
Здраствуйте - я достаю напрямую из игры.
А у вас они не остались в каком нибудь архиве например? А то я не знаю как из игры достать.
Нет - я их не храню, так-как это занимает много дискового пространства и ощутимо замедляет работоспособность системы. У меня храниться только некоторая часть в виде не сортированных и не обработанных аудио файлов (60 000 с небольшим тысяч).
Нет - я их не храню, так-как это занимает много дискового пространства и ощутимо замедляет работоспособность системы. У меня храниться только некоторая часть в виде не сортированных и не обработанных аудио файлов (60 000 с небольшим тысяч).
Понял. А может поделитесь способом как вы извлекали голоса и сегригировали их по персонажам?
Извлечь файлы озвучки из "Ведьмак 3" не очень сложно, но занимает много машинного времени. Я знаю 2 способа:
- Крайне прост, но извлекает далеко не всё и нормально не работает с DLC и NextGen версией (У меня он извлекал +-60к аудио файлов из примерно 120к) - https://github.com/JTGizmo/Extracting-Voice-Over-Audio-from-Witcher-3
- Извлекает всё, но не работает из коробки и требует определённых манипуляций - https://www.playground.ru/witcher_3_wild_hunt/guide/the_witcher_3_wild_hunt_drugoe_modkit-1206307
Я использую объединённый способ:
- Использую настроенный инструмент из "2. playground" для извлечения ".wav (это сжатый тип, который не открывается без преобразования)" и ".cr2w (Это вроде как файл отвечающий за движения губ и он необходим для преобразования в читабельные аудио файлы)"
- Для настройки надо следовать инструкции "Гайд по получению всех текстур из игры", но не создавать папку "exported_offzip";
- Использовать команду lua lua/inspect_w3speech.lua "путь к папке с игрой\content\content0\Язык_Озвучкиpc.w3speech" exported_lua вместо lua lua/unpack_textures.lua texture.cache exported_lua
- Пример команды для простой работы: lua lua/inspect_w3speech.lua "C:\Games\The_Witcher_3_Wild_Hunt\content\content0\rupc.w3speech" exported_lua
(Эта команда извлечёт файлы русской озвучки из архива "rupc.w3speech" и поместит сжатые файлы в папку "exported_lua"
- Использую инструмент преобразования из "1. github" и преобразовываю файлы из ".wav" и ".cr2w" -> ".ogg" -> ".wav (читабельный PCM)"
- Использую текстовый файлы "w3dialog_id.txt" из "1. github" для сопоставления имения аудио файла и персонажей с фразами из игры
- Пример: После извлечения и преобразования есть файл "0x0002a7e2.wav.ogg.wav" -> захожу в "w3dialog_id.txt" и ищу (для поиска использую "Notepad++") id без расширения "0x0002a7e2" -> находиться строка "48 0x0002a7e2 Geralt: We had a deal. I've done my part. Your turn to do yours."
(48="Номер фразы по игровому порядку" 0x0002a7e2="Уникальное имя фразы (id)" Geralt:="Имя персонажа (бывает что имя не соответствует внутри игровому и приходится искать по фразам)")
- После сопоставления у меня получается следующие название файла "48_0x0002a7e2.wav" или "Rus_48_0x0002a7e2_Geralt"
- Сопоставленные фразы необходимо подготовить для обучения в "SO-VITS-SVC" -> Для этого их необходимо преобразовать со следующими параметрами "44100 Гц, Моно 1 канал, 16-Бит" -> Для преобразования можно использовать любой аудио редактор который умеет пакетно обрабатывать аудио файлы (Я использую "Adobe Audition")
Касаемо всего процесса - у меня он уже отточен и во многих вещях упрощён и автоматизирован.
Спасибо за подробную инструкцию. В целом вполне выполнимо, но я ещу попробую помучится с SO-VITS-SVC, потому что исходя из инструкции придётся много эксперементировать пока не получится то что нужно, уйдёт на это несколько недель, которых у меня нет. SO-VITS-SVC и ваши модели замечательные, но к сожалению местами кортавят и сложные слова как напрмиер "пятидесяти" звучат неестественно, но всё равно проделанная вами работа замечательна и мне, как человеку который хочет озвучить свою историю голосами персонажей из the witcher невероятно помогла.
Касаемо картавости - вы на какой голос пытаетесь накладывать модели, так-как звучание очень сильно привязано к говорящему (Я для этих целей в большинстве случаев использую синтезатор речи "Microsoft - Azure (Edge)) или "Silero TTS - Xenia (Demagog)
Добрый день
Я не смог найти файлы русской речи
Английские диалоги вижу. НО вот русских не увидел. Я что-то пропустил или они не были загружены? Просто странно что в папке для RU нету русских диалогов.
Вы про какую папку "RU"?
Я немного добавлю контекста
Моя задача составить вот такой датасет:
звуковой файл wav | текст
где .wav это русский голосовой файл Геральта, а текст - сам текст его фразы.
Потом я буду использовать такой датасет для создания TTS модели.
И наткнулся на вашу страницу.
Вот здесь есть ру WAV файлы: https://huggingface.co/datasets/Rootreck/so-vits-svc-4.0-ru-The_Witcher_3_Wild_Hunt/tree/7b42b550afcb5fc32d5fc053815bd2148db8350d/TW3_M_Geralt_Rus%20(Training%20data)
Но там только англ речь Геральта, например в этом файле: w3dialog_id (Geralt - All)_1.txt
А мне бы условно получить вот такой файл: RU_w3dialog_id (Geralt - All)_1.txt
Я кое уже что попробовал сделать. Из файлов игры я извлек ру речь, при помощи w3strings encode
Там в таком формате:
id,key_hex,key_str,text
527948,00000000,,"Я так скажу… Если Йен не справится с проклятием Умы, мы всегда сможем обратиться к Трисс, и она на нас не обозлится. А вот если сделать наоборот…"
Я догадался что по вашему методу, названия файлов кодируются в 16-ричной системе. Так например 527948 превращается в 0x00080e4c
И в Witcher 3 Dialog.xlsx доке с диалогами я смог найти 157 0x00080e4c:
Geralt: Put it to you this way… If Yen can't help Uma, we can always go to Triss - she won't hold it against us. But if we'd done it the other way around…
Но может у вас уже есть таблица соответствия русским диалогам и русским .wav файлам?
Это бы очень помогло!
Я вас понял.
- Текст на Английском (Его подготавливал не я, а автор инструмента "w3utils - proper - https://github.com/JTGizmo/Extracting-Voice-Over-Audio-from-Witcher-3) мне не удалось вытащить русский текст;
- Звуковые файлы все на русском языке;
- Русской таблицы у меня нет, но мне бы она тоже пригодилась
Вы можете попробовать извлечь таблицу (у меня не выходит). Вот инструмент - https://github.com/hhrhhr/Lua-utils-for-Witcher-3
Я пробовал при помощи "inspect_w2strings.lua", но выходит ошибка:
!!! unknown key '0x00A34800' !!!
stack traceback:
[C]: in function 'assert'
...ograms\Extracting-Voice\Lua_Export\lua\mod_w3strings.lua:24: in function 'get_key'
lua/inspect_w2strings.lua:94: in main chunk
[C]: in ?
Кажется я смог извлечь
Нашлись совпадения по 10000 файлов
Вроде бы адекватные. Я проведу еще раз тестов, и поделюсь
Мне удалось получить файл "RU_w3dialog (Но как получить его с id - я не понимаю)". Для этого я использовал инструмент "w3unpack.exe", который есть в архиве "https://github.com/JTGizmo/Extracting-Voice-Over-Audio-from-Witcher-3"
Для этого я создал "03 all_dialogues.bat" и вставил туда следующие:
:: Путь к папке с игрой
set W3DIR=C:\Games\The_Witcher_3_Wild_Hunt
:: Язык локализации
set W3LANG=ru
w3unpack.exe -d -l %W3LANG% "%W3DIR%\content" all_dialogues_%W3LANG%.txt
Так-что делюсь.
спасибо
я сделал сложнее, но все получилось. Вытянул весь текст, перекодировал ID в формат ID wav файлов, и тоже работает.
Благодарю за труд!
Можете более подробно написать, как вы сделали?
Нет проблем!
По этапам:
Нашел вообще все .w3string файлы в папке с игрой
сделал батник и запустил - он все .w3string превратил в .csv:
@echo off
for %%f in (*.w3strings) do (
w3strings.exe -d "%%f"
)
pauseСклеил ВСЕ полученные CSV в один файл (можно в питоне или в cmd)
Запустил скрипт на python который вытягивает из этой CSV таблицы ID и Text, приводя к формату:
id | text
И самое главное - w3strings ID сохраняет в 10ричной системе. Поэтому в этом python скрипте я все ID переделал в 16-ричные под формат извлеченных .wav файлов
Вот кусок кода на python:
decimal_id = int(id_str) # Преобразуем в десятичное
row["hex_id_padded"] = f"0x{decimal_id:08x}" # Преобразуем в hex с дополнениемИтог
В итоге получается таблица в таком формате:
id|text
1000_0x00127ad0|Как такое могло случиться? Кто на неё напал?!
1001_0x00070d8f|Здесь не пройти. Надо поискать другую дорогу.
1003_0x00127ad4|Лютик, мне жаль, что меня там не было…