NikolasGood Опубликовано 24 марта, 2020 Поделиться Опубликовано 24 марта, 2020 Всем привет! Делаю программу для озвучивания субтитров и возникла мысль брать из из памяти игры - это бы ускорило весь процесс.. Так вот, почти во всех играх не получается найти текст субтитров которые появились на экране игры. Они либо находятся частично (возможно я не полностью считываю строку с ними, пробовал на игре Divinity Original Sin 1 и 2), а иной раз вообще не ищутся даже по одной буква, например в игре Atom RPG. Также заметил, что последующие субтитры имеют уже другие адреса.. Подскажите как можно работать с субтитрами, чтобы их вытащить и после перезагрузки игры - иметь доступ к считыванию новых субтитров которые будут появляться на экране игры? Ссылка на комментарий Поделиться на другие сайты Поделиться
imaginary Опубликовано 26 марта, 2020 Поделиться Опубликовано 26 марта, 2020 (изменено) Нужно найти функцию которая вызывает субтитры, наверняка они по какому то адресу вызываются, а вообще зависит от игры, где то могут вообще сделать что все субтитры вызывают разные функции (например функции в миссии), тогда нецелесообразно так читать. И потом, ты же озвучивать хочешь, зачем тебе озвучка не в момент игры, как ты будешь передавать эмоции? (если такая цель стоит), а то получится у тебя озвучка, вроде такого: Люди кричат, город горит, и мимо пробегающий житель спокойно говорит: Тут город горит, у нас половина населения пострадало *весёлым голосом* ? Изменено 26 марта, 2020 пользователем imaginary Ссылка на комментарий Поделиться на другие сайты Поделиться
MasterGH Опубликовано 26 марта, 2020 Поделиться Опубликовано 26 марта, 2020 Титры обычно находятся в отдельных не исполняемых файлах. Пишут редакторы субтитров, которые распаковывают игровые ресурсы, позволяют менять содержимое и запаковывать обратно. Либо искать готовый, либо свой писать. Чтобы свой написать,то через любой отладчик/дизассемблер искать код распаковки ресурсов и на его основе сделать свой. Более подробно не подскажу, надо сидеть и заниматься этим, а времени на это нет к сожалению Ссылка на комментарий Поделиться на другие сайты Поделиться
NikolasGood Опубликовано 27 марта, 2020 Автор Поделиться Опубликовано 27 марта, 2020 17 часов назад, imaginary сказал: Нужно найти функцию которая вызывает субтитры, наверняка они по какому то адресу вызываются, а вообще зависит от игры, где то могут вообще сделать что все субтитры вызывают разные функции (например функции в миссии), тогда нецелесообразно так читать. И потом, ты же озвучивать хочешь, зачем тебе озвучка не в момент игры, как ты будешь передавать эмоции? (если такая цель стоит), а то получится у тебя озвучка, вроде такого: Люди кричат, город горит, и мимо пробегающий житель спокойно говорит: Тут город горит, у нас половина населения пострадало *весёлым голосом* ? Озвучка будет в момент появления субтитров, т.е. в момент игры. Я уже сделал для нескольких игр озвучку, можете взглянуть как получается. Но мой старый способ мне не нравится. Там я распознаю текст, а это слишком долго, с ошибками в буквах и пр.. Если есть возможность хотя бы примерно показать как делать - буду очень благодарен. А так, я копаю, отслеживаю события, но найти указатель не получается.. Буду копать дальше.. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 28 марта, 2020 Поделиться Опубликовано 28 марта, 2020 Можешь попробовать сильно замедлять спидхаком игру, чтобы было побольше времени на поиск субтитров в памяти и на проверку их отрабатывания. Но я не уверен, что это всегда будет давать результат. Например, субтитры для уровня могут загружаться в момент загрузки уровня, конвертироваться в глифы, и в определенный момент уже выводиться на экран. В этом случае искать субтитры по тексту будет бесполезно. Я скажу, что такое используется во всех играх, но, тем не менее, такое вполне возможно. Потому распознавание экрана - вариант наиболее универсальный. Чтобы не было задержек, рекомендую ограничивать область снятия скриншота для анализа, и использовать библиотеку Tesseract, а при распознавании учитывать расстояние Левинштейна, чтобы минимизировать количество ошибок на выходе. Ссылка на комментарий Поделиться на другие сайты Поделиться
NikolasGood Опубликовано 28 марта, 2020 Автор Поделиться Опубликовано 28 марта, 2020 11 часов назад, Xipho сказал: Можешь попробовать сильно замедлять спидхаком игру, чтобы было побольше времени на поиск субтитров в памяти и на проверку их отрабатывания. Но я не уверен, что это всегда будет давать результат. Например, субтитры для уровня могут загружаться в момент загрузки уровня, конвертироваться в глифы, и в определенный момент уже выводиться на экран. В этом случае искать субтитры по тексту будет бесполезно. Я скажу, что такое используется во всех играх, но, тем не менее, такое вполне возможно. Потому распознавание экрана - вариант наиболее универсальный. Чтобы не было задержек, рекомендую ограничивать область снятия скриншота для анализа, и использовать библиотеку Tesseract, а при распознавании учитывать расстояние Левинштейна, чтобы минимизировать количество ошибок на выходе. Спасибо за совет. Я именно так и делаю с Тессерактом, но почти всегда проблема убрать фон. Буквы становятся кривыми, потом приходится переучивать нейронку, в общем плохой и тормазной метод, честно говоря, но рабочий. Мне определённо нужна помощь знающего человека ? Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 29 марта, 2020 Поделиться Опубликовано 29 марта, 2020 15 часов назад, NikolasGood сказал: но почти всегда проблема убрать фон Не нужно убирать фон ) Делай более быстрые преобразования - сначала преобразуешь в градации серого, потом увеличиваешь контраст, и скейлишь картинку процентов на 25, тессеракту станет распознавать куда проще. Ссылка на комментарий Поделиться на другие сайты Поделиться
NikolasGood Опубликовано 29 марта, 2020 Автор Поделиться Опубликовано 29 марта, 2020 1 час назад, Xipho сказал: Не нужно убирать фон ) Делай более быстрые преобразования - сначала преобразуешь в градации серого, потом увеличиваешь контраст, и скейлишь картинку процентов на 25, тессеракту станет распознавать куда проще. Неее, это так не работает )) Субтитры из ELEX, GTA 4 и 5 не распознаст нормально, так как фон белый или пёстрый, а текст белый. Тессеракт будет плохо распознавать, даже если под каждую игру сделать свой шрифт и обучить по ней нейронку. Я на это убил кучу времени.. Меня не устроит распознавание 90%, это мало. Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 29 марта, 2020 Поделиться Опубликовано 29 марта, 2020 Я тессеракт использовал, когда писал бота для одного покер-рума. Там стол был вообще пестрый, и ничего, обучилась нейронка, ошибок не было. Ссылка на комментарий Поделиться на другие сайты Поделиться
NikolasGood Опубликовано 29 марта, 2020 Автор Поделиться Опубликовано 29 марта, 2020 (изменено) 9 минут назад, Xipho сказал: Я тессеракт использовал, когда писал бота для одного покер-рума. Там стол был вообще пестрый, и ничего, обучилась нейронка, ошибок не было. Вот среднестатистические скриншоты из ELEX https://yadi.sk/i/kWcM5OXUwWJ88Q Как не настраивай тессеракт, 4-ая снизу не распознается нормально. И другие тоже будут с ошибами. По этому хочу от скринов уйти. А с субтитрами похоже вообще никак. Даже не отследить процесс, каждый текст появляется 1 раз. Изменено 29 марта, 2020 пользователем NikolasGood Ссылка на комментарий Поделиться на другие сайты Поделиться
NikolasGood Опубликовано 29 марта, 2020 Автор Поделиться Опубликовано 29 марта, 2020 В игре Conarium адрес на субтитры один. Но вот незадача, при поиске инструкции которая обращается к этому адресу, в ней тот же адрес, что и отвечает за субтитры. Я новичёк, может я чего-то не понимаю, но как мне найти указатель? К слову, поиск указателя через опцию Найти указатель на этот адрес ни к чему ни приводит - пусто.https://yadi.sk/i/CjikRdGMK2v1gA Ссылка на комментарий Поделиться на другие сайты Поделиться
Xipho Опубликовано 30 марта, 2020 Поделиться Опубликовано 30 марта, 2020 Не ищи указатель, ищи инструкцию, которая читает из этого адреса. Есть вероятность, пусть и небольшая, что читающая функция читает из этого адреса субтитры непосредственно перед их отображением. Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения