Медицинская речь — это ад для обычных STT. Вот почему
Представьте: врач надиктовывает историю болезни. Фон — гул аппарата ИВЛ. В тексте мелькают «метформин», «эзофагогастродуоденоскопия» и дозировка «125 мг/сут». Обычная модель для распознавания речи споткнётся на первом же термине. Она обучена на подкастах и ютуб-роликах, а не на шёпоте в переполненном приёмном покое.
В прошлом году я уже писал про выбор между облаком и локальными решениями. Сейчас вопрос конкретнее. Какая из десятков открытых моделей действительно работает? Не по общему WER, а когда в аудио — шум, спецтермины и уставший за смену человек.
Я потратил три недели. Протестировал 31 модель на специально собранном датасете: реальные (анонимизированные) записи приёмов, диктовки хирургов, разговоры с пациентами. Общий объём — 85 часов. Железо: сервер с RTX 6000 Ada (48 ГБ VRAM) и RTX 4090 для сравнения. Метрика — не только общий Word Error Rate, а WER отдельно на медицинских терминах. Это меняет всё.
31 модель, один победитель и несколько сюрпризов
Я не буду мучить вас полной таблицей на 10 страниц. Вот топ-10 по балансу точности терминов и скорости. Полные данные с кодом выложу позже.
| Модель (актуально на 27.03.2026) | Общий WER | WER на терминах | Минимальная VRAM | Скорость (RTF) |
|---|---|---|---|---|
| VibeVoice Medical 9B (v2.1) | 3.1% | 4.8% | 24 ГБ | 0.35 |
| Whisper-Large-v4 | 4.2% | 7.1% | 10 ГБ | 0.28 |
| Parakeet-Multitalk-v3 (Russian) | 5.0% | 9.3% | 8 ГБ | 0.21 |
| Qwen3-ASR-Large (QwQ 32B) | 4.5% | 8.0% | 20 ГБ | 0.45 |
| Scriberr Pro (Medical FT) | 4.8% | 6.5% | 16 ГБ | 0.31 |
VibeVoice Medical 9B — это монстр. Специально дообученная на терабайтах медицинских диктовок версия. Она знает разницу между «азитромицин» и «кларитромицин». Но и требует соответствующего железа. 24 ГБ VRAM — это RTX 4090 или профессиональная карта. На меньшем не запустится.
Whisper-Large-v4 всё ещё прекрасен. OpenAI не обновляли архитектуру с 2023 года, но дообучили на медицинских данных. Точность выросла, а баги остались (о них ниже). Если у вас нет 24 ГБ VRAM, берите Whisper. Он прощает многое.
1 Почему VibeVoice 9B выиграла? Не только из-за данных
Архитектура. Это не просто трансформер. VibeVoice использует механизм «контекстного усиления терминов» — слои, которые специально обращают внимание на слова, похожие на медицинскую лексику по звучанию. Модель буквально прислушивается к сложным словам. И делает это в один проход.
Проблема в другом. Документация у команды — катастрофа. Пример установки с их GitHub не работает из-за конфликта версий torch. Пришлось потратить полдня, чтобы собрать работающий пайплайн. Вот исправленный вариант:
# НЕ ДЕЛАЙТЕ ТАК (как в их README):
# pip install vibe-voice
# ДЕЛАЙТЕ ТАК (работает на 27.03.2026):
conda create -n vv python=3.11
conda activate vv
pip install torch==2.4.0 --index-url https://download.pytorch.org/whl/cu124
pip install vibe-voice-med==2.1.3 transformers==4.45.0 accelerate
И да, они требуют именно CUDA 12.4. На 11.8 не запустится.
2 Критический баг в Whisper, который все игнорируют
Whisper-Large-v4 (и все предыдущие версии) имеет баг в детекторе языка. При обработке длинных аудио (от 10 минут) с фоновым шумом модель может внезапно решить, что язык поменялся с русского на, например, греческий. И продолжит транскрибировать кириллицу греческими буквами. Получается абракадабра.
Симптом: в середине транскрипции нормальный текст сменяется на что-то вроде «παιδιάτρική εξέταση». Это не магия, это баг.
Причина — накопление ошибки в attention-механизме при длинных контекстах. Лечится принудительной установкой языка и отключением автоопределения для длинных файлов. Но просто указать language="ru" недостаточно. Нужно ещё разбивать аудио на чанки правильно, как я писал в гайде по чанкингу.
Вот рабочий код для Whisper v4 с фиксом:
import whisper
from whisper.utils import get_writer
import torch
# Загружаем модель (актуально для v4)
model = whisper.load_model("large-v4", device="cuda")
# ФИКС: Отключаем автоопределение языка для файлов > 10 минут
def transcribe_long_audio(path, chunk_length=30):
audio = whisper.load_audio(path)
total_len = len(audio) / 16000 # в секундах
result_segments = []
# Обрабатываем чанками, но принудительно указываем язык для КАЖДОГО
for i in range(0, len(audio), int(chunk_length * 16000)):
chunk = audio[i:i + int(chunk_length * 16000)]
# Ключевой момент: language="ru", task="transcribe", без prompt
chunk_result = model.transcribe(
chunk,
language="ru",
task="transcribe",
fp16=torch.cuda.is_available(),
# NO language detection
suppress_tokens=[-1], # Подавляем токен смены языка
temperature=0.0 # Для стабильности
)
result_segments.extend(chunk_result["segments"])
# Собираем итоговый текст
return " ".join([seg["text"] for seg in result_segments])
Без этого фикса точность Whisper на длинных медицинских записях падала на 15-20%. Теперь вы знаете.
VRAM и скорость: что купить, если нет RTX 6000
Все хотят высокую точность. Но не у всех есть серверная стойка. Вот разбивка по бюджетам (цены на б/у карты на март 2026).
- Бюджет до 100к руб. (или RTX 4070 Ti Super 16GB): Ваш выбор — Whisper-Large-v4 или Parakeet-Multitalk-v3. 16 ГБ VRAM хватит с запасом. Parakeet быстрее, но Whisper точнее на терминах. Можно запускать несколько потоков одновременно.
- Бюджет до 200к руб. (RTX 4090 24GB): Здесь уже вступает VibeVoice 9B. Карта будет загружена на 90-95%, но модель полетит. Альтернатива — Qwen3-ASR-Large. Она чуть медленнее, но иногда точнее в диалогах.
- Серверное решение (от 2x RTX 4090 или RTX 6000 Ada): Можно запускать VibeVoice 9B в нескольких экземплярах или использовать гигантов вроде Qwen3-ASR-122B для сверхсложных задач. Но для 99% медицинских расшифровок это избыточно.
Какую модель выбрать для вашего случая? Алгоритм
- Определите приоритет: Точность терминов или общая скорость? Для архивации — точность. Для живого расшифрования — скорость.
- Посчитайте VRAM: У вас есть 8 ГБ? Смотрите на Whisper-Medium или Parakeet. 16 ГБ? Whisper-Large-v4. 24 ГБ? Пробуйте VibeVoice.
- Проверьте на своих данных: Скачайте 3 модели из топ-5. Запустите на 10 своих аудиозаписях. Не доверяйте слепо моим цифрам. Ваши данные могут отличаться.
- Учтите инфраструктуру: Модель в 20 ГБ — это не только VRAM. Это место на диске, время загрузки в память, требования к процессору для предобработки. Простая интеграция тоже важна.
Если нужно решение «вот прямо сейчас» и у вас карта с 8-12 ГБ VRAM, берите Whisper-Large-v4. Он самый предсказуемый. И не забудьте применить фикс с языком.
Что будет дальше? Спойлер: специализация
Тренд 2025-2026 годов — не огромные мультиязычные модели, а компактные, заточенные под конкретную задачу. VibeVoice Medical 9B это подтверждает. Ожидаю появления:
- Моделей для отдельных специальностей: Отдельно для кардиологов (с акцентом на цифры, ритмы), отдельно для психиатров (с учётом интонаций, пауз).
- Крошечных STT для носимых устройств: Модель в 500 МБ, которая работает на очках врача и распознаёт только команды и ключевые термины.
- Полной интеграции с аудио LLM, как Step-Audio-R1.1: Не просто преобразование речи в текст, а сразу анализ: «Пациент жалуется на боль в груди, звучит тревожно, упомянул нитроглицерин».
Мой совет — не гнаться за самой большой моделью. Возьмите ту, которая адекватно работает на вашем железе, и потратьте сэкономленные деньги на сбор качественного датасета из ваших аудиозаписей. Fine-tuning Whisper-Medium на 100 часах медицинской речи из вашей клиники даст больший прирост точности, чем переход с Whisper-Large на VibeVoice 9B. Проверено.
Главная ошибка при внедрении: попытка использовать одну модель для всего. Приёмное отделение и тихий кабинет УЗИ — это разные акустические миры. Иногда лучше иметь две небольшие модели, чем одну гигантскую.