Как стать автором
Обновить

Комментарии 19

Слово должно быть другое. Например, «Передохнуть»

В английском, небось, всё давно решено с ударениями.

Вопрос банальный. Но насколько различаются ошибки при использовании разных моделей?

Закрытые данные - это беда для всех языков. Особенно бесит, когда институт выиграл под это дело грант государственный, а потом не делится.
На Силеро зря ругаетесь. Так то частная компания, которая давала возможность пользоваться бесплатно своими продуктами(не для ком пользования конечно).
То что у вас лучше и открыто(сам пользуюсь вашей библиотекой, спасибо огромное!) позволит создавать еще качественнее TTS-ки. А всякие институты пусть и дальше сидят со своими данными.

Статья хорошая, и проблема актуальная. Но было бы здорово увидеть в тексте расшифровку аббревиатуры, которая используется больше 20 раз. Например, через тэг abbr.

Я не питаю к Silerо tts никакого негатива, но после слов про 100% решения ударений в этой статье, и убедившись в обратном на основании результатов теста, слегка разочарован.

Пиар не имеет цвета, поэтому большое спасибо за бесплатную рекламу на Хабре. Но из того как делался тест очевидно, что задачей было скорее набросить на вентилятор (или какие-то иные цели) не разобравшись в вопросе, нежели чем делать какой-то даже квази-научный обзор.

Я же разочарован, что человек, который хочет поднять ударения с колен, банально не умеет в анализ (или слишком умеет и подгоняет примеры под свою цель).

но после слов про 100% решения ударений в этой статье

Зачем говорить неправду? Мы никогда не говорили, что решили омографы или научили модели читать стихи.

Модель со 99%+ точностью расставляет ударения для 4М слов, плюс есть некий небольшой словарь исключений, для случаев, когда модель ставит ударение неверно. Омографы "решены" просто выбором более популярного, что дает точность где-то в районе 30-40%.

От себя отмечу, что наша модель расстановки ударений потребляет на 4-5 порядков меньше ресурсов чем ваша. И это решение было сделано намеренно. Но этого вы предпочли тоже не видеть.

Регулярное гудение, шипение и т.д

Если бы вы сделали небольшой рисёч, то вы бы увидели, что мы публично отвечали, что качество публичных моделей были специально снижено из-за коммерческих компаний, абузящих лицензию. В боте и у коммерческих клиентов же сейчас - максимально качественная модель.

Ошибки на обычных словах. Математикой 5-го класса мы высчитываем, что на каждое предложение в среднем у нас по 2.2 ошибки в слове (в стихах)

3 ошибки в словах

Ошибки в текстах мы отдельно проанализируем и напишем, но скорее всего это - скрытые омографы.

Хотя стоп, автор их не выложил (интересно почему):

29 в стихах

Мы перепроверим все стихи и напишем отдельный комментарий, но скорее всего см. ниже.

Зачастую модель скатывается в месиво, где ещё попробуй разбери слова. Особенно это происходит в стихах (ссылка на пример)

Автор статьи подавал тексты без пунктуации, а точнее символ переноса строки у него использовался в качестве знака пунктуации. Но автор предпочёл не видеть этого. В боте мы это пофиксим (благо несложно), а публичные модели скорее являются движком для озвучки, нежели чем коммерческим продуктом

Модель часто игнорирует знаки препинания

Причина такая же как в пункте выше.

Отсюда получается, что в 3.5 случаев из 4 автор банально даже не разобрался как правильно использовать модель.

Плюс отмечу, что скорее всего его модель ударений потребляет на порядок больше ресурсов, чем вся наша модель синтеза. И на два порядка больше, чем наши новые коммерческие модели синтеза:

На графике - число сгенерированных синтезом аудио в секунду. Например на 4 потоках процессора 113 секунд аудио в секунду. Метрики задержки считаются обратным счетом легко.
На графике - число сгенерированных синтезом аудио в секунду. Например на 4 потоках процессора 113 секунд аудио в секунду. Метрики задержки считаются обратным счетом легко.

И чтобы окончательно поставить точку в таком "детальном" разборе приведу примеры.

Вот такой текст подавался на вход:

