На Хабре с периодичностью раз в неделю выходят статьи про технологические аспекты доступности.
В них рассказывают, как прописывать тэги alt, подбирать цвета, какая от внедрения доступности может быть коммерческая выгода.
Сам я впервые столкнулся с разработкой для незрячих пользователей в 2008 году, когда принимал участие в разработке программного телефона для контакт-центров, в котором большое число агентов было незрячими.
Когда один из моих коллег потерял зрение, у меня было 10 лет опыта с технологической точки зрения. По возвращении коллеги на работу моей задачей была подготовка для него отчетов о качестве звука в зависимости от используемых каналов связи, моделей телефонных аппаратов, версий программного обеспечения, вариантов используемых кодеков и массы прочих факторов.
Такую информацию логично было сводить в таблицы. Коллега слушал бы их, получая нужную информацию.
Но, как быстро выяснилось, информация в чистом виде очень плохо воспринимается на слух. Её нужно специально подготавливать, чтобы было кратко и информативно. И даже незначительные изменения в форматировании текста приводят к тому, что он полностью меняется при озвучании скрин-ридерами.
В результате итеративного анализа того, что плохо звучит, я идентифицировал причины, по которым что-то может так звучать, и выработал набор правил, как нужно оформлять тексты, чтобы их было удобно воспринимать на слух. Набором этих правил я и хочу поделиться.
Разница между устной и письменной речью
Очевидно, что письменная и устная речи различаются, поэтому преобразование печатного текста в звуковые сообщения и наоборот может привести к неоднозначным результатам, в том числе и при использовании скрин-ридера. Говоря проще, неправильно оформленный текст будет некорректно прочитан скрин-ридером и, как следствие, человек с ограниченными возможностями по зрению получит информацию в искажённом виде.
Возьмём слово «сквозняк» и переведем его автоматическим переводчиком на английский язык. Скорее всего, оно будет переведено как «draft». Переведем его снова на русский. Скорее всего, при обратном переводе оно превратится в «черновик». Аналогично этой истории при трансформации устной речи в письменную с последующим считыванием с помощью скрин-ридера может получиться похожий неприятный результат:
«Два миллиона шесть» → «2000006» → «два ноль ноль ноль ноль ноль шесть».
Но если записать число как «2.000.006», то результат будет верным:
«Два миллиона шесть» → «2.000.006» → «два миллиона шесть».
Однако такой способ разделения разрядов работает только для русского языка. К примеру, чтобы получить правильный вариант в английском языке, нужно использовать запятую вместо точки. В разных языках один и тот же символ может использоваться для разных целей. В русском языке точка используется как разделитель групп разрядов, тогда как в английском она является десятичным разделителем. Поэтому при создании контента нужно всегда соблюдать правила его оформления, которые в разных языках могут не совпадать.
Те примеры, которые будут приведены ниже, сделаны с помощью голоса «Microsoft Irina» для русского языка в операционной системе Windows 10. Это самая популярная операционная система в мире.
Пример работы Screen Reader
Для лучшего понимания того, что написанное вами звучит не так, как вы думаете, посмотрите этот ролик. В нем голос Microsoft Irina озвучивает распространённые формы записи даты, времени, числа, адреса, денежных сумм, сокращений.
О доступности
Если говорить о доступности в нашем контексте, то у нее можно выделить 2 стороны:
Инструментальная: существуют программы и устройства, помогающие обходить ограничения.
Социальная: действия людей, устраняющие или, наоборот, создающие ограничения, или уменьшающие (увеличивающие) затраты на их преодоление.
Без социальной составляющей инструментальная не работает. Не самый очевидным примером социальной доступности является флаг -h
у Unix-команд ls
и df
, который выводит числа в удобном для человека виде. Просто хорошо продуманная реализация доступности незаметна и делает использование удобнее всем.
Основные ошибки и рекомендации при оформлении контента с учётом удобства пользования скрин-ридером
Разработчики скрин-ридеров стремятся сделать текстовую информацию доступной для незрячих, однако порой существующий контент отформатирован так, что его неудобно не только слушать, но и читать.
Наличие или отсутствие всего одного пробела или точки очень сильно влияет на то, как текст будет озвучен скрин-ридером. Ответственность за простоту текста для восприятия целиком лежит на авторе.
У пользователей скрин-ридеров часто возникают следующие нарекания к тексту: «из того, что прозвучало, непонятно, что же написано в оригинале». Инструментальные средства доступности не могут самостоятельно справиться со сложностями вариантов написания. В дело должна вступить социальная составляющая.
Вот советы по правильному форматированию текста для русского языка, которые позволят избежать большинства неоднозначностей и донести информацию без искажений.
Числа
Правильный формат
М означает миллионы, Т - тысячи, Е - единицы, Д - Дробную часть.
МММ.ТТТ.ЕЕЕ,ДД, например 123.456.789,01 (миллионы отделены от тысяч и единиц точкой, дробная часть отделена запятой)
+МММ.ТТТ.ЕЕЕ,ДД (без пробела между плюсом и числом)
-МММ.ТТТ.ЕЕЕ,ДД (без пробела между минусом и числом)
Пример:
123.456.789,01
Неправильный формат
МММТТТЕЕЕ.ДД
- МММТТТЕЕЕ
+ МММТТТЕЕЕ
Вносящие путаницу варианты записи
Если между минусом и числом поставить пробел, то такая запись будет читаться как «дефис число».
Если части числа разделены пробелом, то при записи «12 380 664» вместо одного восьмизначного числа пользователь услышит три отдельных числа: 12, 380 и 664.
Избыточная точность представления числа. Часто достаточно указать мантиссу и порядок числа, отбросив малозначащие порядки в числе. Если есть 20 чисел, около миллиона, то достаточно будет записать число миллионов с точностью до одного знака после запятой. Информация будет намного легче воспринята на слух.
Время
Правильный формат
ЧЧ:ММ (11:55)
ЧЧ:MM:CC (11:55:44)
«открыты с 10 до 19».
Время, записанное в таком формате, будет читаться правильно как
ЧЧ часов ММ минут
или
ЧЧ часов, ММ минут, СС секунд
Неправильные форматы
«12-05» будет читаться как «двенадцать ноль пять», без часов и минут,
«12ч 05м» будет читаться как «двенадцать че ноль пять эм»,
«открыты 10 – 19» будет читаться как «открыты десять дефис девятнадцать».
Дата
Правильный формат
дд.мм.гггг
дд/мм/гггг
Обязательно используйте 4 цифры для года, это устраняет неоднозначности.
Неправильный формат
дд/мм/гг
дд.мм.гг
Указание года с помощью двух цифр приводит к тому, что дата будет прочитана как последовательность трех чисел, хотя работает правильно для некоторых дат в ХХ веке.
Сокращения (масса, длина, объём)
Правильная запись
Число пробел единица СИ
100 км
100 ккал
100 м
100 кг
100 Па
10 г
10 Н
100 мл
100 л
Неправильная запись
Числоединица (без пробела)
Число__единица (2 пробела)
Такие записи читаются как число и буквы.
Если правильная запись через один пробел «100 ккал» звучит как «сто килокаллорий», то «100ккал» и «100__ккал» (2 пробела) звучат как «стоккал».
Адрес
Правильная запись
3я ул. Строителей д. 25
(«ул.» и «д.» с точками, и через пробел звучат как «улица» и «дом»).
Неправильная запись
3я ул. Строителей д.25
Д.25 без пробела звучит как «Дэдвадцать пять»
Надежная запись
«Третья улица Строителей, дом 25, квартира 12, третий этаж»
Лучше пишите части адреса, такие как «дом», «корпус», «квартира», «улица», «город» полностью.
Деньги
Правильная запись
Число руб (1 пробел)
При этом число копеек произноситься не будет.
Для фунта, доллара и евро запись вида
£число
€число
Будет озвучена с пенсами или центами.
Неправильная запись
₽1
1₽
Символ ‘₽’ не озвучивается, и поэтому не должен использоваться для цен.
Для того чтобы символ ₽ читался, можно воспользоваться NVDA, где присутствует такая опция, которая заменяет его до подачи на синтезатор
В Narrator такого хака нет.
Математические символы
Правильно:
÷ для деления
× для умножения
≠ для неравенства
± для плюс-минус
≥ для больше или равно
≤ для меньше или равно
Неправильно
/ для деления (слэш)
* для умножения (звездочка)
!= для неравенства (равно)
+- для плюс-минус
>= для больше или равно (больше равно)
<= для меньше или равно (меньше равно)
Общий совет: оформляйте текст как профессионально подготовленный печатный материал со знаками математических операций. Кроме того, что такой текст будет правильно озвучен, его будет удобнее и приятнее читать зрячим.
Особенности восприятия информации
Аббревиатуры и сокращения
Скрин-ридеры при наличии хотя бы одной гласной буквы в аббревиатуре стараются произнести их как слова, а не как последовательность букв. Поэтому хорошей практикой будет дважды дать сокращение с расшифровкой, до того, как оно будет постоянно использоваться. Правильно будет использовать следующую схему введения сокращения в текст:
Длинный термин (далее СОКРАЩЕНИЕ)
СОКРАЩЕНИЕ (оригинальный длинный термин)
СОКРАЩЕНИЕ
Пример: «Станок с ЧУ» будет читаться как «Станок с че-у», поэтому параграф про такой станок должен содержать текст:
… Числовое управление (далее ЧУ) станка. …. ЧУ (числовое управление) этого станка…. Программирование ЧУ осуществляется в …..
Структура текста в письмах и постах
Когда мы пишем письма или посты, мы не особо задумываемся о том, как структурирована информация.
Стоит иметь в виду, что навигация по тесту осуществляется по параграфам. Условно для повтора фрагмента нужно прослушать целый параграф. Либо перейти к следующему, если этот параграф не интересен. При использовании списков каждый элемент - это параграф. А по параграфам в письме удобно переходить, нажимая на клавиатуре
стрелку вверх
стрелку вниз
Оформляя списки буллитами, а не перечислениями через запятую, вы делаете текст более доступным.
Ссылки
Ссылки должны быть максимально конкретными, например, указывайте ссылки на видео ролик в Ютубе с привязкой ко времени. Для этого нажмите правой кнопкой мыши в окне воспроизведения и выберите опцию «Сopy video at current time».
Знаки препинания
Пунктуация влияет на скорость озвучки. В обычных предложениях точка и запятая влияют на продолжительность пауз между словами и предложениями. Так, пауза между словами в предложении равна 10-20 миллисекунд. Запятая же в предложении приостановит скрин-ридер сразу на треть секунды.
Точка остановит речь скрин-ридера на три четверти секунды. Отсюда можно сделать вывод, что не стоит злоупотреблять точками. Помните, что
Такой.
Текст.
Будет.
Гораздо.
Дольше.
Проходить.
Через.
Скрин-ридер.
Убрав точки в конце каждого из 8 слов в списке выше, мы уменьшим время, требуемое на озвучку всего списка на 4-5 секунд.
Таблицы
Таблицы являются для незрячих пользователей альтернативой различным графикам.
При этом они озвучиваются следующим образом: если у таблицы есть заголовок, то содержимое столбца в заголовке будет повторяться при переходе в соответствующий столбец в остальных строках.
Пример:
Адресат | Квартира | Был на собрании? | За замену лифта |
---|---|---|---|
Иванов | 1 | Не был | н/д |
Петров | 2 | Был | Против |
Сидоров | 3 | Не был | н/д |
Третья строка будет озвучена как:
Адресат <пауза> Сидоров <пауза> Квартира <пауза> три <пауза> Был на собрании?<пауза> Не был <пауза>За замену лифта <пауза>эн слэш дэ.
Предположим, что в таблице 20 срок. Уже к 10-ой повторение заголовка <Был на собрании?>
утомит слушателя. Повторяющиеся фрагменты в тексте «захламляют» аудиоверсию, поэтому делайте заголовки короче.
До появления таблицы расскажите, о чем она. Это позволит сделать заголовки столбцов короче.
Для обозначения пустой клетки в таблице не используйте ‘н/д’, озвучиваем как «эн слэш дэ», а используйте символ ‘-‘ (минус). Отсутствие информации будет явно донесено до зрячих, а для незрячих скрин-ридер просто не будет озвучивать клетку.
Пример.
В следующей таблице приведены итоги поквартирного голосования о замене лифта:
Фамилия | Квартира | Участвовал | Голос |
---|---|---|---|
Иванов | 1 | Нет | - |
Петров | 2 | Да | Против |
Сидоров | 3 | Нет | - |
Таблица с такими заголовками и ячейками намного лучше воспринимается на слух.
Советы по оформлению таблиц
Обязательно выделяйте заголовок таблицы.
Давайте описание таблицы до её появления в тексте.
Давайте краткие заголовки столбцам, лучше в одно слово.
Если в заголовке уже есть символ процента или единица измерения, то не надо указывать их в каждой ячейке.
Минимизируйте число знаков при записи чисел, например, «3,9 миллиона» лучше, чем «3.901.121».
По возможности, дозируйте информацию. Вместо деления таблицы на 90 подкатегорий лучше привести таблицу с 7 категориями верхнего уровня и отсылкой к 7 таблицам, содержащим более полную информацию по 90 подкатегориям.
Скорость Screen Reader
Текст известной скороговорки:
Тридцать три корабля лавировали лавировали да не вылавировали.
Корабли лавировали лавировали да не вылавировали, ведь не веровали в вероятность вылавировать, а веровали бы — вылавировали бы.
Microsoft Irina Russian (Desktop) озвучивает на максимальной скорости за 6 секунд.
Вероятнее всего, вы произнесете этот текст вслух значительно медленнее, чем скрин-ридер на максимальной скорости, но прочитаете намного быстрее. Всего за 2 – 3 секунды. При правильном оформлении текста, скрин-ридер прочитает текст в 2 – 3 раза медленнее, чем человек, читающий «про себя».
Когда говорим о скорости, на самом деле мы имеем в виду скорость произнесения слога.
Слова «волк» и «де-ло-про-из-во-ди-тель-ни-ца» для правильного сравнения надо разбить на слоги.
Эминем в песне «Majesty» 2018 года поддерживал скорость чтения 10.3 слога в секунду на протяжении более 10 секунд. В нашей скороговорке более 74 слогов. Microsoft Irina читает их со скоростью 12.2 слога в секунду, что намного быстрее рекорда Эминема.
Скрин-ридеры, в отличие от человека, поддерживают разумно-высокий темп чтения очень долго.
Способы проверить то, как же звучит написанное
Для Windows можно попробовать следующие 3 варианта:
Команда в shell
PowerShell -Command "Add-Type –AssemblyName System.Speech; (New-Object System.Speech.Synthesis.SpeechSynthesizer).Speak(
'123456789; 123,456,789; 32°C; 32C ');"
Простой скрипт на python
# pip install pypiwin32
import win32com.client
speaker = win32com.client.Dispatch("SAPI.SpVoice")
text='≠,≥,≤,±,×; 32°C; 32C; 1234567; 1,234,567; tehn; then