Speak2Sign
Меньшиков Сергей Александрович
Разработана программная система (rule-based пайплайн), которая автоматически переводит русский текст в последовательность жестов русского жестового языка (РЖЯ) и создаёт итоговое видео с показом этих жестов и субтитрами.
Система состоит из модулей предобработки текста, поиска соответствий в словаре (~500 жестов), разрешения многозначности слов (с помощью ruBERT) и склейки видео. Дополнительно реализована поддержка немецкого жестового языка (DGS) через интеграцию со сторонним решением.
Является промежуточным решением перед переходом к нейросетевой архитектуре.
Перечень решаемых задач (функциональные требования):
-
Приём текста — система принимает на вход предложение на русском языке (строка текста).
-
Предобработка текста — выполняется токенизация, удаление служебных слов (предлоги, союзы), лемматизация и определение частей речи.
-
Видовая нормализация глаголов — глаголы совершенного вида (например, «сказал») преобразуются в несовершенный вид («говорить») для корректного сопоставления с жестом.
-
Лексический маппинг — каждое слово сопоставляется с соответствующим глоссом из словаря РЖЯ (с поддержкой точного и нечёткого сравнения).
-
Разрешение лексической многозначности (WSD) — для слов-омонимов с несколькими возможными глоссами выбирается правильный вариант с использованием модели ruBERT на основе контекста предложения.
-
Визуализация результата — создаётся итоговое видео: последовательная склейка видеофайлов жестов с наложением субтитров и подсветкой текущего жеста.
-
Поддержка мультиязычности — при выборе немецкого жестового языка (DGS) система вызывает сторонний проект
spoken-to-signed-translationдля выполнения перевода.
Функциональные возможности системы
-
Ввод текста — пользователь подаёт на вход предложение на русском языке (до 500 символов).
-
Автоматический анализ текста — система определяет части речи, леммы и синтаксические зависимости, удаляя всё лишнее (предлоги, союзы).
-
Перевод в глоссы — каждое слово сопоставляется с жестом из словаря РЖЯ (~500 записей). Если слово не найдено, система пытается:
-
преобразовать глагол совершенного вида в несовершенный;
-
отрезать приставку (префиксальный анализ);
-
найти нечёткое совпадение (с порогом 60%);
-
или помечает слово как неизвестное.
-
-
Разрешение омонимии — для многозначных слов (например, «ключ») система автоматически выбирает правильный вариант жеста, анализируя контекст с помощью модели ruBERT.
-
Генерация видео — из найденных видеофайлов жестов склеивается один ролик (MP4) с наложенными субтитрами, где текущий жест выделяется синим цветом.
-
Поддержка DGS — при выборе немецкого жестового языка система переключается на внешний модуль
spoken-to-signed-translation, обрабатывающий немецкие тексты.
Основные элементы проекта (модули)
| Элемент | Назначение |
|---|---|
Модуль предобработки (preprocessor.py)
|
Токенизация, лемматизация, POS-тегирование, фильтрация служебных слов (библиотека Stanza) |
Модуль лексического маппинга (mapping.py)
|
Поиск глосса в словаре с использованием точного совпадения, видовой нормализации, префиксального анализа и нечёткого сравнения (rapidfuzz) |
Модуль WSD (sense_disambiguation.py)
|
Разрешение многозначности через сравнение эмбеддингов предложения и описаний значений (ruBERT-base-cased) |
Модуль визуализации (visualisation.py)
|
Склейка видеофайлов, наложение субтитров с подсветкой жеста (OpenCV + Pillow) |
Модуль DGS (de_module/translate_text.py)
|
Интеграция со сторонним проектом для поддержки немецкого жестового языка |
Словарь (gloss_dict.json)
|
Хранилище соответствий «лемма → глосс → видеофайл», включая описания для омонимов |
Видовые пары (verb_aspects.json)
|
Таблица соответствия глаголов совершенного и несовершенного вида |
| REST API интерфейс | Взаимодействие с проектом через браузер |
Итоговый результат на выходе: пользователь получает:
-
Видеофайл формата MP4 с последовательным показом жестов и текстовыми субтитрами.
Платформы:
-
Операционные системы: Windows 10/11, Ubuntu 22.04 LTS (поддерживаются обе).
-
Среда выполнения: Python 3.11 (для русского модуля) и Python 3.14 (для немецкого модуля).
-
Система контроля версий: Git, репозиторий на GitHub.
Средства разработки (библиотеки и инструменты):
| Категория | Инструмент | Назначение |
|---|---|---|
| NLP | Stanza | Токенизация, лемматизация, POS-тегирование, синтаксический разбор |
| NLP | Hugging Face Transformers | Загрузка и использование модели ruBERT |
| NLP | ruBERT-base-cased (DeepPavlov) | Модель для разрешения лексической многозначности (эмбеддинги предложений) |
| Нечёткое сравнение | rapidfuzz | Поиск соответствий между словами и записями словаря с порогом совпадения 60% |
| Визуализация | OpenCV | Загрузка видео, покадровая обработка, склейка роликов |
| Визуализация | Pillow (PIL) | Наложение текста (субтитров) на кадры видео |
| Математика/ML | PyTorch (torch) | Бэкенд для работы модели ruBERT |
| Математика/ML | NumPy | Математические операции |
| Математика/ML | scikit-learn | Косинусное сходство для сравнения эмбеддингов |
| Данные | JSON (встроенная библиотека) | Хранение словаря и видовых пар |
| Вспомогательные | os, sys, re, shutil, subprocess | Работа с файловой системой, регулярные выражения, запуск внешних процессов |
| Вспомогательные | wget, tarfile | Скачивание и распаковка данных для DGS |
| Управление зависимостями | pip + requirements.txt | Установка всех необходимых пакетов |
Кратко: Python 3.11/3.14 + Stanza (NLP) + ruBERT (WSD) + OpenCV/Pillow (видео) + rapidfuzz (поиск) — всё это работает на Windows/Linux и управляется через Git.
Перспективы развития системы
-
Расширение словарной базы — увеличить словарь с текущих ~500 записей до нескольких тысяч жестов за счёт краудсорсинга и интеграции с открытыми словарями (Spreadthesign, SLOVO и др.). Это позволит обрабатывать более широкий спектр текстов.
-
Улучшение синтаксического реордеринга — доработать алгоритмы для корректной обработки сложных конструкций: вложенных придаточных предложений, пассивных оборотов, сложных временных форм.
-
Переход к гибридной архитектуре — комбинировать rule-based подход с нейросетевыми моделями на тех этапах, где правила показывают недостаточную точность (например, разрешение многозначности или определение порядка слов в сложных предложениях), особенно при появлении достаточных размеченных корпусов.
-
Расширение мультиязычности — добавить поддержку дополнительных жестовых языков (например, американского ASL, французского LSF, британского BSL) через унификацию форматов данных и модульную архитектуру.
-
Оптимизация производительности — внедрить кэширование эмбеддингов ruBERT и предзагрузку моделей для ускорения обработки запросов.
-
Интеграция в комплексные системы синтеза жестов — использовать разработанный модуль text-to-gloss как часть полного пайплайна text-to-pose (генерация анимированных 3D-персонажей, выполняющих жесты).
Итог: система является базой для дальнейших исследований и разработок, с потенциалом превращения в полноценный коммерческий или социально значимый сервис для глухих и слабослышащих.
Достижение поставленных целей
Разработка rule-based пайплайна автоматической генерации глосс из русского текста для русского жестового языка, включая выбор целевого жестового языка (РЖЯ или DGS), отображение глосс и воспроизведение сгенерированного видео.
Степень достижения: Цель полностью достигнута.
Актуальность
Научная актуальность:
-
РЖЯ — низкоресурсный язык — отсутствуют большие параллельные корпуса «текст — глоссы» (десятки тысяч размеченных примеров), нет общедоступных синхронных аннотаций. Это затрудняет применение нейросетевых методов.
-
Rule-based подход — единственная стратегия — позволяет получать работающие системы даже при ограниченном словарном запасе и отсутствии больших обучающих выборок.
-
Пробел в исследованиях — на момент разработки отсутствовала открытая система text-to-gloss для РЖЯ (стр. 12-13).
Социальная актуальность:
| Проблема | Решение |
|---|---|
| Дефицит сурдопереводчиков | Автоматизация перевода текста в жесты снижает зависимость от квалифицированных кадров |
| Высокая стоимость ручного перевода | Система бесплатна и не требует оплаты труда переводчика |
| Отсутствие оперативной обратной связи | Пользователь может мгновенно получить перевод произвольного текста на РЖЯ |
| Низкая доступность учебных материалов | Система может генерировать размеченные примеры «текст — жест» для изучения РЖЯ |
| Языковой барьер в цифровой среде | Большинство веб-ресурсов, госуслуг, образовательных платформ не имеют версии на РЖЯ |
Социальная полезность
| Сфера применения | Польза |
|---|---|
| Образование | Создание учебных материалов для глухих, слабослышащих и изучающих РЖЯ |
| Коммуникация | Генерация субтитров и визуального сопровождения для видеоконтента на РЖЯ |
| Цифровая доступность | Снижение языкового барьера при использовании государственных услуг и образовательных платформ |
| Научные исследования | Базовое решение для тестирования гибридных подходов (rule-based + нейросети) |
| Разработка систем синтеза жестов | Использование как модуля text-to-gloss в комплексных пайплайнах text-to-pose |
Экономическая полезность
| Аспект | Польза |
|---|---|
| Бесплатность | Все используемые инструменты — open-source. Система не требует лицензионных отчислений |
| Снижение затрат | Автоматизация заменяет ручной труд сурдопереводчиков (создание субтитров, учебных материалов) |
| Открытый код | Позволяет организациям адаптировать систему под свои задачи без затрат на разработку с нуля |
| Масштабируемость | Возможность использования в государственных и коммерческих сервисах без дополнительных капитальных вложений |
| Основа для коммерческих продуктов | Может служить ядром для платных сервисов автоматического перевода |
| Параметр | Оценка |
|---|---|
| Масштабируемость | Высокая (модульная архитектура, JSON-словарь, поддержка новых языков). Ограничена размером словаря. |
| Взаимодействие | Средняя-высокая (есть интеграция с DGS, универсальные входы/выходы, потенциал для API). |
| Мобильность | Высокая (поддержка Windows/Linux, минимальные требования, управление зависимостями, открытый код). |
1. Выбор rule-based подхода
| Решение | Обоснование |
|---|---|
| Rule-based вместо нейросетей | РЖЯ — низкоресурсный язык. Отсутствуют большие параллельные корпуса «текст — глоссы» (десятки тысяч размеченных предложений). Нейросетевые методы требуют огромных объёмов данных для обучения. Rule-based подход позволяет получить работающую систему даже при ограниченном словарном запасе (~500 записей). |
2. Выбор архитектурного стиля
| Решение | Обоснование |
|---|---|
| Монолитная архитектура с модульной организацией | Простота разработки и развёртывания (не требует настройки межсервисного взаимодействия). Логическая связность компонентов — все модули образуют последовательный конвейер. Отсутствие необходимости в горизонтальном масштабировании на этапе прототипирования. Упрощение отладки и тестирования — все компоненты в едином процессе. |
| Конвейерный паттерн (Pipeline Pattern) | Данные последовательно проходят через независимые модули обработки, что естественно для задачи text-to-gloss. |
3. Выбор технологического стека
| Инструмент | Обоснование |
|---|---|
| Python 3.11, 3.14 | Широкая экосистема NLP-библиотек (Stanza, transformers); наличие инструментов для компьютерного зрения (OpenCV, Pillow); простота реализации rule-based алгоритмов и прототипирования; возможность интеграции с веб-фреймворками и масштабирования. |
| Stanza (вместо pymorphy2 или NLTK) | Высокая точность для русского языка; предоставляет не только морфологию, но и синтаксический разбор (зависимости), что критично для реордеринга. |
| rapidfuzz (вместо ручного сравнения) | Высокая производительность (C++ ядро); поддержка различных метрик расстояния (Левенштейн и др.); настраиваемый порог совпадения (60%). |
| ruBERT-base-cased (вместо других эмбеддингов) | Одна из лучших доступных моделей для русского языка (178 млн параметров); позволяет получать контекстные эмбеддинги предложений для сравнения с описаниями значений омонимов. |
| OpenCV + Pillow | Стандартные, хорошо документированные инструменты для видеомонтажа в Python; обеспечивают загрузку видео, покадровую обработку и склейку. |
4. Выбор формата хранения данных
| Решение | Обоснование |
|---|---|
| JSON вместо реляционной СУБД | Словарный объём невелик (~500 записей) — не требуется производительность СУБД. Упрощение развёртывания — не нужен отдельный сервер базы данных. Простота редактирования словаря — можно править JSON в любом текстовом редакторе. Быстрая загрузка в память при старте приложения. |
5. Архитектура модулей
| Модуль | Обоснование проектных решений |
|---|---|
| Лексический маппинг | Многоуровневая стратегия (точное совпадение → видовая нормализация → префиксальный анализ → нечёткое сравнение) обеспечивает максимальный охват словоформ при ограниченном словаре. |
| WSD на ruBERT | Использование косинусного сходства между эмбеддингом предложения и описаниями значений не требует размеченного корпуса для обучения, что критично для низкоресурсного языка. |
| Визуализация | Склейка видео с субтитрами и подсветкой текущего жеста повышает информативность и наглядность результата для пользователя. |
6. Поддержка мультиязычности
| Решение | Обоснование |
|---|---|
| Интеграция со сторонним проектом через функцию-обёртку | Позволяет добавить поддержку DGS без усложнения собственной кодовой базы. Демонстрирует масштабируемость подхода на другие жестовые языки. Использование готового решения экономит время разработки. |
Краткий итог: Все проектные решения обоснованы либо техническими ограничениями (низкоресурсность РЖЯ, малый словарь), либо прагматическими соображениями (простота разработки и развёртывания, использование проверенных open-source инструментов, отсутствие необходимости в сложной инфраструктуре на этапе прототипирования).
Оригинальность и новизна
-
Первая открытая rule-based система text-to-gloss для РЖЯ — на момент разработки отсутствовало готовое открытое решение для автоматической генерации глосс именно для русского жестового языка.
-
Адаптация под низкоресурсные условия — система работает без больших параллельных корпусов, используя rule-based подход, что является единственно возможной стратегией для РЖЯ на текущий момент.
-
Мультиязычность в одной системе — поддержка РЖЯ + DGS не реализована ни в одном из аналогов для РЖЯ.
-
Комбинация технологий — впервые применена связка: rule-based маппинг + ruBERT для WSD + OpenCV-визуализация в едином пайплайне для РЖЯ.