4000 часов данных STT на русском языке
Если вы не платите цену за утюг, значит, кто-то заплатил за вас. Так работает во всех сферах жизни
Сообщение на spark-in.me 1 мая 2019 г.
TL; DR
Это сопроводительный пост к нашему выпуску набора данных Открытая речь в текст на русском языке (STT / ASR). Это должно быть немного беззаботно и насмешливо. Все мнения мои, наверное, мнения моих коллег расходятся. Это нетехническое резюме. Не относитесь к этому слишком серьезно, вероятно, 50% этого текста - какая-то тонкая шутка (напишите мне, если найдете все пасхальные яйца!).
В любом случае, вот набор данных:
TL; DR:
- Мы собрали и опубликовали набор данных за 4000+ часов для обучения моделей преобразования речи в текст на русском языке;
- Данные очень разные, кросс-доменные, качество аннотаций варьируется от достаточно хорошего до почти идеального. Наше намерение состояло в том, чтобы собрать набор данных, который как-то связан с реальными / бизнес-приложениями. Сбор только чистых данных в академической манере не представляет особого интереса. В идеале этот набор данных является первым шагом на пути к репо с предварительно обученными моделями STT;
- Мы намерены увеличить это количество примерно до 10 000 часов или даже, может быть, до 20 000 часов, если звезды выровняются правильно (мы знаем, как достичь 6–7 тысяч часов, мы что-нибудь импровизируем);
- Мы НЕ инвестировали никаких реальных денег в создание этого набора данных (за исключением, конечно, нашего времени и усилий), поэтому мы выпускаем его под лицензией cc-by-nc. Если вы хотите использовать набор данных в коммерческих целях, перейдите здесь;
- Вы можете увидеть историю релизов здесь;
Ускорение момента Imagenet
В идеале это выглядит так:
- Извлечь существующие общедоступные модели и наборы данных;
- Соберите некоторый набор данных MVP в своем домене;
- Построить модель MVP;
- Добавьте более сложные случаи;
- Подтвердить, протестировать, промыть и повторить;
В таких областях, как компьютерное зрение (CV) и обработка естественного языка (NLP), есть на что опираться, это только вещи, которые работают в 95% случаев:
- Широко распространенные предварительно обученные модели Imagenet. У каждого фреймворка есть репо типа это - где вы можете получить любую модель CV с весами. Просто добавь воды;
- По моему опыту, в НЛП лучше всего работают такие инструменты, как FastText. Современные огромные сети, такие как BERT, тоже работают, но в реальной жизни мы не сочли их практичными;
А вот в СТТ по-русски развиваться особо не на что:
- Конечно, есть платные API / коммерческие продукты последнего поколения / продукты от правительственных организаций, но у них есть свои недостатки (помимо того, что они частные или построены на основе менее прозрачных технологий);
- Общедоступные наборы данных в лучшем случае скудны (
- Даже общедоступные наборы данных на английском языке ... носят академический характер и оторваны от реальной жизни;
- STT имеет долгую историю и склонен к развитию крупными технологическими компаниями;
- В отличие от Google / Facebook / Baidu, которые, как известно, публикуют блестящие исследования (статьи FAIR потрясающие и доступные, Google - в меньшей степени), Яндекс, как известно, не добавляет что-либо в сообщество;
В STT также есть несколько менее обсуждаемых преимуществ:
- Есть предположения о том, сколько данных вам нужно для правильного обобщения - оценки варьируются от 5000 до 20 000 часов. Например, Librispeech (LS, один из самых популярных наборов данных) составляет 1000 часов и очень «чистый». Google и Baidu сообщают об обучении 10 000–100 000 часов данных в различных документах для различных условий;
- Если в резюме вашим «доменом», для которого вы изучаете особенности, является, например, «кошки» (в определенных позициях, то есть см. Пояснения по этому поводу в CapsNets Хинтона), то в STT это немного сложнее. Ваши данные могут быть чистыми / шумными. Кроме того, каждый голос - это отдельная область, модели прекрасно адаптируются к голосам. Также проблемой является словарный запас. Итак, в основном, когда кто-то сообщает об улучшении LS на 3 процентных пункта (т.е. 10% WER снижается до 7% WER) - вы должны относиться к этому с недоверием. Мой первоначальный конвейер, построенный за 1-2 дня, вполне мог работать на LS;
- Междоменный перенос (т.е. когда вы тренируетесь по книгам и проверяете по телефонным звонкам) работает, но довольно плохо. Вы можете легко получить + 20pp WER. Также имеют значение такие мелочи, как интонация / разная речь в шумной обстановке;
Итак - вы можете думать о нашем предприятии как о первом шаге к предоставлению набора общедоступных моделей для сообщества на нашем языке (русский, большинство наших методов масштабируется на другие языки) и приближению момента Imagenet / созданию достаточно хороших моделей STT. для публики.
Можно сказать, что сейчас мы по колено в данных. Чтобы добиться успеха, нам нужно будет пойти глубже! Пожалуйста, остановите меня от создания этих ужасных каламбуров.
Ищу участников
Если вы готовы внести разумный вклад в наш набор данных / предприятие - добро пожаловать! Мы постараемся опубликовать как можно больше материалов, насколько это возможно.
Свяжитесь с нами здесь.
Вы можете оформить это так. Если 4 человека (не работающие 100% времени только над этим проектом) могут иметь значение, возможно, ваше добавление склонит чашу весов к созданию действительно гибкой развертываемой модели?
Как не делиться наборами данных
Прежде всего, вот список вещей, мне не нравится, что люди все время делают, когда делятся наборами данных:
- Очевидно, платный доступ без возможности заранее проверить, что вы получите;
- Позиция академической башни из слоновой кости - «наш набор данных крутой и большой, но бесполезный в реальной жизни»;
- Стены регистрации. Да, «наш набор данных общедоступен, но мы будем делиться им только с избранными». Эта вещь. И да, если мы решим не делиться этим с вами, вы не получите уведомление. Или скорее всего - модератору никто не платит;
- Совместное использование через Google Drive (кстати, вы можете использовать
wget
с Google Drive, вам нужно загрузить cookie и использовать их структуру ссылок) или что-то, что полагается на временные / динамические ссылки. В идеале вы должны просто использоватьwget
или лучшеaria2c
для получения данных; - Плохой хостинг, плохой CDN, плохие скорости. Смешно, когда люди делятся набором данных, который, вероятно, будет стоить более 100 000–1 млн долл. США, чтобы аннотировать с нуля вручную, но сэкономить 100 долл. США в месяц на фактическом правильном размещении набора данных;
- Обмен через торрент… без активных сидов со скоростью восходящего канала не менее 100 Мбит / с. Академические торренты - это здорово, но сидов нет в любое время;
- Плохая организация папок, отсутствие файлов метаданных, нелогичная структура;
- Раздутые, устаревшие инструменты и форматы файлов, используемые для загрузки набора данных (привет
xml
и наборы данных обнаружения объектов); - Запутанный и непонятный код для чтения таких данных. Вы можете творить чудеса с одним лайнером в пандах. Нет, правда;
- Нет возможности проверить ваши данные;
- Обычно не заботятся о пользователях;
- Обмен данными в проприетарных форматах / продвижение какой-либо формы повестки дня;
Мы приложили разумные усилия, чтобы не допустить ни одной из следующих ошибок:
- Прежде всего, все ссылки являются общедоступными. Мы получили большую часть наших данных из Интернета, поэтому мы возвращаем все, что можем;
- Мы этого пока не делали (помогите нам, почему бы и нет), но вы можете просто написать скрипт, который бы все скачивал, все распаковывал, проверял md5-суммы и файлы за один раз;
- Набор данных размещается в AWS-совместимом сегменте с CDN - скорость загрузки будет хорошей. Вы можете использовать
aria2c
с флагом -x для более быстрой загрузки файлов; - Данные в основном проверяются и записываются в одном и том же формате;
- Данные собираются в дисковой БД, оптимизированной (подробности см. В репо) для работы даже на жестких дисках (мы не тестировали). Я считаю, что RAID-массив или кеш NVME для вашего массива жестких дисков полностью решит проблему ввода-вывода (мы сами используем SSD-диски NVME);
- Файл метаданных;
- Некоторые элементарные фрагменты кода, которые можно взломать, для облегчения старта;
Поиск мотивации, изменение ситуации, этика и мотивация
Наконец, я хотел бы отметить несколько моментов:
- После того, как я сделал базовый прототип и набор данных, я был действительно разочарован результатом. Если бы не дельные советы, опыт и сотрудничество Юрия - наверное, я бы отказался от проекта. Юрий, я бесконечно благодарен за вашу помощь. Да, я видел, что STT по-русски созрела для момента ImageNet, но мы бы не остались мотивированными, если бы не вы;
- Очевидно, что даже если мы не сможем предоставить пригодные для использования / надежные модели для общественности, наши данные / модели будут служить первым шагом в этом направлении;
- «О, такой набор данных должен стоить целое состояние». Да, создание чего-то подобного с нуля, вероятно, будет стоить миллионы. Но мы не одиноки, и жизнь - это не игра с нулевой суммой, так что это проще;
- Жизнь - это не игра с нулевой суммой, поэтому мы увидели возможность сделать набор данных общедоступным - и мы это сделали;
- Нет, использовать данные так, как мы их, не является неэтичным. Прежде всего, мы используем 100% данных - мы их туда не помещали. Кто-то сделал. И мы не используем данные для тех же целей, для которых они были загружены;
- И, наконец, слон в комнате. Публикуя такой набор данных, мы приближаем надвигающуюся судьбу, описанную в книге Оруэлла «1984». Да и нет. Видите ли, я не верю, что возможно достичь такой точности, чтобы на самом деле заключение людей в тюрьму на основании результатов STT имело экономический смысл. Если ваш реальный WER составляет 10% - для большинства бизнес-приложений вы создали потрясающий продукт! Но сажать людей в тюрьму - это уже слишком - вы просто будете обрабатывать ложные срабатывания. Я понимаю, что в более цивилизованных странах для совершения таких действий требуется решение суда. Я считаю, что есть некоторые другие технологии, которые ВНУТРЕННИЕ более токсичны (например, распознавание лиц), чем STT. В конце концов - если вы хотите сказать что-то наедине - скажите что-нибудь наедине (используйте шифрование или просто поговорите лично). Вы не можете выйти на улицу наедине. Я понимаю, что речь идет о массовом применении таких технологий, но даже если вы замышляете что-то схематичное - это ваш выбор - позвонить кому-нибудь, чтобы поговорить об этом. Ходить в торговый центр и быть задержанным из-за того, что вы выглядите как представители какого-то этнического меньшинства (i), прежде всего, уже проблема во многих странах (ii) - это не ваш выбор. Скрытие своей внешности также может вызвать вопросы;
- «Ваш набор данных отстой, потому что X»! Да, пожалуйста, оставьте отзыв, но сделайте его логичным, в идеале напишите нам по электронной почте или напишите о проблеме с Github. В основном мы просто собирали все данные, которые могли получить. Но если вы так заботитесь, вы можете внести свой вклад !;
- Я также люблю ad hominem (такие люди всегда в конце концов всплывают) такие критические замечания, как «вы делаете вид, что занимаетесь высокими моральными принципами, делая что-то (то есть делитесь набором данных), почему вы сделали Y». Я в основном обращался к этому двумя пунктами выше;