Обзор компонентов и возможностей средств для работы без зрительного контроля в дистрибутивах ALT Linux

Всероссийская научно-практическая конференция "Свободное программное обеспечение: разработка и внедрение", г. Томск, 18 мая 2008 г.

Основной средой для работы в дистрибутивах ALT Linux без зрительного контроля является emacspeak. В настоящее время emacspeak позволяет выполнять следующие операции:

  1. Манипуляции с файлами.
  2. Чтение электронной почты.
  3. Обзор WWW-страниц (без поддержки Java Script).
  4. Запуск консольных приложений (без поддержки ncurses).
  5. Удобное редактирование исходных текстов программ.
  6. Быстрый вызов компилятора и нахождение ошибок.
  7. Ведение календаря и записных книжек.
  8. Прослушивание книг из текстовых файлов.

Некоторые операции хорошо доступны в силу того, что они могут быть выполнены при помощи консольных инструментов. Например:

К достоинствам системы emacspeak относится высокая скорость работы незрячего человека, практически недостижимая при использовании ведущих коммерческих пакетов для Microsoft Windows.

Основной пакет для вывода речи — речевой сервер VoiceMan. Такой компонент нужен в силу:

Речевой сервер VoiceMan способен обрабатывать и удалённые подключения по сети.

Основные синтезаторы, которые сейчас доступны, — это mbrola для английского языка и ru_tts — для русского. Оба синтезатора не имеют опубликованных исходных текстов, хотя их лицензии допускают размещение в публичных репозиториях и использование в некоммерческих целях. Также подготовлены к работе синтезаторы flite, festival, espeak. Синтезаторы festival и espeak имеют частичную реализацию поддержки русского языка, но недостаточную для их непосредственного использования в работе.

В ближайших планах — подготовка работы пакета orca и реализация удобных средств конфигурирования речевого вывода при помощи платформы "Альтератор".

Полный текст

Всё программное обеспечение, необходимое для работы в операционной системе GNU/Linux без зрительного контроля можно условно разделить на три группы:

Наиболее известные программы для представления содержимого экрана в текстовой форме, способные работать в системе GNU/Linux, — это emacspeak, orca, yasr, gnopernicus.

Пакет emacspeak — это одна из самых первых разработок [1]. Emacspeak представляет собой серию скриптов и дополнений для популярного текстового редактора GNU Emacs, написанных на языке lisp. Возможности по расширению функциональности, которыми обладает emacs, позволили создать один из самых удобных инструментов для работы на компьютере при помощи речевого интерфейса. Авторы emacspeak не считают свою разработку "screen reader", а стараются употреблять термин "audio desktop", подчёркивая, что это среда, в которой акцент делается не на озвучивание визуального содержания emacs, а на создание полноценного и самодостаточного речевого окружения пользователя. Важную роль сыграла организация emacs, в котором информация практически любого типа всегда представляется в текстовом виде. Emacs в своей базовой комплектации имеет множество компонентов для решения самых разнообразных задач. Практически все они хорошо озвучиваются emacspeak, авторы которого постарались оптимально определить подмножество текстовой информации, которое необходимо озвучивать для удобной и быстрой работы. В настоящий момент при помощи emacspeak можно выполнять следующие действия:

К особым достоинствам пакета emacspeak можно отнести очень высокую скорость работы с ним. Это стало возможным благодаря широкому использованию горячих клавиш, единому механизму работы с информацией любого типа, хорошо продуманной фильтрации выводимой речи, гибкой настройки личных предпочтений. Подобная скорость работы оказывается недостижимой при использовании ведущих коммерческих пакетов для Microsoft Windows.

Emacspeak обладает рядом недостатков, главный из которых, — необходимость владения навыками программирования на языке lisp. Поскольку все конфигурационные файлы в emacs — это просто скрипты на lisp, то для получения нужных настроек среды необходимо уметь такие скрипты создавать и редактировать. Для свободных манипуляций с файлами очень полезным оказывается умение составлять команды с широким использованием возможностей bash, поскольку все операции транслируются при помощи этой оболочки. Другой важный недостаток — это доминирование английского языка в речевом выводе от emacspeak. Эти два ограничения сильно препятствуют широкому распространению emacspeak среди людей, для которых он мог бы оказаться очень полезным. Существуют некоторые трудности при работе с файлами популярных офисных пакетов. Для чтения файлов форматов Microsoft Office приходится использовать такие утилиты как catdoc, antiword, xlhtml. Сохранять документы, подготовленные в emacspeak, в офисных форматах пока не получается.

Невозможность обработки Java Script при просмотре Web-страниц является следствием недостатков консольного браузера w3m, на который сделан упор при работе с Internet в emacspeak.

