Привет Хабр, решил поделиться небольшой моделью для расстановки ударений, которую обучил на открытом датасете из более чем 400 книг художественной прозы в открыПривет Хабр, решил поделиться небольшой моделью для расстановки ударений, которую обучил на открытом датасете из более чем 400 книг художественной прозы в откры

Акцентор для русского языка для на базе модели со словарем на уровне символов

5м. чтение

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

О чём речь

Разрабатывая систему синтеза речи на базе Silero TTS, столкнулся с проблемой: минимальные ошибки в расстановке ударений всего два процента из 100 приводят к ошибкам в каждом из 5-6 предложений. Для аудиокниг это критично, так процесс "выслушивания" и правки книги на 10000 предожений потребует не менее 10 часов ручного времени.

Сделал свою модель с фокусом на точность в хужожественных книгах. Получилось 99.7% на валидационном датасете. Упаковал в pip-пакет ruaccent-predictor.

Что умеет:

pip install ruaccent-predictor ruaccent "мама мыла раму" # → ма'ма мы'ла ра'му

Код и модель на GitHub, лицензия MIT.

Почему не достаточно Silero stress?

Silero-Stress — классная модель. Быстрая, бесплатная, для большинства задач достаточно точная.

Но:

Что важно

Silero

ruaccent

Точность

~98%

>99%

10k предложений

2-3 мин

~60 мин

Ошибок на 10k

~200

~30

Вес модели акцентора

50 Mb

30 Mb

Моя ниша: когда точность важнее скорости. Подготовка аудиокниг, учебные материалы, эталонные датасеты.

Silero-stress остаётся королём для real-time. Моя модель — для создателей аудиокниг.

Как это работает

Character-level подход

Вместо работы со словами обучил модель на символах. Почему:

  • ✅ Словарь всего 224 символа (vs десятки тысяч слов)

  • ✅ Работает с любыми словами, даже с опечатками

  • ✅ Компактно: 12.5M параметров (~30 MB)

Два формата вывода

# Апостроф после гласной (для чтения) "В лесу' родила'сь ёлочка" # Плюс перед гласной (для Silero TTS) "В лес+у род+илась ёлочка"

Модель обучалась на апострофах, но я добавил автоконвертацию в формат Silero. Получился универсальный инструмент.

Архитектура

Transformer Encoder-Decoder ├─ 4 слоя encoder + 4 слоя decoder ├─ 8 attention heads ├─ 256 dimensions └─ 12.5M параметров

Для сравнения: GPT-2 имеет 117M параметров. Моя модель в 10 раз меньше. На Github выложил все коды подготовки датасета и обучения модели, словарь vocab.json для прозрачности методики обучения.

Данные: 400+ книг

Использовал датасет Accentual-Syllabic Verse in Russian Prose — 400+ художественных произведений с ручной разметкой ударений.

Обработка:

470,000+ строк ↓ фильтрация (заголовки, короткие, без ударений) 224,000 валидных пар ↓ split 202k train + 22k validation

Словарь извлекается автоматически из данных:

  • Кириллица (А-Я, а-я, ё)

  • Пунктуация

  • Латиница (для иностранных слов)

  • Итого: 224 символа

Главная фича: теперь это pip-пакет

pip install ruaccent-predictor ruaccent "привет мир"

Что сделал:

1. Упаковал в PyPI

  • Модель скачивается автоматически при первом запуске

  • Кэшируется локально

  • Работает offline после первой загрузки

2. Добавил CLI

# Быстрая проверка ruaccent "текст для проверки" # Файл целиком ruaccent -i book.txt -o result.txt # Формат для Silero ruaccent --format synthesis "привет" # Через pipe cat file.txt | ruaccent

3. Простой Python API

from ruaccent import load_accentor accentor = load_accentor() # Одно предложение result = accentor("привет мир") # Batch обработка (быстрее) results = accentor(texts, batch_size=8)

Производительность

Умное кэширование

Повторяющиеся фразы ("сказал он", "ответила она") кэшируются:

python

