Вспомним кто я?
Привет, хабр. Я Иван Бакаидов. Много лет назад я писал про свой школьный проект программы, которая позволяет печатать одной кнопкой людям с тяжелой физической инвалидностью. Вот та статья.
С того момента много что изменилось, умерла девочка, для которой я написал эту программу, проект стал называться LINKa. Я сделал много программ для других форм двигательного поражения. Понял, что потерял волну волонтеров, возникшую при прошлом хаброхайпе, так как Open source проекты надо мейнтейнить.
Но тему разработки программ для коммуникации я не оставил. И на деньги из “гранта Дудя” разработал новый коммуникатор, который позволяет выбирать карточки взглядом. И мне нужна помощь дописать несколько фич. Стек: C#, WPF.
Взглядом? o_O! Как это? У тебя же голова дергается?
Собственно, мне давно в комментариях хабра писали про технологию айтрекинга, а я скипал эти комменты, так как думал что это дорого и с трясущийся головой не сможет работать. Я ошибался!
С 2016 года фирма Tobii (aka. Apple от мира айтрекинга) начала разработку дешевых устройств для рынка геймеров. Эти устройства дешевле в 10 раз девайсов для “инвалидов” (закон наклейки Special device). За пару лет они дошли до прекрасной модели Tobii 4с, которую можно купить в обычном гипермаркете электроники и воткнуть в USB 2.0.
Мне один из фондов закинул этот девайс со словами “Попробуй, парень”. Я положил на полку со словами “Айтрекинг и ДЦП — не заработает, потом как-нибудь посмотрю”. Он еще работает только с Windows, а у меня Mac. Но фонды это такие прекрасные организации, которые требуют отчеты.
Bootcamp, поставил, настроил и понял, что айтрекеры этого поколения научились отслеживать положение головы, а уже от него положение глаз. На очень большой частоте. И всё работает, тряси головой сколько влезет.
Основное ПО для этого трекера геймерское, в Доке 2 врагов помечать взглядом. Все встроенные демки показывают геймерские функции. Но есть открытое API для работы в сторонних программах.
Открывается простор для создания интерфейсов, управляемых глазами. Такие интерфейсы устроены предельно просто: они состоят из сетки кнопок. При удержании взгляда на кнопке происходит клик. И тут многие уже отличились. В самой Windows 10 встроена клавиатура и эмулятор мыши для айтрекера (Правда там в локализации нет букв “Х” и “Б”. Не попросить даже Хлеба!).
Никак!
Есть довольно толковая клавиатура BB2K, о ней писал разработчик на хабре. Мне лично очень нравится Optikey, это хорошо локализованная клавиатура от британского разработчика. Имеет несколько вариантов, в том числе с пиктограммами для непишущих детей.
Ну так если уже есть оптикей, зачем писать свое?
Закономерный вопрос. Как вы помните из прошлых статей, специалистам, которые работают с людьми из речи, очень важно иметь возможность создавать самим контент выбираемый подопечным, а не работать с готовым кирпичом, в который вшиты даже очень хорошие карточки. Это происходит из-за того, что зачастую людей без речи только предстоит научить еще писать, или просто понимать что рисунок кружки обозначает ту самую чашку на кухне из которой его поят. А в тот же Оптикей создавать набор карточек нужно через PowerPoint.
Именно поэтому в основу Линка смотри легла идея, которую я хорошо усвоил учась в школе для детей с инвалидностью — “Всё должно быть настраиваемым”. Исходя из идеи, встала очень простая задачка: Сделать сетку карточек, из которой карточки можно будет выбирать глазами, но при этом способ выбора, карточки и сетка должна легко настраиваться. Я оформил всё это в ТЗ и нашел C# программиста, который понимал в WPF (лучше меня). В это время еще Юра Дудь перевел денег и вообще всё сложилось.
Что в итоге получилось?
Получилась программа, которая показывает набор карточек из файла .linka в сетке и позволяет выбирать их при помощи: айтрекера Tobii, мышки, клавиатуры и игрового джойстика. Также есть режим при котором выбор карточки осуществляется взглядом, а подтверждение кнопкой.
Программа содержит в себе редактор файлов .linka.
→ Скачать можно отсюда бесплатно: linka.su/looks
Так, а что доделать надо?
Несмотря на простоту и лаконичность программы, я надеюсь, ее гибкость поможет наладить коммуникацию в самых разных случаях.
У меня есть несколько мелких идей, которые я бы хотел внедрить программу и я был бы очень рад, если бы вы в этом помогли. Эти задачки описаны в этом issue, но я вынесу часть из них сюда и поясню о чем речь.
- Доработать синтезатор речи, сделать выбор голосов Яндекс и добавить фоллбек чтоб при отсутствии интернет соединения.
Для озвучивания наборов в линке используется API Yandex TTS. Линка смотри спроектирована так, что озвучка карточек задается во время создания набора. Создавая карточку вы можете или использовать озвучку Яндекс или выбрать файл с компьютера. То есть озвученный заранее набор может работать оффлайн. Но линка смотри поддерживает наборы, состоящие не из целых слов, а к примеру из букв, и в таком случае программа читает текст из поля вывода с помощью Яндекса в реалтайме. И я бы хотел, чтоб когда нет интернета программа использовала говеный виндовый синтезатор. Еще б хорошо добавить выбор из голосов яндекса.
- Сделать систему выбора карточек одной кнопкой.
Несмотря на магию айтрекера, я встречал товарищей, с которыми он не срабатывал. И я бы хотел добавить перенести для них алгоритм выбора карточки с помощью одной кнопки из старой доброй линка нажми (и прекратить поддержку последней).
- Сделать возможность печатать в сторонних программах.
- Локализация на языки стран СНГ.
Также я буду рад если вы просто потестите программу и напишите свои идеи.
Спасибо!