В сентябре 2019 года я стартовала социальный Open Source проект Brain-Up. Это разработка веб-приложения, которое включает в себя серии интерактивных аудиоупражнений для тренировки способности слышать и понимать речь. Я работаю Java-разработчиком с 2013 и в компании EPAM с 2017 года. И вот, однажды столкнувшись с такой проблемой восприятия речи у своего ребенка, поняла, что могу попробовать начать разработку такого продукта, который мог бы помочь людям развивать способность восприятия речи не выходя из дома, за компьютером, через веб-сайт, не прибегая к ежедневной помощи близких, специалистов. Первая версия продукта уже готова и доступна здесь. В этой статье я расскажу о нашем проекте, какие задачи и как были решены, наши планы и как можно присоединиться к проекту.  «Лучше самая малая помощь, чем самое большое сочувствие.» Владислав Лоранц  Немного фактов По статистике ВОЗ более чем у 25% детей имеются нарушения речи, более чем у 10% людей есть проблемы со слухом той или иной степени различного генезиса (это могут быть и врожденные проблемы, и приобретённые как травмы или осложнения от антибиотиков, лекарств, длительного действия шума). К сожалению, эти цифры ежегодно только растут. Если в России сейчас около 150 млн людей, то это около 15 млн людей только вокруг нас с такой проблемой. Это примерно население всей Прибалтики (около 6 млн) и Беларуси (около 10 млн) вместе взятых. Это безусловно огромная цифра.  К счастью, около 20-30% из них ― это люди, которые в принципе могут улучшить способность слышать и понимать с помощью специальных регулярных упражнений, т.е. люди, которым показаны реабилитационные занятия для восстановления данной способности.  Ниже приведен примерный список диагнозов, при которых наиболее полезны упражнения по развитию слухового восприятия. 1. Нейросенсорная тугоухость любого генеза: нарушения слуха на уровне улитки (сенсоневральная тугоухость); слуховая нейропатия; центральные слуховые расстройства; возрастная тугоухость (пресбиакузис – потеря слуха, связанная со старением человека). Возможны варианты применения слуховых тренировок как пользователями слуховых аппаратов/имплантов, так и людям с тугоухостью, не требующей слухопротезирования. Слуховые тренировки будут эффективны и для детей, и для взрослых, и для пожилых людей с возрастной тугоухостью. 2. Алалия и общее недоразвитие речи у детей (ОНР). Следует, конечно, помнить, что способность распознавать речь ― это высшая функция мозга, от которой зависят и многие другие его функции, потому и говорится о «когнитивности» в этом случае. Потому вместе с развитием этой способности развиваются и смежные ― память, внимание, реакция, общая работоспособность мозга, и мышление.  С открытием МРТ ещё в 1973 году у учёных появилась колоссальная возможность исследования мозга новым способом. Это стало причиной многих дальнейших открытий. Одно из них ― о пластичности мозга и его почти безграничных способностях. Наш мозг не перестает развиваться с годами и поддаётся тренировке специальными регулярными упражнениями практически в любом возрасте. Об этом пишут исследователи данной области, в частности Норман Джойдж в своей книге бестселлере «Пластичность мозга» приводит массу интереснейших примеров и наблюдений. Об этом же неоднократно говорит в своих лекциях Татьяна Черниговская, наша соотечественница. Это же подтверждают и американские исследователи, разработчики специальных реабилитационных программ, наблюдая за людьми, пациентами, которые занимаются по ним продолжительное время. Об этом можно почитать у них на сайтах (ссылки будут ниже). Итак, американские специалисты уже более 20 лет назад делали свои первые попытки и пытались применить научные достижения и наработки к реальным потребностям людей  с такими нуждами, особенностями. Совместно с инженерами-программистами они разработали несколько программ с упражнениями, которые действительно работают и помогают многим людям восстанавливать аудиторные способности. Они накопили хороший опыт и аналитику за это время, которые доступны для изучения, использования.  Первый и самый важный их вывод то, что развивать эти способности возможно! И второй, что тратить на занятия необходимо довольно продолжительное время. История эта трудозатратная, ведь заниматься нужно каждый день от 30 минут до 1.5 часов, чтобы добиться какого-то ощутимого результата.  Зарубежные программы для развития слухового восприятия:  Advanced Brain Technologies: Home  ― терапевтические упражнения для улучшения здоровья мозга, эмоционального и психического состояния с помощью мелодий и звуков (от 35$ в месяц); Musical Auditory Training ― развитие слухового восприятия с помощью музыки (около 600$ в год); Fast ForWord Reading Program ― программа по развитию способностей мозга и понимания речи (150$ в месяц).  Fast Word, Neuro Innovations ― провайдеры программы в России. Для нас, русскоязычных людей, к сожалению, есть две большие трудности в использовании этих программ. Во-первых,  эти приложения дорогостоящие и, можно сказать, неподъёмные для наших соотечественников со средней зарплатой в 500$ месяц. Во-вторых, там нет русскоязычных блоков упражнений, только англоязычные. Русские провайдеры, предоставляющие доступ к программе «Fastword», рекомендуют тренироваться на английском, потому что таким образом будут развиваться и аудиторные способности, и изучение второго языка. На самом же деле, конечно, мы все понимаем, что если у ребенка, человека сложности с родным языком, то первостепенная задача, это именно развитие его понимания. Разумеется, в случае отсутствия альтернатив, лучше заниматься на англоязычном варианте, чем не заниматься вообще. Плохие новости в том, что американские обладатели программы на просьбы о переводе их речевых блоков на русский язык отвечают отказом, аргументируя тем, что для них это больше исследовательская работа, не бизнес, и к тому же помимо русскоязычного населения (167 млн) есть более интересные и состоятельные аудитории ― китайскоговорящее (1.5 млрд) и испаноговорящее (500 млн) населения. И к сожалению, никаких русскоязычных аналогов на сегодняшний день просто нет: ни платных, ни бесплатных.. Вот с чем столкнулась я, когда такой непростой диагноз «слуховая нейропатия» был поставлен моему ребенку. Этот диагноз означает сложность восприятия и понимания слышимой речи, как, например, обычному человеку, изучающему английский, с хороших словарным запасом невозможно поначалу понять, что же говорит носитель языка в обычном для себя темпе. Таким детям, людям необходимы регулярные занятия.  Я начала изучать все эти материалы, познакомилась с нашими ведущими специалистами, которые занимаются данной проблематикой, перечитывала различные материалы. Год ребенок занимался по американской программе, занимались по методическим пособиям наших специалистов, занятия в сурдоцентре со специалистами ― бесконечные занятия. И тогда я подумала: «До сих пор у нас нет подобной программы для таких людей. Что я как мама, программист с довольно большим опытом могу сделать?». Я представила, что могу попробовать начать Open Source проект, и что всё может получиться в нашем мире неравнодушных деятельных людей.  Оказалось, что у российских специалистов также есть ценные наработки в области восприятия мозгом слуховой информации. Есть и разработанные методики занятий и реабилитации для людей с нарушениями слуха. В частности, профессор Инна Васильевна Королёва и кандидат биологических наук Екатерина Сергеевна Гарбарук много лет уже занимаются исследованиями в сфере сурдологии ― области медицины, которая изучает слух, проблемы с ним и способы восстановления. Екатерина Сергеевна является одним из лучших специалистов по диагностике таких проблем. Инна Васильевна ― автор серии методических пособий «Учусь слушать и говорить», которые переведены на многие языки мира.  Многие методики и материалы являются общедоступными, проверенными и хорошо себя зарекомендовавшими, их можно просто брать и заниматься каждому желающему.  Итак, следует вывод, что если у ребёнка или взрослого человека выявляется проблема слухового восприятия или после кохлеарной имплантации человек впервые оказывается в мире звуков, на сегодняшний день у него есть такие возможности реабилитации:  В больших городах есть сурдологические центры, где сурдопедагоги проводят серии занятий по развитию способности слышать и распознавать звуки, речь. Родители, близкие самостоятельно самоотверженно могут заниматься с ним по методическим пособиям. Можно купить платные американские программы и заниматься с англоязычным или музыкальным контентом.  В августе 2019 года после обсуждения идеи создания подобного приложения со специалистами лаборатории слуха и речи ПСПбГМУ (Первый Санкт-Петербургский Государственный медицинский университет им. акад. И.П. Павлова) мы решили попробовать начать Open Source проект разработки такого приложения с упражнениями развития слухового восприятия, обозначили примерные детали реализации, первые шаги разработки проекта, и началась совместная работа. Наша задача инженеров ― разработка технической части, сурдоспециалистов ― разработка семантической части. Я подготовила описание, разработала примерную архитектуру, выбрала основные технологии, написала первоначальный скелет приложения и разместила код на github.com. Также открыли проект на внутреннем портале EPAM Contribute ― платформе, где каждый желающий сотрудник компании может найти себе интересный проект по душе, которым можно было бы заниматься во внепроектное время. Параллельно я стала делиться идеей с коллегами ― настоящими и бывшими ― и просто знакомыми программистами, и некоторые из них откликались: приходили сами и приводили с собой друзей. С внутреннего портала Contribute также до сих пор приходят ребята, готовые помочь, что здорово.  Впервые мы собрались командой с Артёмом Сущевым (Front-end) и Михаилом Сосниным (DevOps) на одном из осенних хакатонов, очень плодотворно поработали, написали основу приложения и даже продемонстрировали первые аудиоупражнения, видимо заметным образом,  заняв 2-е призовое место.  Техническая составляющая проекта Сейчас для серверной части мы используем SpringBoot и Kotlin   Очень радует нас новый язык от JetBrains как инструментарий! Вновь приходящие java-разработчики спокойно переходят на него и успешно используют. Kotlin позволяет коду быть кратким, выразительным и лаконичным, а программисту получать удовольствие от процесса разработки. В сравнении с Java это безусловно более мощный и современный язык. Клиентская часть приложения написана  на Ember. Последняя версия этого фреймворка максимально близка с нативному JS и HTML, что существенно расширяет порог входа для новых разработчиков, а компонентный подход повышает переиспользуемость и поддерживаемость кода. Встроенная ORM система (ember-data) позволяет максимально гибко абстрагироваться от сетевого стека и изменений в API. Admin часть приложения для загрузки новых упражнений написана на Angular. База данных PostrgeSQL покрывает на данный момент все наши технические задачи и требования. Сборка идёт в Docker образ, который запускается на сервере. Аудиофайлы генерируем программно облачным сервисом Yandex SpeechKit. Медиафайлы хранятся в AWS S3 хранилище, куда за ними ходит напрямую Front. Для интеграционных тестов используется библиотека TestContainers, что позволяет тестировать приложение локально на окружении практически идентичном продуктовому. На мой взгляд, довольно удачное сочетание технологий, которое позволяет нашему проекту развиваться, расти и привлекать новых разработчиков (ведь все мы любим работать с новыми и перспективными технологиями).  Да, конечно, ещё настроен CI/CD процесс с прогоном тестов на каждый коммит, сборкой Docker-образа, отправкой его на Docker hub и деплоем нашего сервера, который нам любезно предоставила компания Selectel. Также для проекта также настроены плагины snyk и dependa-bot. Так как основа приложения ― это аудио составляющая, то очень важной частью было решить вопрос, как записывать или генерировать аудиофайлы слов, фраз, предложений хорошего качества. Сначала я сама записывала на компьютере первый аудиоматериал, чтобы было с чем работать. Также специалисты из ЛОРНИИ согласились в своей студии звукозаписи записывать речевой материал, но при перманентном добавлении контента такой процесс уже было сложнее организовать, тем более мы понимали, что речевого контента нужно будет очень много. Очень хотелось научиться генерировать это программно, мы долго выбирали, пробовали разные решения, перебирали библиотеки генерации речи*, и вот Александр Канунников нашёл в Яндекс Сервисах Yandex SpeechKit с очень приличной генерацией, ― пока мы не сказали нашим сурдоспециалистам, что аудиофайлы были сгенерированы программно, они не могли отличить произношение от обычного человеческого. Потому было принято решение использовать этот генератор. Он также позволяет выбирать некоторые полезные для параметры ― мужской/женский голос, медленнее/быстрее произносить, можно также задать настроение. Всё хорошо, только аккаунт платный.  Все упражнения у нас разделены на две большие группы ― речевые и неречевые, каждая группа содержит серии однотипных упражнений, например, «Слова», «Фразы» «Предложения» и т.д. Для каждой серии готовится свой конфигурационный файл, пишется для него парсер и процессор загрузки данных в базу. В момент первого старта приложения загружаются новые упражнения из файлов в базу. Аудиофайлы генерируются на каждое слово, фразу, предложение Yandex Cloud Speech сервисом и аудиофайлы складываются в AWS S3 хранилище, ссылка на которые записывается в объекты ресурсов.  Сделан блок регистрации/логина пользователя, разработан основной блок с группами упражнениями и приложение для администратора с возможностью загрузки новых упражнений.  За год разработка была разной интенсивности ― мы бурно и активно начали, было много идей и энтузиазма, приходили новые ребята и мы все вместе довольно гармонично и продуктивно работали. За историю проекта в команде участвовало с разной степенью активности более 40 человек, эпамеров и не только, из России, Украины, Беларуси, Польши, Мексики. Некоторые приходят в силу свободного времени между проектами, кто-то хочет поизучать новые технологии, кому-то интересно получить опыт участия в Open Source проекте, но были и такие, кто говорили ― «Здорово, что вы начали такой проект, у моего близкого, ребенка такая проблема, я с вами, я буду помогать». Некоторые наработки по организации контента взяли с портала Учи.ру, на мой взгляд, у нас похожая идея.  Наш главный результат за прошедший год, что уже сегодня у нас есть работающее приложение, несколько активных пользователей, которые ежедневно занимаются. И это действительно здорово! Сурдопедагоги уже начали привлекать своих пациентов, программа вызывает большой интерес пользоватлей, и в скором будущем хотим собрать первые отзывы.  На данный момент мы разработали модель данных, техническую часть 5 серий, интерфейс для пользователя и администратора, генерацию аудиофайлов.  Честно говоря, я не ожидала, что за несколько месяцев у нас получился разработать такой проект силами волонтеров. Я очень благодарна всем ребятам, которые помогали в разное время, и тем, кто продолжает разрабатывать продукт.  Back-end разработчиков почти всегда хватало решать текущие задачи и обеспечивать front-end команду необходимой функциональностью.  Front-end разработчиков, кажется, всегда меньше, чем открытых задач, потому поиск новых членов команды с такими навыками всегда остаётся актуальным, и мы всегда активно рекламируемся в этом кругу. Александр Канунников как техлид команды активно помогает новым участникам освоить Ember и начать продуктивно его использовать.  Роль DevOps-инженера исполняет Дмитрий Стоянов, и он один справляется со всеми задачами по настройке, запуску CI/CD процесса, конфигурированию сервера и github actions, поддержкой всего процесса. Здорово, что компания Selectel решили поддержать наш проект и выделили сервер с публичным ip, чтобы нам было где запустить сервер, к которому был бы доступ у наших коллег по семантической части. Весной к нам пришли UI/UX дизайнеры Татьяна Роде и Вилена Воробьева и отрисовали нам  классный дизайн, который планируем внедрить в ближайшее время.  Из Минска присоединились сурдопедагоги высшей категории Любовь Прошина, Ксения Берёзкина, Наталья Метельская и немного позже Дарья Платоненко, Ксения Сивенкова из Питерского сурдоцентра. Большинство специалистов с опытом более 10 лет, они активно начали заполнять конфигурационные файлы словами и фразами. Ольга Сухова, cурдопедагог, дефектолог, автор пособий «Слушать интересно» из Москвы помогает в разработке неречевых упражнений. Так, сейчас у нас уже более 500 упражнений. Мы понимаем, что это история довольно долгая и нам надо приготовить как можно более интересного качественного материала для занятий. Самое сложное для них сейчас ― это составление матриц по пособиям Инны Васильевны, где слова из каждого столбика матрицы озвучиваются в случайном порядке, и пользователю надо услышать произнесённое предложение. Есть несколько правил, как составлять эти матрицы, что делает этот процесс совсем не тривиальным. Сейчас специалисты занимаются этим блоком.  Прототип нашей платформы, которую мы назвали Brain Up, уже готов. Можно попробовать на сайтах http://audibly.ru/ и http://brainup.site/. Он включает два больших блока упражнений ― неречевых и речевых. Мы начали с речевого блока, уже есть несколько готовых серий для пробы: отдельные слова, группы слов, предложения.  Первая страница:  Группы упражнений и выбор упражнения по теме. Само упражнение состоит из выполнения трёх последовательных блоков: пользователь видит группу слов, сначала он их просто прослушивает, потом может повторить несколько раз выбранные слова и последний этап, когда пользователь слушает слова и выбирает правильный ответ. Хотелось бы, конечно, к словам добавить картинки, потому как наши пользователи в силу своих особенностей могут и не иметь в своём словарном запасе тех слов, которые встречаются в упражнениях, и было бы здорово дать им ещё визуальную поддержку. Сейчас готово несколько серий, пока все они с опорой только на слова.  Как работает приложение Пользователь регистрируется, выбирает группу упражнений и далее начинает выполнять от более простых, переходя к более сложным.  Задания внутри темы отсортированы по сложности и доступность следующего открывается после успешного выполнения предыдущего. После выполнения задания записываются показатели времени, количество неверных ответов и количество повторений в базу для расчета доступности следующего упражнения и дальнейшего более глубокого анализа данных по конкретному пациенту и группе, который планируется реализовать позже.  По плану сначала пользователь тренирует способность распознавать сигналы по длительности, по частоте, по количеству (этот раздел ещё в разработке и технической и семантической).  Далее пользователю необходимо тренировать способность различать разные виды тематических сигналов: ударные, струнные, духовые, бытовые, природные шумы, мужской или женский голос.  После этого можно переключаться на распознавание речевых фрагментов и начать с серии «Слова». Сначала пользователь ориентируется на длину и звучание слова (в первых упражнениях, они специально подобраны разной длины и с наибольшим отличием по звучанию). Далее уже можно начинать тренироваться распознавать и саму речь от простых фраз до сложных предложений. Матричная форма упражнений, предложенная Инной Васильевной Королёвой, кажется очень удачной и уже зарекомендовавшей себя методикой. Эта идея реализована в серии «Группа слов». В ней пользователь видит матрицу и слышит в случайном порядке слова из каждого столбца, получается грамматически правильное предложение с отсутствием смысла, но пользователю необходимо его расслышать и выбрать сказанные слова. Отсутствие смысла усложняет упражнение, потому как зачастую неуслышанные фрагменты наш мозг может компенсировать логикой, поэтому важно заставить его слушать максимально сконцентрировано всю последовательность слов. Например, для приведённой ниже матрицы могут быть сгенерированы: «Девочка читает вишни», «Бабушка рисует книги», «Женщина танцует деньги», «Девочка рисует деньги» и.т.д. Здесь тоже очень необходимы картинки, но, к сожалению, пока у нас в команде нет художника. Человек, с рождения имеющий нарушенную способность слышания, имеет ограниченный словарный запас, и многие простые слова могут быть для него абсолютно новыми в силу того, что даже если он слышал это слово несколько раз, мог его не усвоить, потому визуальная поддержка была бы очень полезна для формирования более полного образа нового понятия. Если у вас есть такая способность и возможность взять хотя бы несколько слов ― было бы здорово, пишите мне. Каждое следующее упражнение одной серии становится доступным только если пользователь успешно сделал предыдущее (правильно выполненные задания более 80%). Если пользователь делает меньше, то задание перемешиваются и пользователь снова и снова прослушивает этот материал, что для него очень важно. Ведь именно прослушивание и последующее выполнение упражнений заставляют человека прислушиваться, в этом и состоит суть тренировки ―человек старается услышать и распознать материал. Это очень важно, ведь люди и особенно дети с нарушенной способностью воспринимать речь начинают компенсировать эту способность просто другими видами, способами общения ― они начинают читать по губам или просто пользуются письменными источниками, и окружающие, близкие тоже начинают приспосабливаться к этому. Это компенсация безусловно полезна и необходима как социальная составляющая жизни человека, но играет злую шутку с самой способностью слушать, людям с такой особенностью это делать трудно и они начинают избегать этого. Но слушать им необходимо, ведь атрофируются те наши функции, которыми мы не пользуемся. Потому заниматься и заниматься правильно и регулярно очень важно. По американским исследованиям необходимо заниматься около 2 лет каждый день от 30 минут в день. Это очень трудоёмкая и долгая история для пользователя. Потому нам хочется сделать приложение удобным, интересным и максимально полезным.  Задания для пользователя усложняются в нескольких направлениях ― и по сложности (слова становятся более похожи друг на друга, накладывается разного рода шум ― необходимо прислушиваться каждый раз с большим усердием), и по количеству.  Сейчас мы с ребятами технически практически закончили серии "Слова", "Группа слов", "Фразы". Сурдопедагоги уже закончили наполнять контент серии “Фразы” и заканчивают для остальных двух. Хочется их протестировать, проверить, потому как уже начали приглашать первых пользователей.  Если появится художник ― будем добавлять картинки к заданиям. Далее необходимо добавить ещё контент к серии “Предложения” и всем неречевым упражнениям.  Также очень много идей, какие ещё серии можно было бы добавить к имеющимся речевым и неречевым. Есть уже проработанные идеи, как добавить упражнения с музыкальными инструментами и другими разными сигналами для первоначальной тренировки.  Хочется скорректировать 1-й шаг регистрации пользователей, чтобы минимизировать ввод личных данных и сложность их хранения соответственно.  Необходимо разработать аналитический блок для обработки результатов выполнения заданий пользователями для просмотра самим пользователем, и отдельный блок для докторов, разработчиков для анализа приложения.  Есть методика тестирования пользователя-пациента, чтобы понять какой у него текущий уровень восприятия слуховой информации, и потому хотелось бы разработать отдельный блок диагностики, который бы пользователь проходил перед началом использования приложения и в какие-то определённые моменты его пути,например каждые три месяца, чтобы понимать его динамику и полезность занятий.  Как я уже писала, у нас готов новый классный  дизайн, который надо будет внедрить, на что у нас пока не так много инженерных ресурсов. Есть ещё несколько технических задач, которые тоже хочется закрыть ― и по безопасности, и по архитектуре есть несколько идей, как улучшить текущий вариант. Также хочется сделать сайт мультиязычным, добавить для начала поддержку английского языка. Мы надеемся, что наше приложение будет оставаться бесплатным, чтобы каждый нуждающийся в занятия, желающий смог тренировать свою способность слышать лучше.  Сейчас вся разработка ведётся только волонтерскими силами, основные ресурсы ― сервер и jira-пространство организации работы ― нам сейчас предоставлены сторонними компаниями, но есть определённые затраты на покупку имени url, на сервисы AWS и Yandex, которые пока покрываем своими средствами.  Спасибо всем, кто участвует и поддерживает наш проект. Компании EPAM (https://www.epam.com ) предоставила информационное сопровождение на внутреннем портале Contribute, а также Jira и Kb space для проектоной организации процесса разработки. Компания Selectel (https://selectel.ru/) предоставила нашему проекту instanse для запуска сервиса. Компания JetBrains (https://www.jetbrains.com) предоставила участникам проекта лицензии Idea. На github у нас размещён код и запущен CI/CD процесс проекта. Я также очень благодарна всем ребятам, которые помогали в разное время, и тем, кто продолжает разрабатывать эту платформу. И нашим медицинским специалистам, консультантам: Мы будем рады всем, кто захочет присоединиться к нашей команде, в тем более сейчас как раз задач намного больше, чем текущих активных участников.  Если у Вас есть, появились идеи как улучшить наш проект и Вы готовы ими поделиться и, может быть, даже реализовать - приходите к нам! Или, возможно, просто хотите стать частью команды и реализовывать какие-то текущие задачи - добро пожаловать! Пишите мне на brainupproject@yandex.ru, я с радостью отвечу на ваши вопросы, и мы постараемся найти пути сотрудничества. Ведь только наши совместные усилия делают этот проект «живым»  и, возможно, в обозримом будущем мы сможем помочь многим людям открыть для себя или вернуть  мир понимаемых звуков!  Ближайшее выступление о проекте 12.12.2020 в 13.00 на IT-Home online конференции, присоединяйтесь, чтобы узнать больше.   java-разработчик