Утилита yasr (Yet Another Screen Reader) представляет собой маленькое консольное приложение, в котором можно запускать консольные программы [2]. При своём старте yasr создаёт псевдотерминал и выполняет перехват всей текстовой информации, которую посылают запущенные в нём приложения. Для удобства эта утилита имеет некоторые функции, позволяющие вернуться и просмотреть текст по всему экрану. При помощи yasr можно даже запустить полноэкранные ncurses-приложения, но работать с ними тяжело, т. к. требуется хорошо представлять порядок вывода текста на терминал, и произносится много ненужной информации, включая элементы оформления экрана. Утилита yasr оказывается полезной для выполнения конфигурационных действий, когда нет возможности запустить emacspeak. Она требует минимальный набор системных компонентов для своей работы и может использоваться, например, в среде, загруженной с компакт-диска.

В настоящий момент в дистрибутивах ALT Linux не реализована работа GUI-приложений для организации речевого интерфейса. Известно два таких пакета — orca и gnopernicus. Оба они рассчитаны на работу в среде gnome. Gnopernicus — это давно существующий проект [4], который, тем не менее, не получил широкого распространения и сейчас уже потерял актуальность, поскольку существует значительно более перспективный пакет orca. Пакет orca написан на языке python и имеет модульную структуру [3]. Разработчики поставили цель добиться озвучивания работы не только в среде gnome, но и сделать возможным работу с браузером Firefox и офисным пакетом OpenOffice.org. Большой интерес к orca вызван тем, что при работе с ним не требуется особых технических знаний и навыков программирования, как это необходимо для работы с emacspeak. Его использование сильно напоминает подход к работе в Microsoft Windows, и многие возлагают на него большие надежды из-за перспектив его доступности широкому кругу пользователей.

В данный момент можно рассчитывать только на функциональность консольных приложений, которых в GNU/Linux много и они способны покрыть довольно широкий круг задач. Особенно полезным оказывается наличие таких пакетов как tetex-latex и lilypond. Они позволяют вести серьёзную издательскую деятельность с минимальной помощью окружающих людей. При помощи lilypond можно изготовлять музыкальные композиции путём их трансляции в midi-файлы и дальнейшей обработкой синтезатором timidity. Качество таких композиций на практике сильно зависит от установленных звуков музыкальных инструментов. В целом, доступны почти любые консольные приложения, которые не используют работу в полноэкранном режиме.

Преобразование текста в речь выполняют речевые синтезаторы. Сейчас в среде GNU/Linux способны работать следующие речевые синтезаторы:

Синтезаторы mbrolaru_tts [9](8]) не имеют опубликованных исходных текстов. Их лицензии допускают выкладывание в публичные репозитории и некоммерческое использование. Синтезатор ru_tts, поддерживающий русский язык, основан на синтезаторе "Фонемафон", который иногда используется в работе в Microsoft Windows. В настоящий момент, несмотря на отсутствие опубликованных исходных текстов, ru_tts является самым распространённым решением для обработки русского текста среди пользователей GNU/Linux. Частичную реализацию поддержки русского языка имеют также синтезаторы festival [6] и espeak [7]. Но пока их возможности недостаточны для свободного использования. Синтезатор flite [11] имеет очень плохое качество работы и используется очень редко. Freetts — это его аналог, реализованный на языке Java [10], работающий при помощи среды Java Speech API.

Взаимосвязь программ, анализирующих содержимое экрана, и речевых синтезаторов выполняет такой компонент как речевой сервер. Подобный сервер должен принимать соединения по TCP/IP или через UNIX domain sockets, получать текстовую информацию, которую необходимо "произнести", выполнять обработку полученного текста и пересылать его в речевой синтезатор. Кроме того, он должен распознавать некоторые дополнительные команды, такие как остановить произношение текста, изменить параметры произношения (скорость, высоту, громкость) или сгенерировать короткий звуковой сигнал постоянной частоты. Такими сигналами пользуются некоторые приложения для обозначения пустой строки в тексте, переключение окон и т. п. Подключаться к такому серверу должны все приложения-чтецы, которые запустил пользователь. Например, ими могут быть emacspeak, yasr, orca. Его применение позволяет избежать одновременного произношения речи от разных программ, а также сделать разделение синтезаторов, чтобы текст разных языков произносился разными синтезаторами.

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

В будущем необходимо подготовить модуль для платформы "Альтератор", в котором нужно реализовать единый удобный механизм настройки и запуска вывода речи на компьютере.

Ссылки

  1. http://emacspeak.sourceforge.net
  2. http://yasr.sourceforge.net
  3. http://live.gnome.org/Orca
  4. http://www.baum.ro/gnopernicus.html
  5. http://www.cstr.ed.ac.uk/projects/festival
  6. http://festlang.berlios.de/russian.html
  7. http://espeak.sourceforge.net
  8. http://tcts.fpms.ac.be/synthesis/mbrola.html
  9. ftp://ftp.rakurs.spb.ru/pub/Goga/projects/speech-interface/
  10. http://freetts.sourceforge.net
  11. http://cmuflite.org