Описание работы по созданию специализированного дистрибутивного решения для незрячих пользователей на основе дистрибутивов ALT Linux

Седьмая научно практическая конференция "Информационные технологии для инвалидов по зрению в современном мире: проблемы и перспективы", г. Москва, 4 декабря 2008 г.

См. также:

Современный GNU/Linux — очень гибкая операционная система. Открытость технологий позволяет реализовывать в окончательном продукте различные дополнительные функции, благодаря этому возможна разработка решения для специализированных применений. Рассмотрим некоторые аспекты работы по созданию на базе GNU/Linux специализированной ОС для незрячих пользователей.

Компоненты, необходимые для решения поставленной задачи, разделим на четыре группы:

Основная часть указанных компонентов реализуется не поставщиками дистрибутивов, а независимыми группами разработчиков. Например, в этом контексте можно отметить GNOME Accessibility Project, в рамках которого был разработан экранный чтец Orca и центральный компонент для обработки accessibility-событий — AT-SPI. Компания, выпускающая конечные решения, занимается сборкой и детальной настройкой программ независимых групп разработчиков, а также созданием средств для конфигурирования ОС и программы установки.

Не все поставщики решений на базе GNU/Linux позволяют свободно выполнить доработку своих дистрибутивов. В частности, существуют ограничения по стороннему развитию дистрибутивов на базе Ubuntu, Mandriva и OpenSUSE. Это связано с охраной их торговых марок, и любое решение на их основе со значительными изменениями не может содержать упоминания указанных торговых марок.

Остановимся более подробно на деталях работы по созданию специализированного дистрибутива для незрячих пользователей на основе решений ALT Linux. ALT Linux — это российская компания, выпускающая серию дистрибутивов GNU/Linux. ALT Linux предоставила полную свободу по доработке своих решений и опубликовала необходимые для этого материалы. Планируется выпуск некоммерческого продукта, что позволяет включать в него программы, лицензия которых разрешает только некоммерческое использование. Пример такой программы — синтезатор Mbrola. В случае некоммерческого статуса проекта исключается выпуск версий, продаваемых на оптических носителях, и распространение должно осуществляться через узлы Интернета, что в мире GNU/Linux является распространённым подходом.

Базовая функциональность дистрибутива основана на разработках GNOME Accessibility Project. В его состав будут включены emacspeak и консольный чтец YASR, которые поставляются практически в готовом виде. Команде разработчиков дистрибутива требуется произвести их компиляцию, организовать правильное взаимодействие с другими компонентами ОС и подготовить инструменты для управления и конфигурирования. Основная часть работы заключается в подготовке удобного и гибкого механизма вывода речи и создании программы установки доступной незрячему пользователю.

В рамках проекта есть разработки, аналоги известным в мире. Например, речевой сервер VoiceMan функционально близок к пакету Free(b)soft Laboratory — Speech Dispatcher. Создание собственных приложений объясняется тем, что они являются неотъемлемой частью целостной и интегрированной среды, а выполнить поставленную задачу на основе разрозненных разработок значительно сложнее. Тем не менее, известные аналоги будут включены в состав дистрибутива и их функциональность сохранится.

Желаемый конечный результат — максимально гибкая система речевого вывода с с удобными инструментами конфигурирования. Особенно удачным можно считать продукт, в котором у пользователя нет потребности в самостоятельной доустановки пакетов речевой системы и ручной правки конфигурационных файлов. Необходимость выполнения подобных операции — это недостаток, которым различные дистрибутивы GNU/Linux обладали в прошлом и зачастую обладают в наши дни. Полностью избавится от этих манипуляций сложно, т. к. необходимо предусмотреть все потенциальные проблемы, которые пользователь устраняет ручной правкой конфигурационных файлов. Описанная трудность иногда вызвана недостаточным для русскоязычного пользователя набором пакетов в иностранных дистрибутивах. У будущего дистрибутива меньше подобных проблем, т. к. нет ограничений на принятие решений по комплектации, если это не нарушает лицензии используемых продуктов.

Кроме самих синтезаторов, механизм вывода речи разделяется на следующие компоненты:

Работа по созданию речевого сервера VoiceMan ведётся с 2003 г. Он ориентировался на среду ALT Linux, хотя может быть перенесён практически на любой другой дистрибутив. VoiceMan выполняет следующие функции:

