Репозиторий на GitHub
subtitles_demo.py - использует SDK pvleopard для преобразования Speech to Text, он это делает один раз,
как только файл попал на сервер, сохраняет разметку, и после того как пользователь запросил видео с субтитрами,
отображает их при помощи библиотеки moviepy.
handlers.py - находит кадры, которые могут вызвать эпилептические припадки. Он строит гистограмму интенсивности для каждого кадра, потом их сравнивает. Если значение больше какого-то порога, то он ставит метку. Когда пользователь запросит видео с вырезанными эпилептическими сценами, мы не будем обрабатывать все видео, мы будем просто ориентироваться на заранее проставленные метки и проводить обработку. Также производит обработку аудио-сегмента видео для устранения громких и пронзительных звуков.
main.py - сервер. Он использует протокол webrtc для параллельной отправки видео и аудио. Перед отправкой он производит предварительную обработку видео.
Скачать все зависимости pip install -r requirments.txt
Запустить проект на локальной машине uvicorn main:app
Приложение будет доступно по адресу: 127.0.0.1:8000
Репозиторий на GitHub
Деплой сайта
Реализован пользовательский веб-интерфейс, приближенный к оригинальному сайту KION, с помощью Create-React-App и Redux Toolkit.
Режим для людей с дальтонизмом: мы смогли охватить такие его разновидности, как протанопия, дейтеранопия, тританопия. Также есть контрастный черно-белый вариант. Все цветовые режимы применяются ко всем элементам, включая текст, баннеры, видео и картинки.
Режим для слабовидящих: увеличинеие шрифта и размеров некоторых блоков.
Сохранение настроек: для авторизованных пользователей сохраняются последние выбранные настройки.
3 слота для пресетов на одном аккаунте: чтобы каждый член семьи мог сделать настройки под себя и потом быстро к ним вернуться.
Склонировать репозиторий
Запуск в браузере на http://localhost:3000
Так как в рамках хакатона не всё возможно реализовать, тут представлены идеи нашей команды:
При вырезании сцены теряется большая часть информативности этого кадра, а в последствие и фильма, так что появилась идея распределять всю контрастность между ниже стоящими кадрами. То есть у нас есть условно 4 кадра с контрастностью 15 - 15 - 15 - 100, и разница между контрастностью может быть только 15, следовательно, мы проводим такую обработку: 30 - 30 - 30 - 45. Конечно, при такой обработке будут теряться цветопередача и контрастность, но это будет вызывать минимальные проблемы у людей, имеющих диагноз эпилепсия.
KION также предоставляет возможность просматривать телевизионные каналы, и их обработкой тоже нужно заниматься. Наша идея заключается в том, что у нас будет задержка перед показом, то есть нам телеканал передает видео, но должна быть задержка примерно 5 минут. Мы обрабатываем всеми возможными обработками и храним их в оперативной памяти. Как только прошёл этот кадр, то мы удаляем его из памяти параллельно добавляя новые. Эта идея так же будет работать в real time, но будет некоторая задержка.
Есть ещё множество опасных случаев, которые могут вызвать эпилептический припадок. Так что для комфорта пользователей с ограниченными возможностями мы должны охватить максимально много случаев.
Мы предлагаем ввести метрику оценки опасности видео, основываясь на количестве эпилептически опасных моментов, например: "безопасно", "есть риски", "опасный", "не рекомендуем к просмотру". Также есть люди, которые переносят эпилепсию в легкой форме или которым не нравится резкая смена цветов и контрастности, и для таких людей можно ввести не вырезание или обработку кадров, а предупреждение (alert). Оно будет появляться за n секунд до и предупреждать пользователя о потенциальном нежелательном моменте.