Skip to content

ScreenTale v0.5.0

Choose a tag to compare

@Xilleet Xilleet released this 26 Sep 14:10
· 63 commits to main since this release

Windows OCR Milestone & Парящий Мини-HUD

Версия 0.5.0 открывает новую главу в истории ScreenTale! Мы совершили грандиозный технологический скачок: распознавание текста ускорилось в 20 раз,, а панель управления превратилась в полноценный модульный HUD.


Нативный Windows OCR

  • Молниеносный отклик:
    Благодаря переходу на системный WinRT API Windows 10/11 задержка распознавания кадра рухнула с тяжёлых 500 мс до рекордных 15–25 мс! Авто-режим больше не дёргается — чтение текста с экрана происходит плавно и в реальном времени.
    Системный OCR работает на ресурсах самой ОС, полностью освобождая VRAM и CPU для ваших игр. Никаких просадок FPS!
  • Выбор движка в Настройках:
    В Настройки → «Перевод» добавлен удобный переключатель между быстрым Windows OCR и классическим EasyOCR (PyTorch) с индивидуальным статусом работы для каждого.

Автономный парящий мини-HUD

  • Тулбар теперь свободный:
    Панель управления больше не прибита намертво к окну перевода. Справа появилась удобная ручка ⋮⋮, потянув за которую тулбар можно оторвать и утащить в любую точку экрана (хоть к миникарте, хоть на второй монитор).
  • Умный 4-сторонний магнит (Snap):
    Тулбар можно пристегнуть снаружи к любому из 4 углов окна перевода (сверху-справа, снизу-справа, сверху-слева, снизу-слева). Поднесите его ближе к любому углу — и он "прищёлкнется" с идеальным зазором.
  • Физика коллизий (Защита текста):
    Тулбар физически не может «провалиться» внутрь окна перевода и перекрыть текст или ресайз-грип. Если бросить его поверх текста — он сам мягко отскочит к ближайшему внешнему краю.
  • Защита от улетания за экран:
    Тулбар и окно перевода теперь аппаратно ограничены границами рабочего стола. Они поддерживают мультимониторные связки (2–3 экрана), но ни при каких обстоятельствах не улетят в «чёрную пустоту» за пределы видимости.

Пауза авто-режима (Alt + P)

  • Свободный обзор во время игровых битв и/или катсцен:
    Начался бой или длинный ролик? Нажмите Alt + P или кнопку ⏸ на тулбаре. Окно перевода мгновенно скроется с экрана, освободив 100% обзора игры, а на экране останется лишь аккуратный мини-пульт с горящей янтарной кнопкой ▶.
  • Моментальное чтение при снятии с паузы:
    Бой закончился? Нажимаем ▶ (или Alt + P) — окно возвращается, и текущая реплика считывается без необходимости прокручивать экран или двигать мышь.
  • Железная пауза:
    Запоздалые фоновые переводы больше не смогут самовольно открывать окно во время паузы.

Умная нормализация текста перед переводом

  • Склейка разорванных строк:
    Исправлена главная проблема токенизаторов нейросетей (Opus-MT / NLLB-200). Слова с переносом строки (infor-\nmation → information) автоматически сшиваются обратно, а одиночные разрывы строк превращаются в пробелы, сохраняя единый контекст предложения.
  • Чистка спецсимволов:
    Разношёрстные типографические кавычки (“, ”, «, »), кривые апострофы и длинные тире нормализуются в стандартный ASCII-вид, избавляя переводчик от мусорных токенов <unk>.
  • Защита цифр:
    Сохранено фирменное исправление путаницы буквы O и цифры 0 внутри чисел (2O24 → 2024).

Backpressure: защита от перегрузки очереди

  • Никаких зависаний при пропуске диалогов:
    Если вы зажали пробел для быстрой перемотки текста или на экране бушует анимация, очередь не раздувается до бесконечности. Система мягко отсекает промежуточный шум, удерживая буфер актуальным и защищая от 15-секундных таймаутов.
  • Чистое переключение моделей:
    При смене движков в Настройках (например, с Opus-MT на NLLB) очередь задач от старой модели моментально сбрасывается, исключая конфликты. Стоит учесть, что все переводы, которые не самоочистились, останутся в окне перевода.

За кулисами разработки

Интеграция системных C++ WinRT API, ускорение распознавания в 20 раз и оптимизация нейросетей заняли от силы час. Но вот битва с физикой парящего мини-тулбара (чтобы он не телепортировался, не тонул в текстурах окон, ровно магнитился к четырём углам и не перекрывал клики) — вымотала меня больше, чем весь исторический переезд проекта с CustomTkinter на PySide6 =)

Поэтому версия 0.5.0 официально закрыта, а я отправляюсь на пару недель заслуженного отдыха играть в игры. (но это не точно, а то меня вдруг опять индюк клюнет что-то доделать). Увидимся в v0.5.1, где я научу ScreenTale читать вертикальную мангу! 🎮🏖️


📦 Установка и запуск:

  1. Скачайте архив ScreenTale_v0.5.0.zip из раздела Assets ниже.
  2. Распакуйте архив в любую удобную папку.
  3. Запустите ScreenTale.exe.

💡 Совет для тех, кто обновляется с версии 0.4.4 или ранее:
Если ранее у вас была более старая версия и вы не хотите перекачивать по новой модели, то можете спокойно создать рядом с ScreenTale.exe папку data (если ее там еще нет) и закинуть туда папки easyocr_models и hf_cache, а так же config.json (чтобы настройки, которые были в предыдущей версии вами настроены, подтянулись в новой версии).