Реализация пунктуации и капитализации в распознанном тексте
Большинство STT-движков возвращают «плоский» текст без знаков препинания и заглавных букв — это затрудняет чтение и downstream NLP-обработку. Автоматическая пунктуация и капитализация делают транскрипт пригодным к использованию без ручного редактирования.
Подходы
Встроенные в движок — Whisper, Google STT, Azure Speech имеют автопунктуацию:
# Whisper — пунктуация включена по умолчанию
segments, _ = model.transcribe(audio, language="ru")
# Google STT
config = speech.RecognitionConfig(enable_automatic_punctuation=True)
Post-processing модели для движков без встроенной пунктуации:
from transformers import pipeline
# deepmultilingualpunctuation — поддерживает русский
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()
Модели для русского языка
- multilingual-e5-based модели с поддержкой RU: точность ~85–90% на точках и запятых
- ruBERT-based fine-tuned на русских транскрипциях: 88–92%
- Whisper large-v3: встроенная пунктуация на русском — ~80–85%
Сроки: интеграция готовой модели — 1 день. Обучение кастомной на доменных данных — 1 неделя.







