«Саша шел по шоссе», «Скажи: рррррыбка», «Кукушка-кукушка…» — знаете, да, эти фразы, которые всех нас в детстве травмировали? Это был какой-то бесконечный эксперимент родителей с несформировавшимся желаемым результатом и, главное, страхами, что их ребенок вырастет с дефектом речи.
Привет! Меня зовут Дима Пухов, я технический директор Cleverbots. Хочу рассказать, как мы научили чат-бота распознавать дефекты речи и добились 80% точности диагнозов ИИ-логопеда.
Проблема
Проблемы с произношением есть у каждого второго школьника, говорят логопеды.Их можно устранить на ранней стадии, но зачастую трудности относят к детскому возрасту, а когда дефекты речи становятся очевидными, их трудно исправить.
Поэтому спектрограмма, как услуга удаленной первичной диагностики, способна предотвратить развитие и усугубление проблем и сигнализировать о необходимости вмешательства специалиста.
В прошлом году фармацевтическая компания Герофарм в целях борьбы со страхами и стереотипами относительно когнитивного развития запустила портал PRO.BRAIN, где можно прочитать много полезных и доступных материалов о том, как работает мозг, как «действуют» болезни и как тело меняется.
Кроме того, на сайте есть спектрограмма — сервис, который помогает родителям в игровом формате протестировать ребенка и определить, есть ли у него дефекты речи.
Коротко об услуге
Для пользователей интерфейс Spectrogram реализован в виде чат-бота и встроен в формат виджета на сайте.
Тестирование проходит в игровой форме: под руководством родителей ребенок должен произнести предложенные фразы, которые затем отправить боту в формате аудиосообщения, а ML-модель автоматически определит, была ли фраза произнесена с дефект.
Здесь важно немного откатиться назад и вспомнить, как было вначале.
На первом этапе внедрения подобной услуги все анкеты отправлялись логопеду, каждую нужно было прослушать и оценить, соответствуют ли речевые навыки ребенка его возрасту, дать экспертное заключение и поставить соответствующую отметку в системе.
.
А это более 10 записей на профиль.
То есть процедура очень рутинная, дети часто допускают одни и те же ошибки, а записи не всегда соответствующего качества или даже не всегда содержат голос испытуемого.
Это место было узким местом — продукт с такими сложными и довольно рутинными этапами диагностики сложно масштабировать и сложно донести пользу до широкой аудитории.
Также необходимо будет нанять больше логопедов, чтобы быстро проверить такое количество записей.
Мы исправили это с помощью искусственного интеллекта.
Теперь система может дать первичное заключение – требует ли случай внимания специалиста.
Информация обо всех обследованных передается логопеду, и он на основании заключения программы определяет, нужно ли записываться на прием.
Результаты теста отправляются родителям по электронной почте.
Теперь самое интересное, как мы это реализовали
Существует множество идей и технологий, которые вы можете попробовать реализовать:- Преобразования частоты хорошо зарекомендовали себя, например, в голосовых задачах.
Мел-кепстральные коэффициенты (MFCC) .
Их можно использовать на этапе разработки функций;
- использовать статистические характеристики;
- Глубокое обучение, а именно технологии, подобные тем, которые используются в речи2тексте.
С ними удобно работать, а решения более универсальны, но для них может потребоваться больше данных, чем имеется на самом деле;
- использовать готовые облачные решения для косвенной оценки наличия дефекта.
Например, решения от Яндекса, Google, AWS, чтобы решить задачу «речь2текст» и получить текст, который мы позже сравним с тем, что должен был сказать ребенок.
Изучив доступные входные данные, мы выделили четыре возможные категории записей:
- Пустая аудиозапись;
- На аудиозаписи нет детского голоса (только голос взрослого);
- Ребенок произнес фразу с дефектом;
- Ребенок произнес фразу без дефекта.
Ход решения
Предварительная обработка
Сначала мы применили преобразования к каждому сэмплу, чтобы убрать и сократить большие паузы.Чаще всего, как это обычно бывает, такие участки располагались в начале/конце звуковой дорожки.
На следующем этапе для выборок были рассчитаны несколько статистических параметров (например, доля пауз и их продолжительность), а затем метод 3Sigma был применен к преобразованным распределениям Бокса-Кокса для выявления аномалий и последующего исключения их из набора данных.
Это позволило нам избавиться, например, от очень коротких/длинных аудиозаписей.
Теперь мы могли двигаться дальше.
Выявление отклоненных аудиозаписей
Для этого из разделов спектрально-ритмические особенности библиотеки либроса Мы выбрали ряд переменных, для которых рассчитали расширенную статистику.Применение PCA сократило количество переменных до адекватных значений, а простая логистическая регрессия показала: 0.99 К РОК_АУК .
Определение дефекта речи
Поскольку пользователи должны произносить заранее определенный текст, мы решили опробовать речь2текст. Пробовали использовать сервисы распознавания речи: Яндекс, Google, Amazon. Гипотеза, которую мы проверяли, была достаточно простой: если дефекта речи нет, то на выходе сервиса voice2text мы получим именно ту фразу, которую мы просили произнести нашего пользователя.Но не взлетело.
Полученный нами текст практически никогда не совпадал с текстом задания, которое выполнял пользователь.
Даже в тех случаях, когда пользователь все произносил очень четко, мы чаще всего получали не то, что ожидали.
Также нам не удалось качественно разделить речь двух людей (такой функционал тоже есть).
Единственный результат, который оказался полезным в нашем случае, — это временная метка начала и конца каждого слова.
В качестве базового был выбран следующий подход — все спектральные и ритмические функции переменные из библиотеки librosa, tsfresh для расчета статистики и PCA (поскольку переменных было очень много).
Результат оказался весьма неплохим: РОК_АУК показал 0.85 , но мы решили пойти дальше — ближе к тому процессу, который осуществляет логопед при анализе того или иного образца.
Во-первых, нужно перейти от общей модели к ряду моделей для каждой задачи (их пока 52; <100 samples in each).
This way we will at least simplify the modeling task a little - the algorithm will quickly select a number of the most important variables representing the presence of a defect. Второй шаг — сегментировать каждую выборку.
На текущем этапе хорошо себя зарекомендовала функция onset_detection, так как она разбивает каждую выборку на ряд подвыборок, по которым мы рассчитываем статистику и которые агрегируются обратно на уровень выборки.
Средний балл Balance_accuracy_score, рассчитанный по всем задачам, показал оценку 0,80, что весьма неплохо.
Мне показалось хорошей идеей группировать подвыборки для каждой задачи, чтобы выявлять идентичные и учиться только на них.
В качестве теста были протестированы различные алгоритмы — от DTW до обычной кластеризации по агрегированной статистике и метода Audio Fingerprinting. Первый и последний способы оказались достаточно интересными, хоть и не работают без ошибок, но скорее всего мы продолжим с ними работать.
Как мы реализовали это в производстве
Стек технологий
- Предварительно обученная модель и ее интерфейс на Python;
- Кафка – брокер сообщений;
- Джанго для кабинета специалиста.
Как только пользователь записал и отправил аудиозапись, наша модель начинает обработку, и через пару секунд результаты уже в базе.
В тот момент, когда логопед проверит профиль пользователя, подсказки от нашей модели уже будут перед его глазами.
Классический подход, масштабируемый под трафик.
Мы решили, что модели будут меняться, и мы хотим запускать все аудиозаписи с использованием новой модели: для этого мы предусмотрели специальный функционал, который это делает. Объемы на данном этапе это позволяют, и в случае невероятного увеличения количества сообщений мы сможем ограничиться только записями, например, за последний год.
Что случилось
Если раньше логопед прослушивал каждую аудиозапись (а их, как мы писали выше, у каждого ребенка ~10) несколько раз, то теперь логопед уделяет пристальное внимание только тем аудиозаписям, которые были «выделены» нашим модель, остальное подлежит выборочной проверке.По сравнению с тем, как процессы были выстроены раньше, логопед экономит много времени.
Модель сразу говорит вам, что с этим звуком все в порядке.
По усмотрению специалиста вы можете их игнорировать и сразу перейти к аудиозаписям, на которых у детей все еще возникают трудности с произношением.
Да, наша модель еще не идеальна, и риск ошибки существует, но, во-первых, риски не так уж и велики — модель точно определяет дефект в 80% записей.
Во-вторых, мы активно работаем над их минимизацией: от выборочных проверок до регулярного дополнительного обучения моделей на новых данных.
В будущем планируется полностью перейти от модели «человек в цикле», когда необходимо участие человека в диагностике, к полной автоматизации процесса благодаря дополнительно обученной модели.
Теги: #Машинное обучение #искусственный интеллект #машина #голос #голос #голосовые сервисы
-
Открытки В Стиле Sql
19 Oct, 24 -
Ну И Небольшая Заметка По Getopts
19 Oct, 24 -
Agile-Подкаст №5. Сезон 1. Требования Agile
19 Oct, 24 -
Как Мы Строили Инфраструктуру Данных В Wish
19 Oct, 24 -
Хабрафорум
19 Oct, 24 -
Интересные Международные События В Августе
19 Oct, 24