accentor("привет мир") # ~0.5 сек accentor("привет мир") # ~0.0001 сек (из кэша!)

На практике экономит ~30% времени при обработке книг.

Batch-обработка

# Медленно for text in texts: result = accentor(text) # Быстро (в 4 раза) results = accentor(texts, batch_size=8)

Бенчмарки (Mac Mini M4):

Batch Size

Скорость

1

2.5 предл/сек

8

10.1 предл/сек

32

8.7 предл/сек

Оптимум — batch_size=8.

Поддержка железа

accentor = load_accentor(device='auto') # → CUDA (NVIDIA GPU) # → MPS (Apple Silicon) # → CPU (fallback)

Точность: 99.7%

На валидации (22,000 предложений):

  • ✅ Правильно: 21,934

  • ❌ Ошибки: 66

    Сложные составные слова (~40%)

    • "сельскохозяйственный" — путается на внутренних слогах

    Омографы без контекста (~30%)

    • "замок" → за'мок или замо'к? Без контекста сложно

    Поэтические вольности (~20%)

    • Авторская метрика vs обычное произношение

    Редкие слова (~10%)

Важные ограничения

  • Не исправляет "е" на "ё"

"Он подошел" → "Он подоше'л" (не "подошёл")

  • Не ставит ударения на "ё"

"ёлка" → "ёлка" (ё всегда ударная)

  • Не отмечает односложные

"я иду" → "я иду'" (не "я' иду'")

Примеры использования

CLI для быстрых задач

# Проверка $ ruaccent "замок на замке" за'мок на за'мке # Файл $ ruaccent -i book.txt -o book_accented.txt Processing 254 lines... Done in 42s # Формат Silero $ ruaccent --format synthesis "привет" прив+ет

Python для интеграции

from ruaccent import load_accentor accentor = load_accentor() # Простой случай text = "Мама мыла раму." print(accentor(text)) # → Ма'ма мы'ла ра'му. # Batch texts = ["первое", "второе", "третье"] results = accentor(texts, batch_size=8) # Оба формата apostrophe, synthesis = accentor(text, format='both')

Интеграция с Silero TTS

from ruaccent import load_accentor import torch accentor = load_accentor() # Загрузка Silero model, _ = torch.hub.load( 'snakers4/silero-models', 'silero_tts', language='ru' ) # Подготовка текста text = "Мама мыла раму." accented = accentor(text, format='synthesis') # Синтез audio = model.apply_tts(text=accented, speaker='baya')

Кому это подойдёт

✅ Используйте ruaccent-predictor если:

  • Готовите аудиокниги (точность критична)

  • Делаете учебные материалы по русскому языку

  • Создаёте датасеты для других моделей

  • Нужна максимальная точность, время не критично

❌ Используйте Silero-stress если:

  • Синтезируете в реальном времени

  • Восстанавливаете е в ё

  • Хотите обрабатывать омографы через контекст

  • Нужна скорость

Планы развития

Ближайшее:

  • Quantization для CPU (2-3x ускорение)

  • Web-демо для тестирования

  • Docker контейнер с REST API

Среднесрочное:

  • Решение омографов через контекст

  • Одновременно ударения + ё-фикация

  • Специализация под поэзию/прозу

Попробуйте

pip install ruaccent-predictor ruaccent "ваш текст здесь"

Полезные ссылки:

  • GitHub — код, модель, примеры

  • PyPI — установка

  • Датасет — обучающие данные

Обратная связь:

  • Issues на GitHub — баги и предложения

  • Discussions — вопросы и идеи

  • Pull requests — помощь в разработке

Итого

Модель ruaccent-predictor — инструмент для точной расстановки ударений:

>99% точности — меньше ошибок чем у аналогов на художественных текстах
Один pip install — работает из коробки
Два формата — для чтения и TTS
Открытый код — MIT, используйте как хотите

Не заменяет Silero в real-time, но хорош для оффлайн работе. В настоящий момент мой пайплайн включает комбинированную обработку silero-stress и ruaccent-predictor.

Попробуйте и поделитесь опытом в комментариях!

Вопросы к сообществу:

  1. Используете ли модели для расстановки ударений? Какие?

  2. Какая точность достаточна для ваших задач?

  3. Какие фичи были бы полезны?

Источник

Отказ от ответственности: Статьи, размещенные на этом веб-сайте, взяты из общедоступных источников и предоставляются исключительно в информационных целях. Они не обязательно отражают точку зрения MEXC. Все права принадлежат первоисточникам. Если вы считаете, что какой-либо контент нарушает права третьих лиц, пожалуйста, обратитесь по адресу [email protected] для его удаления. MEXC не дает никаких гарантий в отношении точности, полноты или своевременности контента и не несет ответственности за любые действия, предпринятые на основе предоставленной информации. Контент не является финансовой, юридической или иной профессиональной консультацией и не должен рассматриваться как рекомендация или одобрение со стороны MEXC.

Вам также может быть интересно

Кит продает 36 900 ETH для минимизации убытков

Кит продает 36 900 ETH для минимизации убытков

Крупный кит Ethereum продал 36 900 ETH для сокращения убытков после падения рынка.
Поделиться
coinlineup2026/02/05 06:59
Coinbase столкнулся с иском в Неваде по обвинениям в незаконных ставках

Coinbase столкнулся с иском в Неваде по обвинениям в незаконных ставках

Coinbase столкнулась с гражданским иском в Неваде после того, как регуляторы игорного бизнеса штата заявили, что компания предлагала местным пользователям контракты на события, похожие на пари
Поделиться
Bitcoinist2026/02/05 06:00
Адам Уэйнрайт снова выходит на питчерскую горку почтить память Дэррила Кайла

Адам Уэйнрайт снова выходит на питчерскую горку почтить память Дэррила Кайла

Пост «Адам Уэйнрайт снова выходит на горку в честь Дэррила Кайла» появился на BitcoinEthereumNews.com. Адам Уэйнрайт из Сент-Луис Кардиналс в дагауте во время второго иннинга против Майами Марлинс на стадионе Буш 18 июля 2023 года в Сент-Луисе, Миссури. (Фото: Brandon Sloter/Image Of Sport/Getty Images) Getty Images Ветеран Сент-Луис Кардиналс Адам Уэйнрайт — довольно непринужденный парень, который не прочь поговорить с вами о бейсбольных традициях и барбекю или даже пошутить. Эта черта его характера проявилась на прошлой неделе во время нашего звонка в Zoom, когда я впервые упомянул, что я болельщик Чикаго Кабс. Он ответил на упоминание о моем фанатизме: «Пока что, я не думаю, что это интервью идет очень хорошо». Тем не менее, Уэйнрайт вернется на стадион Буш 19 сентября с более серьезной миссией — на этот раз, чтобы почтить память другого бывшего игрока Кардиналс и друга, покойного Дэррила Кайла. Уэйнрайт выйдет на горку не как стартовый питчер, а чтобы выполнить церемониальную первую подачу игры. К нему на горке присоединится дочь Кайла, Сьерра, и вместе они помогут запустить новую программу под названием «Играя сердцем». «Уход Дэррила напомнил нам, что болезни сердца не делают исключений, даже для элитных спортсменов в отличной физической форме», — сказал Уэйнрайт. «Эта программа направлена на то, чтобы помочь людям распознать риски, принять меры и, надеюсь, спасти жизни». Уэйнрайт, который выступал за Сент-Луис Кардиналс в качестве стартового питчера с 2005 по 2023 год, стремится объединить суть бейсбольной традиции с важным посланием о здоровье сердца. Кайл, любимый питчер Кардиналс, трагически скончался в 2002 году в возрасте 33 лет в результате раннего развития болезни сердца. Его внезапная смерть потрясла бейсбольный мир и оставила неизгладимый след на товарищах по команде, болельщиках и особенно на его семье. Теперь, более двух десятилетий спустя, Сьерра Кайл выступает вместе с Уэйнрайтом, чтобы...
Поделиться
BitcoinEthereumNews2025/09/18 02:08