Улучшение распознавания русской IT-речи: фикс Whisper для терминов и сленга | AiManual
AiManual Logo Ai / Manual.
22 Апр 2026 Гайд

Как улучшить распознавание русской IT-речи: фикс для Whisper и гибридного языка (термины + сленг)

Практический гайд по дообучению Whisper для точной транскрипции русской IT-речи с английскими терминами и сленгом. Техники, код, ошибки.

Почему Whisper ломается на IT-сленге и как это исправить

Вы проводите техническое собеседование. Кандидат говорит: "Мы использовали Kafka для ивент-драйвена, но потом перешли на RabbitMQ, потому что у нас был легаси-код на Spring Boot". Вы записываете разговор, чтобы потом отправить расшифровку рекрутеру. И получаете это: "Мы использовали кафку для ивент-дривена, но потом перешли на Рэббит-м-кью, потому что у нас был легаси-код на Спринг Бут".

Знакомо? Whisper от OpenAI - отличная модель, но для русской IT-речи она часто выдаёт ерунду. Проблема не в модели, а в данных, на которых её учили. Её корпус - это в основном чистый русский или чистый английский, а речь разработчика - это гибридный язык, где термины на английском встроены в русские предложения, плюс сленг вроде "деплоить", "рефакторить", "баг".

К 2026 году эта проблема только обострилась. С ростом удалённых собеседований и голосовых ассистентов для разработчиков точность транскрипции стала критичной. Ошибки в терминах - это не просто опечатки, это потеря смысла.

Что такое гибридный язык и почему он ломает STT

Гибридный язык - это не просто смесь русского и английского. Это:

  • Код-свитчинг: переключение между языками в середине предложения. "Давайте закоммитим этот фикс".
  • Транслитерация: английские слова, произнесённые с русским акцентом. "Деплой" вместо "deploy".
  • Аббревиатуры и акронимы: AWS, API, SQL, которые могут произноситься как буквы или как слова.
  • Сленг: "крашить", "доки", "прод".

Обычные STT-модели обучены на стандартном языке. Они не знают, что "Kafka" - это не чешский писатель, а система потоковой обработки данных. В нашем обзоре голосового ввода для программирования мы уже писали, что эффективность падает на 40% при работе со смешанным контентом.

Три подхода к решению: какой выбрать

Есть три пути:

  1. Дообучение существующей модели (например, Whisper) на специализированных данных.
  2. Использование готовой модели, уже обученной на гибридной речи.
  3. Постобработка текста с помощью словарей или языковых моделей.

Самый эффективный - первый, но он требует данных и вычислительных ресурсов. Второй проще, но таких моделей мало. Третий - костыль, но иногда работает.

💡
В медицинской области мы уже сталкивались с похожей проблемой. В гайде по выбору STT для медицинских аудио ключевым был WER на терминах. Здесь то же самое: общая точность не важна, важна точность на IT-терминах.

1 Сбор датасета: где взять IT-речь

Без данных никуда. Вам нужны аудиозаписи с IT-контентом: собеседования, подкасты, митапы, скринкасты. Проблема: таких открытых датасетов почти нет. Придётся собирать самим.

Источники:

  • Подкасты типа "Подкаст для разработчиков", "RadioJS". Но нужно разрешение на использование.
  • Ютуб-каналы с техническими докладами. Можно вырезать аудио, но осторожно с лицензиями.
  • Синтетические данные: использовать TTS для генерации речи по текстам с IT-терминами. Качество будет ниже, но для начала сойдёт.
  • Платформы для разметки данных, например, Toloka или Scale AI, где можно заказать запись и разметку аудио.

Сколько нужно данных? Для дообучения достаточно 10-20 часов качественных записей с транскриптами. Важно, чтобы в транскриптах были точно указаны термины: "Kafka", а не "кафка".

2 Подготовка данных: аудио и текст

Аудио должно быть в формате WAV или FLAC, моно, с частотой 16 кГц. Транскрипты - в текстовых файлах с выравниванием по времени или без.

Пример структуры датасета:

dataset/
├── audio/
│   ├── interview_1.wav
│   └── podcast_2.wav
└── transcripts/
    ├── interview_1.txt
    └── podcast_2.txt

В транскриптах сохраняйте оригинальное написание терминов. Если в речи смесь языков, так и пишите: "Мы использовали Kafka для ивент-драйвена архитектуры."

Не используйте автоматическую транскрипцию для подготовки данных! Это приведёт к зацикливанию ошибок. Все транскрипты должны быть проверены человеком, хотя бы выборочно.

3 Выбор модели и подхода к дообучению

Whisper - хорошая база. Используйте последнюю версию на 2026 год. На момент написания это Whisper-Large-v4, но проверьте актуальность.

Подходы к дообучению:

  • Full fine-tuning: дообучаем все слои модели. Требует много данных и GPU, но даёт лучший результат.
  • LoRA (Low-Rank Adaptation): дообучаем только небольшие адаптеры. Экономит память и время, часто достаточно для специализации.
  • Prefix-tuning: ещё более лёгкий метод, но может не справиться с такой специфичной задачей.

Для IT-речи я рекомендую LoRA. Она позволяет дообучить модель, не теряя общие знания, и требует меньше ресурсов.

Если не хотите дообучать, посмотрите на готовые модели. Например, GigaAM-v3 от Сбера хорошо распознаёт русскую речь, но не факт, что она обучена на IT-сленге. Также есть специализированные модели, но они редки.