Не жалею, не зову, не плачу,
Все пройдет, как с белых яблонь дым.
Увяданья золотом охваченный,
Я не буду больше молодым.
Ты теперь не так уж будешь биться,
Сердце, тронутое холодком,
И страна березового ситца
Не заманит шляться босиком.

И постулируется, что всё жует и ломает. Но если подать вот такой текст, то всё работает нормально более менее даже с авторской пунктуацией:

Не жалею, не зову, не плачу, Все пройдет, как с белых яблонь дым. Увяданья золотом охваченный, Я не буду больше молодым. Ты теперь не так уж будешь биться, Сердце, тронутое холодком, И страна березового ситца Не заманит шляться босиком.

С остальными стихами такая же фигня. Репостить "неправильные" смысла нет, просто вбейте "правильный" текст в бота и убедитесь сами.

Поэтому мой комментарий насчет уровня критического анализа в статье: он или отсутствует как класс, или это специально сделано (я не готов верить, что человек этого не увидел), для черного пиара. Но вот что-то не вышло почему-то.

Багулю с переносом строки в боте мы конечно поправим.

Багулю с переносом строки в боте мы конечно поправим.

Фикс в бота накатили.

На данный момент доступно 6 моделей. big (рекомендуется к использованию)

Модель big имеет 178 миллионов параметров

В статье нет банальных понятных метрик:

  • Как быстро модель работает на 1 (4, 6) потоке процессора и какая у нее пропускная способность;

  • Размер самой модели, размер модели со словарём, всего пакета;

  • Размер словаря, количество решаемых омографов, количество решаемых омографов с буквой ё;

  • Какие-то вменяемые метрики точности на всех словах, омографах на сотнях тысяч или миллионах употреблений или слов (30 - 100 предложений можно зачеррипикать);

И если это конечно "опенсорс", а не банальный пиар, то в статье не вижу ссылок на датасеты, вы же критикуете Яндекс за это. Хотя стоп какая-то ссылка нашлась, но уже показывает 404.

Еще скажу например, что наша модель на 2 порядка меньше вашей, работает менее 1 мс на 1 потоке процессора и занимает менее 1 мегабайта места.

В качестве примера статьи с метриками приведу опять же нашу статью, на которую вы ссылались, но ваш анализ статьи закончился вырыванием из контекста 1 предложения.

Но из того как делался тест очевидно, что задачей было скорее набросить на вентилятор (или какие-то иные цели) не разобравшись в вопросе, нежели чем делать какой-то даже квази-научный обзор.

Тут не было критики, была небольшая демонстрация, дополнением к информации о публикации модели, поэтому не нужно раздувать тут свои теории заговора.

Зачем говорить неправду? Мы никогда не говорили, что решили омографы или научили модели читать стихи.

Модель со 99%+ точностью расставляет ударения для 4М слов, плюс есть некий небольшой словарь исключений, для случаев, когда модель ставит ударение неверно. Омографы "решены" просто выбором более популярного, что дает точность где-то в районе 30-40%.

От себя отмечу, что наша модель расстановки ударений потребляет на 4-5 порядков меньше ресурсов чем ваша. И это решение было сделано намеренно. Но этого вы предпочли тоже не видеть

  1. Я тоже не сказал, что у вас решены были ударения в стихах. Я сказал, что от того, кто пишет "модель выдает 100% точность на нашем словаре" ожидал большего. Разочарованием было значительное отставание вашей модели от остальных, ведь она ошибалась в том числе в обычных словах, а не только стихах.

  2. Тест был простой и проводился в равных условиях, соответственно никаких поблажек из-за размера или чего-то ещё не будет.

  3. Довольно странно хвастаться скоростью, жертвуя при этом качеством.

Ошибки в текстах мы отдельно проанализируем и напишем, но скорее всего это - скрытые омографы.

Хотя стоп, автор их не выложил (интересно почему)

Выложил, я считал ошибки в словах и омографах в одном и том же предложении. Действительно, здесь мой косяк.

Прикрепляю номера примеров, где у вас были банальные ошибки:

  1. Ароматную (гул)

  2. голУбый

  3. вадУ

  4. собрАлись

