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». Я в основном обращался к этому двумя пунктами выше;