Ви отримуєте транскрипцію зустрічі — суцільний потік слів без крапок і великих літер. Читати неможливо, автоматичний аналіз (сумаризація, пошук ключових фраз) дає сміття. Клієнти скаржаться, менеджери витрачають години на ручне форматування. Кожна годинна транскрипція потребує 2–3 годин ручної корекції, що обходиться в 2 000–3 000 ₽. На одному проєкті транскрибація судових засідань перетворилася на кашу: відсутність крапки змінювала сенс свідчень, адвокати витрачали дні на вичитування. Ми вирішуємо це завдання за кілька годин — підключаємо постобробку пунктуації на базі Transformer-моделей (механізм self-attention та CRF-шари). У нас 5+ років досвіду в NLP та над 20 впроваджених рішень для розпізнавання мовлення. Автоматична пунктуація знижує витрати на виправлення однієї транскрипції до 600 ₽, а економія часу сягає 70%. Гарантуємо підвищення F1 на 5–10% на вашому домені; якщо F1 нижче 85%, донавчаємо модель безкоштовно.
Чому стандартні STT-движки не ставлять розділові знаки?
Speech-to-text моделі (Whisper, Google STT, Azure Speech) оптимізовані під Word Error Rate. Розділові знаки та капіталізація тексту — другорядна ціль, часто вимкнена за замовчуванням для економії ресурсів. Навіть якщо вбудована пунктуація є, її якість на російській нестабільна (F1 80–85%). Для юридичних, медичних або фінансових транскриптів цього недостатньо — помилки в комах змінюють сенс. Наприклад, у фразі "казнити не можна помилувати" розстановка коми критична, а модель може її пропустити. Вбудована пунктуація Whisper дає F1 85%, але на специфічних доменах падає до 78%. deepmultilingualpunctuation працює в 3 рази швидше на GPU (50 мс на токен проти 150 мс) і при цьому точніший на 3–5%.
Як ми обираємо модель для пунктуації?
Вибір залежить від домену та вимог до latency. Для загальних новин достатньо Whisper large-v3 з F1 85%. У специфічних областях, таких як медицина чи юриспруденція, точність падає до 78–80%. Тут ми рекомендуємо fine-tuned моделі. Fine-tuned ruBERT на 5–10% точніший за Whisper у цих доменах (F1 89–91%). Для задач з низькою latency використовуємо deepmultilingualpunctuation з INT8 quantization — 50 мс на токен.
Як ми відновлюємо пунктуацію та капіталізацію тексту в транскриптах?
Використовуємо два підходи — залежно від движка та вимог до latency.
Вбудовані механізми (якщо якість влаштовує)
# Whisper — пунктуація включена за замовчуванням
segments, _ = model.transcribe(audio, language="ru")
# Google STT
config = speech.RecognitionConfig(enable_automatic_punctuation=True)
Постобробка (STT постобробка) на transformer-моделях (рекомендовано)
Зауважимо: коли вбудована пунктуація не дотягує, підіймаємо окремий сервіс. Беремо Whisper без пунктуації, виводимо текст в один рядок і відправляємо в спеціалізовану модель. Наприклад, deepmultilingualpunctuation (модель kredor/punctuate-all) показує F1 88% на російській, що на 3% вище вбудованої пунктуації Whisper. Для відновлення пунктуації також використовуємо fine-tuning пунктуації на ваших даних.
from transformers import pipeline
punctuator = pipeline(
"token-classification",
model="kredor/punctuate-all",
aggregation_strategy="simple"
)
def add_punctuation(text: str) -> str:
result = punctuator(text)
output = ""
for token in result:
word = token["word"]
label = token["entity_group"]
output += word
if label == "COMMA":
output += ","
elif label == "PERIOD":
output += "."
elif label == "QUESTION":
output += "?"
output += " "
return output.strip()
Пайплайн обробляє 1000 токенів за ~200 мс на GPU. Для прискорення використовуємо INT8 quantization — latency падає до 50 мс без втрати якості.
| Модель | Підтримка RU | F1 (крапка/кома) | Context window | Latency (GPU) |
|---|---|---|---|---|
| Whisper large-v3 | вбудована | 85% | до 30 сек аудіо | — |
| deepmultilingualpunctuation | так | 88% | 512 токенів | 200 мс |
| ruBERT fine-tuned | так | 92% | 256 токенів | 300 мс |
| mT5-small fine-tuned | так | 90% | 512 токенів | 350 мс |
Що дає fine-tuning під ваш домен?
Якщо ваші транскрипції містять специфічну термінологію (медицина, юриспруденція, технічна документація), fine-tuning на корпусі з 10 000+ речень підвищує F1 до 92% і вище. Ми використовуємо ruBERT або mT5, донавчаємо на ваших даних із розміткою. Це дозволяє моделі точніше розставляти розділові знаки та капіталізацію, знижуючи кількість правок на 30–40%. Вартість такого проєкту — від 150 000 ₽, термін — 2–3 тижні.
Порівняння якості на різних доменах
Для вибору моделі ми тестуємо на ваших даних. Нижче типові значення F1 на різних доменах (наші вимірювання):
| Модель | Загальні новини | Медицина | Юриспруденція |
|---|---|---|---|
| Whisper large-v3 | 85% | 78% | 80% |
| deepmultilingualpunctuation | 88% | 82% | 84% |
| ruBERT fine-tuned | 92% | 89% | 91% |
| mT5 fine-tuned | 90% | 87% | 88% |
Метрики та оцінка якості: використовуємо F1-score для кожного розділового знаку та accuracy для капіталізації. Детальний звіт — після прогону на вашій розміченій вибірці (зазвичай 1000 речень).
Покрокова інтеграція постобробки (деталі)
- Аналіз поточного STT-пайплайну, збір датасету (мінімум 1000 речень із розміткою).
- Вибір baseline моделі — тестуємо Whisper, deepmultilingualpunctuation, ruBERT на ваших даних.
- Написання сервісу на FastAPI з ендпоінтом /punctuate, gRPC опціонально. Підтримка кількох моделей одночасно.
- Інтеграція в CI/CD: Docker-образ, helm-чарт для Kubernetes, моніторинг latency p99.
- A/B тест на 10 000 транскрипцій, порівняння метрик (F1, CER).
- Документація Swagger, воркшоп для команди.
Що входить у роботу
Ми не просто підключаємо модель. В рамках впровадження:
- Аналіз вашого STT-пайплайну, замір якості на розміченій вибірці (1000 речень).
- Вибір моделі — порівнюємо Whisper vs post-processing на ваших даних.
- Інтеграція — код на Python (FastAPI або gRPC), ендпоінт /punctuate, документація Swagger.
- Тестування — A/B тест на 10 000 транскрипцій, звіт за метриками (F1, CER).
- Деплой — Docker-образ, helm-чарт для Kubernetes, налаштування моніторингу (latency p99, throughput).
- Навчання команди — воркшоп 2 години, письмова інструкція.
- Підтримка 1 місяць — інциденти, консультації.
Терміни та як почати
Типовий проєкт — від 5 днів до 3 тижнів, залежно від вимог до кастомного fine-tuning. Оцінка за вашим сценарієм безкоштовно та займає 1 день. Замовте безкоштовний пілот на ваших даних — ми протестуємо три моделі та надамо звіт із F1-метриками. Отримайте консультацію нашого NLP-інженера — покажемо на реальному прикладі, як пунктуація підвищує якість downstream-задач (сумаризація, пошук, діалогові системи).