Также, прогнал эти примеры через вашего бота, и он ошибся на всех, кроме гудения (это не ошибка). От себя добавлю: скорее всего, вы используете seq2seq модель для простановки ударений, ведь слову “воду” в другом предложении оно читает правильно. Думаю, вы могли бы достичь большего качества, обрабатывая каждое слово отдельно. Не исключаю, что это могли быть и глюки ттс, с уверенностью сказать не могу, т.к. код отсутствует)

По результатам перетеста, после фикса переносов строк, ошибок в стихах стало 8, вместо 29. Итого всего 27 ошибок, в основном на омографах.

С остальными стихами такая же фигня. Репостить "неправильные" смысла нет, просто вбейте "правильный" текст в бота и убедитесь сами

Поэтому мой комментарий насчет уровня критического анализа в статье: он или отсутствует как класс, или это специально сделано (я не готов верить, что человек этого не увидел), для черного пиара. Но вот что-то не вышло почему-то.

Багулю с переносом строки в боте мы конечно поправим.

То, что ваш синтез не обрабатывает переносы строк проблема ваша и только ваша. Я не эксплуатировал баг, т.к. в каждый синтезатор речи автоматически подавался текст такой, какой он был изначально. Опять же, условия равные. Кстати, несмотря на исправление ошибки модель все равно сильно шумит. (Зачем публиковать модель заведомо хуже, если люди будут пользовать 3-1 версией?)

В статье нет банальных понятных метрик: 1) Как быстро модель работает на 1 (4, 6) потоке процессора и какая у нее пропускная способность; 2) Размер самой модели, размер модели со словарём, всего пакета; 3) Размер словаря, количество решаемых омографов, количество решаемых омографов с буквой ё; 4) Какие-то вменяемые метрики точности на всех словах, омографах на сотнях тысяч или миллионах употреблений или слов (30 - 100 предложений можно зачеррипикать);

Насчет метрик вы правы, но

  1. У меня нет набора данных из тысяч размеченных предложений, все тесты были ручные

  2. Как вы представляете сравнение с остальными ттс? Были бы тысячи аудиозаписей, которые надо послушать. Если вы готовы поделиться таким набором данных, а потом помочь их прослушать, то я с удовольствием приведу это сравнение.

И если это конечно "опенсорс", а не банальный пиар, то в статье не вижу ссылок на датасеты, вы же критикуете Яндекс за это. Хотя стоп какая-то ссылка нашлась, но уже показывает 404.

Все ссылки на датасеты, на которых училась ruaccent, опубликованы в репе. Их всего 3. Забавно совпало, незадолго до публикации вашего коментария, представители нкря попросили скрыть датасет парса нкря. Вы проигнорировали оставшиеся 2 ссылки, уверен, это банальная невнимательность и ни в коем случае не манипуляция.

Еще скажу например, что наша модель на 2 порядка меньше вашей, работает менее 1 мс на 1 потоке процессора и занимает менее 1 мегабайта места.

Я уже понял, что ваша модель легче и быстрее, не нужно столько саморекламы) Все-таки я один (школьник-энтузиаст), а у вас большой прибыльный (надеюсь) бизнес и команда.

Однако, я тоже работаю над уменьшением размера своих открытых моделей, но пока на все времени не хватает.

Тем не менее, как я уже сказал, жертва качеством в угоду скорости не есть хорошо.

В любом случае, спасибо за критику.

В итоге, если убрать набросы и просуммировать то, что осталось в сухом остатке остается:

  • Слово голубой;

  • Блуждающая ошибка со словом вода;

Всё остальное - это или следствие некачественного анализа, или наоборот, супер качественный точечный наброс.

В любом случае, описанное в статье никак не отражает реальное состояние нашего синтеза речи. И я бы попросил вас сэкономить мне время на написание ответа и написать опровержение и хотя бы закрепить его в виде отдельного комментария сверху статьи.

Тут не было критики, была небольшая демонстрация

И по абсолютно случайному стечению обстоятельств все выбранные вами критерии оценки качества синтеза сразу "сломались", когда убрали переносы строк.

И конечно я заметил иллюстрацию под этой "демонстрацией" и сделал соответствующие выводы.

Довольно странно хвастаться скоростью, жертвуя при этом качеством.

