Идея
Так сложилось что я уже не первый год пользуюсь всякими расширениями Google Chrome для озвучки текста, это очень полезно для людей с плохим зрением или просто для тех кто не хочет застревать на 1 странице при этом не имея возможности заниматься чем-то еще. Благодаря таким расширениям появляется возможность листать любимый сайт или заниматься своими делами при этом одновременно слушая какую либо интересную статью.
Но у всех таких расширений был минус, в основном принцип их работы был — выделяй и слушай. И так получалось что иногда приходилось выделять разные рекламные баннеры чтобы полностью выделить и озвучить статью. Так же во многих расширениях проблемы с нормальной русской озвучкой.
Так и родилась идея создать своё расширение которое можно адаптировать под каждый сайт отдельно без потребности выделять текст, а просто нажав на кнопку и слушать в хорошей русской озвучке.
Расширение
На сегодняшний день расширение имеет только функционал озвучки определенного количества сайтов, а именно 5 сайтов.
Расширение добавляет кнопку для озвучки в крайних угол сайта, при нажатие на которую начинается озвучка открытой статьи.
Для озвучки используется Yandex SpeechKit, хорошей альтернативы для работы с русским языком я пока что не нашел.
Расширение имеет достаточно простой интерфейс, если сайт «озвучен» расширение покажет всем своим видом, что Вы можете прослушивать материал с этого сайта, или же наоборот не можете.
Планы на будущее
На текущий момент добавлено всего 5 сайтов для того чтобы была возможность нормально отследить все возможные ошибки для каждого сайта отдельно, если бы я добавил сразу 20 сайтов с этим было бы сложнее, но в планах расширять количество сайтов в большом количестве.
Так же из функционала сейчас доступна только одна кнопка «плей» что тоже будет меняться, будут добавлены кнопки для перемотки статьи вперед\назад.
Итоги
На данный момент расширение в стадии тестирования, отсутствует любая монетизация, всё делается «для людей от людей». Я уверен что будут ошибки которые нужно исправить, по этому буду очень благодарен за фидбэк об ошибках на почту listenit.extension@gmail.com или в комментарии. Буду рад Вашим предложениям по тому, какие сайты еще добавить и какие изменения внести.
P.S. У пользователей с Украины могут быть проблемы из-за отсутствия доступа к Yandex
Комментарии (6)
kovert99
27.06.2019 10:21Я так понимаю, что контент на странице берется через какой-то родительский элемент с определенным id или классом, откуда вытаскиваются параграфы, цитаты и т.д.?
Если так — то по сути, чтобы добавить сайт в ваш список, необходимо лишь как-то обозначить родительский элемент. Тогда почему сайтов так мало и какого рода ошибки возникают при парсинге страницы?forumrulez Автор
28.06.2019 21:13Да, в страницу встраивается JS скрипт, который вытаскивает данные по определенным id\именам класса. Ошибки могут быть разные, например, некоторые сайты могут использовать одинаковые имена классов как на главной странице так и в самой статье в результате чего на главной странице сайта будет срабатывать расширение и пытаться что-то там озвучить и отрабатывать не правильно. Приходится добавлять вручную разные условия для точного определения тела статьи и т.д.
KMiNT21
27.06.2019 14:47Кстати, если кому интересно повесить «говорилку» на свой сайт, то можно использовать HTML5 Speech Synthesis API. Вполне юзабельно. Правда, есть известный глюк, но его можно легко обойти. Вот тут демка и подробности, если что.
nokimaro
27.06.2019 16:44Я всё понимаю, но зачем ваше расширение на «поддерживаемых сайтах» включает режим анти-отладки?
Я уже было подумал сперва что это разработчики meduza.io так извращаются, вставив anti-debug код, который всё-равно отключается нажатием ctrl+F8 (disable breakpoints), а это оказывается ваше расширение занимается вредительством.
habrastorage.org/webt/0w/2f/p9/0w2fp9uw8wpujs0yzdqk95kopry.png
конкретно вот этот js
listenit-eur1.firebaseapp.com/u/meduza.io.js
Houston
Спасибо за ваш вклад, хорошее дело делаете.
Не совсем понял из статьи, почему список поддерживаемых сайтов ограничен достаточно малым числом? Нельзя ли найти общее решение типа