Как мы создаём новые языки в Yandex SpeechKit. Рассказываем на примере узбекского |
||
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2023-06-19 16:01 алгоритмы распознавания речи, распознавание образов, алгоритмы машинного обучения Всем привет! Меня зовут Антон Ермилов, я руковожу командой разработки эффективных моделей машинного обучения в Yandex Cloud. Самый популярный среди наших ML-сервисов — Yandex SpeechKit, сервис распознавания и синтеза речи. В SpeechKit мы уже создали модели распознавания речи для 10 европейских языков, турецкого и казахского, а также модели синтеза речи для пяти языков. Недавно мы добавили узбекский язык. В этой статье я расскажу на примере узбекского, как мы добавляем новый язык в сервис: как создаются технологии синтеза и распознавания речи, как мы обучаем модели, какие встречаются сложности. Примерно с середины 2022 года к нам в команду стали приходить регулярные запросы от технологических партнёров и клиентов на узбекский язык. Мы оценили перспективы и решили добавить синтез и распознавание на узбекском в SpeechKit. Как создаётся новый язык Несмотря на то что пользователи не всегда разделяют речевые технологии на синтез и распознавание, это два кардинально разных по созданию и эксплуатации продукта. Сейчас в Yandex Cloud не все языки имеют и синтез, и распознавание. Дело здесь в потребностях клиентов для каждого конкретного языка: для целей речевой аналитики синтез не нужен, а для озвучки текстового контента, например создания аудиокниг, не нужно распознавание. Однако в случае с узбекским было понятно, что нам нужны обе технологии, так как основной запрос от клиентов был на голосовых роботов. Самое важное при создании моделей и синтеза, и распознавания — иметь хорошие базы для обучения. Эти базы организованы одинаково — аудио с точной текстовой разметкой, а вот требования к процессам различаются. В случае синтеза аудио должно быть максимально качественными, а в случае распознавания — максимально близким к тому, которое планируется распознавать. В нашем случае это преимущественно аудио из телефонного канала, то есть сжатый до 8 кГц звук с посторонними шумами и помехами на линии. Мы берём для базы распознавания образцы телефонных аудиозаписей из двух источников: краудсорсингового сервиса, где пользователи озвучивают заданный текст, и переданных нам материалов клиентов и партнёров, которые до передачи были очищены от персональных данных и конфиденциальной информации. Процесс создания синтеза: четыре нейросети под капотом Для создания синтеза на новом языке нам необходимы записи речи хорошего диктора длительностью около 30 часов. Хорошего — значит, помимо приятного голоса, диктор должен ещё правильно дышать, иметь стабильный тембр, правильную, соответствующую контексту, подачу, хорошую дикцию. Также имеет большое значение место, где записывается диктор. Например, фоновый шум даже в минимальном объёме может вызвать артефакты и помехи в синтезе. При записи диктора обычно присутствует войскоуч — специалист, который следит за тем, чтобы диктор строго следовал тексту, не менял манеры повествования. Кроме того, коуч не пропускает предложений с неправильным дыханием, кашлем, посторонними звуками, вовремя предлагает диктору передохнуть, чтобы голос не менялся, и в целом следит за корректностью поведения диктора. Вычищенный от некорректных дублей материал используется для обучения модели. Но перед обучением ML-модели данные нужно привести к специальному формату: извлечь акустические признаки из аудиодорожек, снять интонационный контур, предобработать тексты. Расскажу вкратце, как устроена модель синтеза речи. Она состоит из акустической модели, которая объединяет предсказание интонационного контура, длительностей символов и акустических признаков речевого сигнала, и вокодера. Вокодер использует выход акустической модели для генерации самой аудиозаписи. Таким образом, целиком модель синтеза речи состоит из четырёх компонентов, которые в зависимости от используемой архитектуры могут обучаться независимо или совместно. На вопрос, какой из вариантов обучения является правильным, даже мы пока не можем ответить однозначно, а потому продолжаем активно проводить эксперименты в этом направлении. После обучения модели синтеза речи нельзя сразу её использовать, нужно сначала убедиться в том, что качество работы модели удовлетворит ожидания пользователей. Для этого мы просим пользователей краудсорсинговой платформы оценить, нравится ли им результат работы синтеза. С помощью набора специальных вопросов можно отлавливать разнообразные проблемы в синтезированных записях: механические шумы, «проглатывание» некоторых звуков или неправильную расстановку акцентов и интонаций во фразах. Таким образом, в работе по подготовке модели синтеза речи участвуют не только разработчики и аналитики, но и тысячи людей, занимающихся краудсорсингом. Синтез уникального голоса Многие компании хотят, чтобы голос в их коммуникациях с клиентами был уникальным. С того момента как мы создали синтез на новом языке, в том числе на узбекском, мы используем технологию Brand Voice — синтез уникального голоса. Можно записать своего диктора или найти диктора с нашей помощью. Чтобы создать Brand Voice на узбекском, понадобится около 20 часов записей диктора. С каждым новым проектом это время будет сокращаться. Для синтеза голоса нового диктора на русском языке сейчас требуется всего около 2 часов. Для нового диктора мы проводим запись в студии, контролируем речь, нарезаем и готовим записи для обучения модели и создаём модель. Голосового помощника можно использовать, например, для озвучивания напоминаний о записи к врачу или для подтверждения заказов. Пример записи диктора на русском языке Пример записи на русском языке: склейка фраз диктора Распознавание речи на узбекском и мультиязычная модель Для распознавания требуется гораздо больше данных, чем для синтеза. Потому что синтезируем мы один конкретный голос, а распознавать требуется очень разнородную речь: разные голоса, манеры речи, разные типы акустики. Чтобы собрать датасет для распознавания, мы используем более широкий набор источников. Это и аудио из открытого интернета, и специально записанное аудио в нужном формате, и датасеты от внутренних заказчиков — сервисов Яндекса. Все записи должны быть точно размечены, то есть каждому слову на аудио должно соответствовать его буквенное значение. Для того чтобы этого достичь, у нас выстроен процесс сбора данных с использованием краудсорсингового сервиса. Например, рассмотрим процесс транскрибации неразмеченных аудио с помощью краудсорсинга. При разметке клиентских записей все аудио анонимизируются, разбиваются на маленькие кусочки, каждый из которых затем предлагается записать текстом.Проверку правильности полученной разметки мы также доверяем краудсорсингу: если несколько исполнителей сошлись в том, что расшифровка записи корректна, этот кусочек используется нами для обучения или оценки качества модели. SpeechKit непрерывно развивается, клиенты регулярно приносят новые аудиозаписи для распознавания. Соответственно, в самих данных мы практически не ограничены. Но чем больше исполнителей на конкретном языке готовы нам помогать, тем быстрее мы размечаем имеющиеся данные. После сбора все данные предобрабатываются: тексты приводятся к единому виду, а аудиозаписи аугментируются — меняются частоты, скорость, громкость. Это нужно, чтобы модель училась распознавать аудио разного качества: с диктофона, с телефона, из шумного помещения, с разными шумовыми эффектами, высокой и низкой частотой. При этом тексты распознавания должны генерироваться единообразно. Для узбекского это важно в том числе из-за наличия апострофов (прямого Хочется отметить, что все языки в SpeechKit работают в рамках единой мультиязычной модели. Это возможно во многом благодаря её трансформерной архитектуре. Модель обучается распознавать не только узбекскую речь, но и речь на других языках. С одной стороны, это облегчает жизнь разработчикам, потому что обучение и эксплуатация единой модели требует меньше ресурсов. С другой стороны, такой подход помогает модели лучше обучаться распознаванию языков даже с малым количеством данных за счёт переиспользования информации из других языков. Например, для узбекского это работает благодаря его схожести с турецким и казахским языками, которые мы уже давно умеем распознавать. Особенная узбекская латиница В Узбекистане уже больше 20 лет используется латинский алфавит. При этом, помимо стандартных букв, есть ещё несколько дополнительных букв с особыми, характерными для узбекского языка звуками. А также есть одна буква, которая звучит не так, как в других языках с латиницей, — это буква «X». В узбекском она обозначает твёрдый Например, популярная в Узбекистане машина Nexia: марка написана на английском, и жители Узбекистана привыкли читать это как «Нексия», но синтез произнесет Нэхия и будет формально прав. Ещё одна особенность в том, что узбекский алфавит активно меняется. Добавляются и изменяются новые буквы, и нам приходится учитывать это в распознавании и синтезе, но при этом не отказываться от старых обозначений, так как не все пользователи успевают за изменениями. Процесс нормализации После того как модель синтеза научилась произносить звуки, соответствующие конкретным буквам, а модель распознавания – писать буквы, соответствующие конкретным звукам, начинается следующий этап работы над языком, менее очевидный, чем первые, — нормализация. Это перевод числительных, сокращений и символов в оптимальный для использования формат. Допустим, если вам нужно озвучить номер машины, то проще отправить в синтез запрос Х777АХ750, но без нормализации модель не сможет это озвучить и потребуется вводить запрос «ха семьсот семьдесят семь…». Большинство людей так делать не готовы, поэтому мы и проводим нормализацию. Делаем технологию поэтапно, начиная с числительных и впоследствии дорабатывая более редкие сценарии, такие как даты, популярные сокращения (вроде «ул. Пушкина д. 4, кв. 1») и другие. Пока это не слишком быстрый процесс, потому что он требует и понимания особенностей языка, и наличия соответствующих данных — параллельных корпусов с текстами в «сыром» и нормализованном виде. Для этого мы сейчас пытаемся по максимуму использовать все возможности: ищем открытые датасеты, собираем синтетические данные там, где это возможно, и подключаем краудсорсинг для нормализации текстов с нужными типами сущностей — адресами, датами, сокращениями. Некоторые тут могут сказать, что все эти сложности со сбором данных не нужны — можно же делать нормализаторы на правилах. И они будут отчасти правы, поскольку в некоторых языках отдельные типы нормализаций действительно могут быть легко реализованы с помощью правил. Например, нормализация чисел в английском. Проблема возникает в тот момент, когда нормализация начинает зависеть от контекста, а построение правил начинает требовать работы нескольких экспертов-лингвистов. Нам же хочется делать универсальную технологию, применимую одновременно для нормализации и денормализации текстов, сравнительно легко переносимую на другие языки и не требующую очень глубокого погружения в особенности языка. Бесконечная история: улучшение языка после создания После того как мы создали первую версию языка, начинается следующая часть работы — его улучшение. Эта часть может продолжаться бесконечно. Даже имея отличное качество распознавания на русском языке, мы по-прежнему находим области для улучшения. Это могут быть слова узкой тематики, такие как национальные блюда или юридические термины, а могут быть новые акустические условия — аудио с диктофона или с микрофона в шумном помещении. В Yandex Cloud выстроен процесс дообучения моделей, работает он на основе обратной связи от клиента. Есть два вида данных, которые мы используем для дообучения: аудио, которые мы размечаем и добавляем в модель, и тексты, которые мы озвучиваем и так же добавляем в модель. Работы по дообучению всегда бесплатны для клиента. Для улучшения синтеза нам важно учесть на своей стороне особенности, необходимые всем клиентам, такие как нормализация, и дать каждому проекту инструмент для настройки индивидуальных нюансов, например звучания фамилий и названий товаров. Для этого мы обучаем наши модели синтезировать речь не только из текста, но и из его фонемной записи, которая, в отличие от текста, не зависит от особенностей конкретного языка. И в таком варианте появляется возможность корректировать произношение отдельных слов, если они должны быть озвучены не по правилам языка. Узбекский — шестнадцатый язык в SpeechKit. Что дальше? Для узбекского языка сейчас доступны синтез и распознавание, проводится нормализация. Также мы работаем над улучшением процесса создания нового языка, чтобы добавлять другие языки быстрее. В русском мы расширяем функционал моделей распознавания — добавляем определение эмоций и пола говорящего. Планируем добавить определение сущностей, чтобы распознавать, какие фрагменты аудио являются фамилией, адресом, датой. После того, как реализуем всё это для русского, будем протягивать в другие языки. Источник: u.habr.com Комментарии: |
|