Довольно странно называть целенаправленную атаку через неподдерживаемый токен жертвой качеству.

Никто качеством не жертвует. Мы заявляем точность 100% на некоем словаре. Словарь может быть неидеален, его довели до какого-то состояния, но работа по идее бесконечная априори.

Всегда можно найти какой-то сабсет неправильных слов в словаре, собрать 30 предложений с ними, добавить "невидимых" токенов, и бац, скандал на пустом месте. Откровенно говоря, это скорее напоминает уже некоторые политтехнологии)

Что же касается скорости, разница в 5 порядков - это не хвастовство, это следствие целенаправленной работы и заранее поставленных приоритетов. Еще мы умудрились простановку на 4М слов сжать в ~1 мегабайт, но если сам себя не похвалишь, то будешь читать вот такие статьи на Хабре.

Прикрепляю номера примеров, где у вас были банальные ошибки:

Гудения в боте я не услышал. Есть неидеальность разных голосов, но тут причины мало связанные с ударениями.

"Голубой" - это косяк словаря, тут спасибо, сделаем еще одно просеивание нашего словаря против вашего. С "водой" - это косяк скорее всего акустической модели, такие баги возникают по весьма рандомным причинам.

Остальное это омографы. "Cобрались" имеет 2 возможных прочтения, и мне лично неясно какое выбрать.

По результатам перетеста, после фикса переносов строк, ошибок в стихах стало 8, вместо 29. Итого всего 27 ошибок, в основном на омографах.

О чудо. И все 4 критерия оценки синтеза тоже испаряются - и не жуёт, и не гудит, и оказывается нормально читает.

И да, о решении омографов мы в принципе не заявляли.

То, что ваш синтез не обрабатывает переносы строк проблема ваша и только ваша.

В каждый синтезатор речи автоматически подавался текст такой, какой он был изначально

В боте мы эту нехитрую обработку уже добавили.

Но с таким же успехом можно попробовать придумать другие "проблемы" - например не ставить пробелы после знаков препинания - и появится новая "только наша" проблема. Или заменять русские буквы на похожие латинские аналоги. Или заменять пробелы на другие пробельные символы. Ведь это же было в изначальном тексте.

И внезапно пользователи миллион раз такое присылали, например копируя с сайтов с анекдотами (там люди так изголяются, видимо, чтобы отслеживать кто у кого копирует анекдоты).

Имея опыт отсмотра того, что широкая публика присылает в бота - есть разумный уровень правки текста, особенно для публичной модели, которая вообще никак не претендует на нормализацию текста, и об этом написано.

Если вы готовы поделиться таким набором данных, а потом помочь их прослушать, то я с удовольствием приведу это сравнение.

Тут верну вопрос к вам, потому что вы автор статьи. Любой праздник за ваши деньги.

От себя добавлю: скорее всего, вы используете seq2seq модель для простановки ударений, ведь слову “воду” в другом предложении оно читает правильно.

Всегда интересно узнать много нового.

Все-таки я один (школьник-энтузиаст). Однако, я тоже работаю над уменьшением размера своих открытых моделей, но пока на все времени не хватает.

Есть поговорка - назвался груздем - полезай в кузовок.

Так, для вежливости (чтобы автор мог спокойно вернуться с работы и ответить) я специально выждал чуть более суток, но какого-либо опровержения / ответа / pinned комментария я не дождался, зафиксируем это тут.

И да, вот ответ на вашу картинку с тигром на понятном вам языке:

Вопрос, а не пробовал доразметить? Например сделать модель первого поколения, потом прогнать её на учебном наборе данных или по принципу кроссвалидации и посмотреть уже глазами на примеры, которые ошибочно размечались моделью? Есть предположение, что при таком подходе как раз неправильно размеченные слова будут вызывать ошибки чаще всего и датасет можно будет доразметить малой кровью.

Я использовал корпус только для омографов, с ними все нормально там

Добрый день! На правах человека, имеющего к НКРЯ непосредственное отношение, отвечу на пост.

