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

В этот раз ситуация такая:

  • В этот раз Tinkoff и VK не опрашивали;

  • Мы не стали опрашивать любых иностранных вендоров по очевидным причинам;

  • В этот раз к списку доменов для валидации добавились "шумы" - проверка того, какой % датасета из разнообразных шумов различные модели "проигнорируют" и не будут выдавать якобы "распознанную" речь;

  • В этот раз мы добавили в сравнение не только закрытые проприетарные системы, но и так называемую открытую "foundation model" от Сбера - GIGA AM;

  • Разнообразные публично доступные рекуррентные модели мы не стали опрашивать, так как по нашему мнению они или недостаточно продуктовые, или их маленькие версии имеют слишком низкое качество;

  • Тестирование наших моделей, Сбера и Яндекса производилось буквально недавно - в начале октября;

  • Из своих моделей в данный раз для адекватности сравнения мы представляем быструю GPU-модель и чуть более медленную GPU модель.

Изменения Методологии

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

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

Вкратце - сравниваются только денормализованные данные (только буковки) без буквы ё, потому что мы сравниванием распознавание, а не только, насколько шаблоны нормализации текста соответствуют шаблону в ground truth.

WER считается сразу целиком для датасета, а не среднее арифметическое всех аудио.

Сухие метрики

Основная метрика - WER (word error rate), выраженный в виде процентов для наглядности. Для шумов вместо WER мы просто считаем % аудио в штуках, где модель выдала что-либо кроме "пустоты".

Краткий анализ

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

Во-первых, опять за полтора года все сервисы приятно подросли по своим метрикам.

GIGA AM для публичной нерекуррентной модели показывает очень впечатляющие результаты. Примерно на уровне платных моделей Сбера прошлого или позапрошлого года. При этом видно, на чём её тренировали, но она показывает впечатляющую генерализацию в первую очередь на сложных доменах.

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

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

В глаза также повторно бросается большое отличие метрик Сбер и Яндекса на датасетах "умной колонки". В принципе логично и предсказуемо - у них обоих такая колонка есть.

У нашей быстрой модели и у Сбера есть некоторая проблема с шумами. Мы использовали синхронное АПИ для опроса, но на практике есть и другие способы подавления "шумов".

Самым большим сюрпризом для нас были метрики нашей самой качественной модели. Она, естетственно, не рекуррентная, но она приятно удивила. Мы буквально до последнего момента не знали, что она такая и буквально недавно накатили её в демку.

Смешные картиночки

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

Скрытый текст

Комментарии (14)


  1. E_BEREZIN
    17.10.2024 05:08

    Интересно, почему для Умной колонки:
    - Tinkoff одинаково плохо для "близко" и "далеко"
    - Sber и Yandex одинаково хорошо для "близко" и "далеко"


    1. snakers4 Автор
      17.10.2024 05:08

      Ну тут понятно +/-, потому что Tinkoff давно опрашивали и у них нет умной колонки и модель плохо на нее генерализовалась, поскольку данных из домена для обучения не было.


      1. E_BEREZIN
        17.10.2024 05:08

        Загадка. Так как умные колонки разговаривают человеческим голосом, а не систезированным (явно нечеловеческим).


        1. snakers4 Автор
          17.10.2024 05:08

          А как голос, которым разговаривает умная колонка (100% там синтез, ведь не актриса же там всем отвечает сидит) связан с телеметрией, которую она собирает?

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

          Для синтеза обычно пишут актёры, ну или данные нужны более близкие к идеалу, не что-то из колонки там вдалеке.


  1. AigizK
    17.10.2024 05:08

    А GIGA AM какую использовали? GigaAM-CTC или GigaAM-RNNT?


    1. snakers4 Автор
      17.10.2024 05:08

      CTC


      1. AigizK
        17.10.2024 05:08

        у RNNT качество лучше судя по их метрикам.


        1. snakers4 Автор
          17.10.2024 05:08

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

          Тут это не совсем применимо, так как когда я тестировал (может что-то изменилось) большие рекуррентные сетки для STT всё равно были хуже по качеству (и как минимум на полтора-два порядка медленнее), но в пределе, например в синтезе, можно тестировать решения отличающиеся в миллион раз по стоимости создания, обладания и запуска, когда по факту на практике будет очень мало разницы.


  1. torbasow
    17.10.2024 05:08

    Сервисы-то сервисами, а вот приложение для ПК можете посоветовать?



  1. IgorStepin
    17.10.2024 05:08

    Было бы интересно сравнить с https://github.com/openai/whisper -- как бесплатной базы.


    1. snakers4 Автор
      17.10.2024 05:08

      Мы решили не включать его, а включить GigaAM CTC по ряду причин.

      Когда я тестировал базу и тюненные на более крупной русской датке варианты, были следующие проблемы:

      • Маленькие якобы "быстрые" модели никуда не годятся по качеству;

      • Модель сама по себе рекуррентная, даже в адаптациях и оптимизациях;

      • Большие модели на полтора - два порядка медленее продуктовых решений;

      • Галлюцинации иногда возникают на пустом месте, особенно на реальных, шумных или неидеальных данных;

      • Модель выдает так называемый "translatese" (название авторов), то есть не имея возможности сделать нормальную нормализацию данных, они сделали как получилось.

      По идее все эти недостатки можно исправить, но тут получим следующие грабли:

      • Нужно героически править чужие ошибки;

      • Часть стека будет не поддерживаема в принципе;

      • Тренировка рекуррентных моделей сильно мене приятна.

      Понятно, что всё это можно героически решить, но нужно ли?


      1. IgorStepin
        17.10.2024 05:08

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

        Зачем сравнивать? Чтобы показать, все то, что описано выше (Галлюцинации, translatese, ...) в каких-то цифрах. Тогда проще принимать решение какое решение использовать: сойдет качество на бесплатном ПО или лучше доплатить и получить лучше качество.


        1. snakers4 Автор
          17.10.2024 05:08

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

          Тут речь идёт про эксплуатацию, поддержку, отлажку, поиск ошибок и повышение качества на нужных доменах.