Датасеты

#4
by ll2pakll - opened

Привет. Где вы брали датасеты? Я хочу обучить новые модели для RVC.

Здраствуйте - я достаю напрямую из игры.

Здраствуйте - я достаю напрямую из игры.

А у вас они не остались в каком нибудь архиве например? А то я не знаю как из игры достать.

Нет - я их не храню, так-как это занимает много дискового пространства и ощутимо замедляет работоспособность системы. У меня храниться только некоторая часть в виде не сортированных и не обработанных аудио файлов (60 000 с небольшим тысяч).

Нет - я их не храню, так-как это занимает много дискового пространства и ощутимо замедляет работоспособность системы. У меня храниться только некоторая часть в виде не сортированных и не обработанных аудио файлов (60 000 с небольшим тысяч).

Понял. А может поделитесь способом как вы извлекали голоса и сегригировали их по персонажам?

Извлечь файлы озвучки из "Ведьмак 3" не очень сложно, но занимает много машинного времени. Я знаю 2 способа:

  1. Крайне прост, но извлекает далеко не всё и нормально не работает с DLC и NextGen версией (У меня он извлекал +-60к аудио файлов из примерно 120к) - https://github.com/JTGizmo/Extracting-Voice-Over-Audio-from-Witcher-3
  2. Извлекает всё, но не работает из коробки и требует определённых манипуляций - https://www.playground.ru/witcher_3_wild_hunt/guide/the_witcher_3_wild_hunt_drugoe_modkit-1206307

Я использую объединённый способ:

  1. Использую настроенный инструмент из "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. Использую инструмент преобразования из "1. github" и преобразовываю файлы из ".wav" и ".cr2w" -> ".ogg" -> ".wav (читабельный PCM)"
  2. Использую текстовый файлы "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:="Имя персонажа (бывает что имя не соответствует внутри игровому и приходится искать по фразам)")
  1. После сопоставления у меня получается следующие название файла "48_0x0002a7e2.wav" или "Rus_48_0x0002a7e2_Geralt"
  2. Сопоставленные фразы необходимо подготовить для обучения в "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 файлам?

Это бы очень помогло!

Я вас понял.

  1. Текст на Английском (Его подготавливал не я, а автор инструмента "w3utils - proper - https://github.com/JTGizmo/Extracting-Voice-Over-Audio-from-Witcher-3) мне не удалось вытащить русский текст;
  2. Звуковые файлы все на русском языке;
  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 файлов, и тоже работает.
Благодарю за труд!

Можете более подробно написать, как вы сделали?

Нет проблем!
По этапам:

  1. Нашел вообще все .w3string файлы в папке с игрой

  2. сделал батник и запустил - он все .w3string превратил в .csv:
    @echo off
    for %%f in (*.w3strings) do (
    w3strings.exe -d "%%f"
    )
    pause

  3. Склеил ВСЕ полученные CSV в один файл (можно в питоне или в cmd)

  4. Запустил скрипт на 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 с дополнением

  5. Итог
    В итоге получается таблица в таком формате:
    id|text
    1000_0x00127ad0|Как такое могло случиться? Кто на неё напал?!
    1001_0x00070d8f|Здесь не пройти. Надо поискать другую дорогу.
    1003_0x00127ad4|Лютик, мне жаль, что меня там не было…

Sign up or log in to comment