Обмен информацией для VoiceMan ведётся через сокеты TCP/IP или UNIX Domain Sockets при помощи специального протокола. Основное средство взаимодействия программ-чтецов с VoiceMan — протокол emacspeak. Его поддерживают все программы-чтецы, работа которых предполагается в дистрибутиве. Сервер VoiceMan не имеет прямой реализации протокола emacspeak. Это преобразование выполняет внешняя программа, поставляемая вместе с ним. Существует отдельная консольная утилита, способная производить подключения к серверу, и библиотека для разработчиков на языках C/C++, позволяющая передавать текст на сервер. Эта утилита может быть использована для оснащения пользовательского окружения различными голосовыми оповещениями, такими как ежечасное напоминание времени, уведомления о приходе личной почты и оповещения о подключении сменных носителей информации.

Клиенты VoiceMan не имеют жёсткого правила поиска сервера для работы, при их запуске анализируется специальная переменная окружения, на основе значения которой производится выбор сервера. При помощи этой переменной можно перенаправить выводимую информацию на удалённый компьютер в сети. Например, это полезно при работе на ноутбуке, колонки которого уступают колонкам настольных систем.

VoiceMan управляется единым конфигурационным файлом, где регистрируются все рабочие параметры и используемые синтезаторы, но предусмотрена возможность сбора содержимого этого файла из отдельных фрагментов, сохранённых в определённой директории. Информация о каждом синтезаторе не сохраняется в главном конфигурационном файле непосредственно, а добавляется при помощи внешнего фрагмента.

Необходимые части конфигурационного файла VoiceMan поставляются внутри пакетов с речевыми синтезаторами. Они содержат основную информацию о синтезаторе, такую как язык речи, информацию о высоте и скорости голоса, и самое главное — команду, которую необходимо выполнить серверу для преобразования текста. Таким образом, VoiceMan не содержит в себе информацию о синтезаторах и какого-либо кода для их вызова. Это отличает его, например, от Speech Dispatcher, имеющего модульную структуру и содержащего модули для работы с распространёнными синтезаторами. В среде ALT Linux создана директория /etc/tts.d, в которую пакеты речевых синтезаторов добавляют фрагменты конфигурационного файла VoiceMan, необходимые для работы с ними. Содержимое этой директории определяет множество установленных и доступных для работы синтезаторов. Синтезаторы, которые пользователь желает использовать, регистрируются в дополнительной директории /etc/voiceman.d. В ней хранятся символьные ссылки на файлы в /etc/tts.d, и она обрабатывается сервером при каждом его старте.

Для конфигурирования ОС в среде ALT Linux существует специальная платформа — Альтератор. Альтератор имеет глубоко продуманную модульную архитектуру. На его основе создаётся пользовательский инструмент, подобный "Панели управления" в MS Windows, и программа установки. Для Альтератора необходимо создать специальный модуль конфигурации речевого вывода, который должен выполнять анализ установленных синтезаторов, создавать необходимые символьные ссылки для конфигурации VoiceMan и делать некоторые другие операции. Для того, чтобы будущее дистрибутивное решение имело законченный вид, необходимо создать полноценную речевую среду для работы незрячего пользователя внутри Альтератора. Это особенно важно, т. к. при этом решается задача доступности программы установки. Оконная часть Альтератора основана на популярной библиотеке QT. Разработчики QT, которыми в настоящий момент владеет компания Nokia, создали качественный абстрактный механизм для реализации accessibility-функции внутри приложений на основе QT. Он собирает необходимую информацию и способен передать её в объект, удовлетворяющий специальному интерфейсу. Для этого определён отдельный тип динамически подключаемых модулей, содержащих реализацию объектов для обработки accessibility-событий. Разработчики QT предлагают свой вариант такого модуля. Он передаёт собранную информацию в среду межпроцессного взаимодействия — DBus. Таким образом, для разработчиков ALT Linux есть два подхода для обработки accessibility-событий в Альтераторе: перехват событий из шины DBus и создание своего модуля, подключаемого к QT. Были выявлены проблемы с получением некоторых важных оповещений при использовании DBus. В частности, в DBus не посылаются уведомления при редактировании текста в полях ввода. Если эту проблему решить не удастся, окончательный вариант, скорее всего, будет в виде отдельного модуля, непосредственно подключаемого к QT, получающего нужные уведомления и пересылающего их в Voiceman.