Реалізація автоматичного транскрибування судових засідань Транскрибація судових засідань — це високовідповідальне завдання з вимогами до точності >98% (WER <2%). Специфіка: безліч тих, хто говорить, перебивання, юридична лексика, процесуальні формули, власні імена. Транскрипт є процесуальним документом. ### Вимоги до системи - WER <5% на юридичній лексиці (після постобробки) - Точна атрибуція реплік (голова, прокурор, адвокат, свідок, відповідач) - Тимчасові мітки для кожної репліки - Автоматична нормалізація чисельних, дат, статей закону - Захищене зберігання```python
Полностью локальное развёртывание без облака
class CourtTranscriptionSystem: def init(self): # Whisper large-v3 дообученный на юридических данных self.stt = WhisperModel( "/models/whisper-legal-ru", device="cuda", compute_type="int8_float16" ) # Диаризация — обязательно self.diarizer = Pipeline.from_pretrained( "pyannote/speaker-diarization-3.1" ) # Нормализатор юридических текстов self.normalizer = LegalTextNormalizer()
async def transcribe_session(self, audio_path: str, participants: dict) -> dict:
"""
participants: {"SPEAKER_00": "Председатель Иванова И.И.", ...}
"""
# 1. Транскрибируем с word timestamps
segments, _ = self.stt.transcribe(
audio_path,
word_timestamps=True,
language="ru",
vad_filter=True,
initial_prompt="Судебное заседание. Председатель суда, прокурор, адвокат, подсудимый."
)
# 2. Диаризация
diarization = self.diarizer(audio_path)
# 3. Сопоставляем с участниками
labeled_transcript = self._label_speakers(
list(segments), diarization, participants
)
# 4. Нормализация: "сто пятьдесят вторая статья" → "ст. 152"
for segment in labeled_transcript:
segment["text"] = self.normalizer.normalize(segment["text"])
return {
"session_date": datetime.now().isoformat(),
"transcript": labeled_transcript,
"metadata": {
"audio_duration": self._get_duration(audio_path),
"speaker_count": len(participants)
}
}
### Спеціалізований словник для судуpython
LEGAL_VOCABULARY = [
"апелляционное определение",
"постановление о прекращении дела",
"кассационная жалоба",
"статья двести шестьдесят четвёртая",
"часть первая статьи",
"Уголовно-процессуальный кодекс",
"Гражданский процессуальный кодекс",
# ... несколько тысяч терминов
]
- З донавчанням на юридичні дані: +4–6 тижнів - Сертифікація та інтеграція до ДАС «Правосуддя»: окремий проект