4 Обучение модели: код и параметры

Используем библиотеку Hugging Face Transformers. Установите зависимости:

pip install torch torchaudio transformers datasets accelerate peft

Пример кода для дообучения Whisper с LoRA:

from transformers import WhisperForConditionalGeneration, WhisperProcessor
from peft import LoraConfig, get_peft_model
import torch

# Загружаем модель и процессор
model_name = "openai/whisper-large-v4"
processor = WhisperProcessor.from_pretrained(model_name)
model = WhisperForConditionalGeneration.from_pretrained(model_name)

# Настраиваем LoRA
lora_config = LoraConfig(
    r=16,
    lora_alpha=32,
    target_modules=["q_proj", "v_proj"],
    lora_dropout=0.1,
    bias="none"
)
model = get_peft_model(model, lora_config)

# Подготовка датасета (опущено для краткости)
# ...

# Обучение
training_args = Seq2SeqTrainingArguments(
    output_dir="./whisper-it-lora",
    per_device_train_batch_size=4,
    gradient_accumulation_steps=4,
    learning_rate=1e-4,
    warmup_steps=500,
    max_steps=4000,
    gradient_checkpointing=True,
    fp16=True,
    evaluation_strategy="steps",
    save_steps=1000,
    eval_steps=1000,
    logging_dir="./logs",
)

trainer = Seq2SeqTrainer(
    model=model,
    args=training_args,
    train_dataset=train_dataset,
    eval_dataset=eval_dataset,
    data_collator=data_collator,
    compute_metrics=compute_metrics,
)

trainer.train()

Это упрощённый код. Полный пример с обработкой данных можно найти в репозиториях Hugging Face.

Используйте GPU с хотя бы 16 ГБ VRAM для обучения Whisper-Large. Для меньших моделей (например, Whisper-Small) хватит и 8 ГБ. Если нет своего железа, арендуйте облачный инстанс, например, на vast.ai или Lambda Labs.

5 Оценка и тестирование: метрики для гибридного языка

Не доверяйте общему WER (Word Error Rate). Нужна метрика для терминов. Создайте список IT-терминов и считайте отдельно WER для них.

Пример:

def compute_term_wer(reference, hypothesis, terms):
    # Разбиваем на слова
    ref_words = reference.split()
    hyp_words = hypothesis.split()
    
    # Считаем ошибки только для терминов
    errors = 0
    total_terms = 0
    
    for ref, hyp in zip(ref_words, hyp_words):
        if ref in terms:
            total_terms += 1
            if ref != hyp:
                errors += 1
    
    return errors / total_terms if total_terms > 0 else 0

Тестируйте на разных типах записей: чистые лекции, диалоги, записи с фоновым шумом.

6 Интеграция в приложение: от модели до продукта

После обучения экспортируйте модель в формат, подходящий для продакшена. Для Whisper можно использовать ONNX или просто сохранить веса PyTorch.

Пример инференса:

import torch
from transformers import WhisperForConditionalGeneration, WhisperProcessor

model = WhisperForConditionalGeneration.from_pretrained("./whisper-it-lora")
processor = WhisperProcessor.from_pretrained("openai/whisper-large-v4")

# Аудио в формате numpy array
input_features = processor(audio, sampling_rate=16000, return_tensors="pt").input_features

with torch.no_grad():
    predicted_ids = model.generate(input_features)

transcription = processor.batch_decode(predicted_ids, skip_special_tokens=True)[0]
print(transcription)

Для массовой обработки используйте асинхронные очереди, например, Redis или RabbitMQ. Если нужно реальное время, посмотрите на оптимизированные инференс-движки вроде Whisper.cpp.

Где ошибаются даже опытные: три фатальные ошибки

  1. Использовать только синтетические данные. TTS не передаёт все нюансы живой речи, особенно интонации и паузы. Модель переобучится на артефакты.
  2. Дообучать на слишком маленьком датасете. Менее 5 часов - и модель забудет, как распознавать обычную речь, но не научится новому.
  3. Игнорировать фонетику терминов. "Kafka" в русской речи может произноситься как "Кафка" с ударением на первый слог. В транскриптах должно быть "Kafka", но модель должна научиться связывать это произношение с написанием.

FAQ: частые вопросы про IT-речь и STT

Вопрос Ответ
Можно ли использовать Whisper для реальных собеседований без дообучения? Можно, но будьте готовы к ошибкам в терминах. Для критичных случаев лучше дообучить или использовать постобработку.
Сколько стоит собрать датасет? Если делать самим - только время. На платформах разметки - от 2 до 5 долларов за час аудио с транскрипцией.
Какая модель лучше всего для русского IT-контента в 2026? Пока нет явного лидера. Whisper дообученный - сильный кандидат. Следите за новыми моделями, например, в нашем тесте Qwen3-ASR.
Как обрабатывать аббревиатуры вроде "API"? В транскриптах пишите "API". Модель научится, если в данных достаточно примеров. Можно добавить произношение как "эй-пи-ай" или "апи".

Итог: улучшение распознавания IT-речи - это не магия, а инженерия. Соберите данные, дообучите модель, тестируйте на терминах. Да, это требует времени, но когда ваш ассистент на собеседовании точно расшифрует "микросервисы на Go с gRPC", вы поймёте, что оно того стоило.

А если нет ресурсов на дообучение, посмотрите на готовые решения вроде JobPath - они как раз специализируются на транскрипции технических интервью. Но это уже тема для другой статьи.

Подписаться на канал