Во-первых, не стоит краулить ресурсы, если при этом нарушается лицензия на использование сервиса. Наша лицензия расположена тут: https://ruscorpora.ru/page/terms/. Мы открыты к сотрудничеству и регулярно делимся имеющимися датасетами. Наиболее часто запрашиваемые перечислены на странице https://ruscorpora.ru/page/corpora-datasets/. Если вам необходим специфический датасет, об этом можно написать на почту, указанную на этой же странице. Для получения данных необходимо будет описать сценарии использования и заключить лицензионное соглашение на предоставление доступа к данным. Действительно, улаживание всех формальностей и подготовка датасета займёт какое-то время, но зато получившийся результат будет валиден с легальной точки зрения.

Во-вторых, про критику качества разметки в Акцентологическом корпусе. Приведённые примеры из Наивной поэзии с ошибками не являются ни примерами из Наивной поэзии, ни примерами с ошибками. На скринах представлены стихотворения Муравьёва, относящиеся к 18-му веку. Как нетрудно проверить, в разделе Наивной поэзии нет ни одного текста, созданного ранее 1980 года (https://ruscorpora.ru/s/e0Y5N), и это неудивительно, так как этот раздел состоит из стихотворений, опубликованных на ресурсе stihi.ru. А ошибок на скринах нет, потому что в текстах Поэтического корпуса размеченные слоги (обозначенные иным, чем собственно ударения, знаком гравис над гласной буквой) — это далеко не всегда именно ударные слоги в речи автора. Например, в строке Когда̀ не в шу̀тку за̀немо̀г четыре сильных места (из них два в одном слове), а ударений только три.

И, наконец, существенным недостатком подхода в целом является решение учиться на поэзии, причём всей, которая доступна в НКРЯ. Помимо специфичных ударений в поэтических текстах, ударения со временем нередко меняются. В корпус входят тексты начиная с XVIII века, и по нему можно проследить эволюцию русского ударения: когда люди вместо вёрсту, приклеи́л, Гамле́т, а́нглийский стали говорить версту́, прикле́ил, Га́млет, англи́йский, у каких авторов и дикторов сосуществует несколько вариантов, какие используют более архаичное ударение или, напротив, опережают время. Кроме того, раздел Наивной поэзии размечен в автоматическом режиме (подробнее об истории создания, составе корпуса и видах разметки в нём можно прочитать на странице описания корпуса: https://ruscorpora.ru/corpus/accent). Поэтому обучать на совокупности всех данных Акцентологического акцентуатор для обычного TTS — плохая затея.

236 миллионов рублей на такой криво размеченный датасет... либо я просто чего-то не понимаю.

Есть такая мировая практика - приватизация прибылей и национализация убытков.

Яндекс по сути национализировал убыток от создания корпуса, по сути никуда его не выложил (то есть выложил для галочки), а лицензия краулить запрещает.

А дальше коммерческая компания, получившая ~236м на корпус из наших с вами налогов и имеющая яркую анти-российскую позицию по сути приватизирует прибыль от русского национального корпуса, решая кому дать, а кому не дать корпус.

Если вам необходим специфический датасет, об этом можно написать на почту, указанную на этой же странице.

На почту можно не ответить, или отвечать 9 месяцев, или ответить по формальному признаку, или потерять письмо.

Если всё реально делается на наши налоги и всё супер открыто и для людей, не поделитесь статистикой предоставлений / отказов в предоставлении / игнорирования обращений по корпусу по годам его существования с указанием подробных причин отказов?

Так больше людей будет обращаться к вам. Я пропиарю эту ветку по всех своих каналах, NLP получит сильный буст.

заключить лицензионное соглашение на предоставление доступа к данным

А лицензионное соглашение подписывается не с израильской или казахской компанией?

Мы открыты к сотрудничеству и регулярно делимся имеющимися датасетами.

Отлично! Тогда обращаюсь к вам от имени ООО Силеро и прошу выделить нам анонимизированную часть корпуса с правильно расставленными ударениями (в соответствии с современными нормами языка), если таковая имеется.

Цель - добавление функционала расстановки ударений в омографах в наш публично доступный синтез речи.

Для поддержания открытости диалога, ответить прошу мне публично под этим комментарием на Хабре и приложить ваш лицензионный договор и описать кратко типовые сроки / финансовые / юридические условия.

Ответить прошу в течение 5 рабочих дней.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории