Архитектура дубляжа: как speeek.io борется с галлюцинациями Whisper

Habr AI · оригинал

Материал подготовлен автоматизированной редакционной системой. Факты можно сверить по указанному первоисточнику.

Разработчик сервиса speeek.io описывает технические сложности автоматического перевода видео, возникшие при промышленном использовании модели Whisper. Статья детализирует методы фильтрации артефактов распознавания речи и ограничения диаризации спикеров.

Материал раскрывает реальные инженерные проблемы внедрения LLM-моделей в продакшен, демонстрируя разрыв между лабораторными метриками и качеством обработки «грязных» пользовательских данных.

Разработка сервиса автоматического дубляжа speeek.io началась в 2022 году с идеи использования модели Whisper для конвейера «речь — текст — перевод — синтез». Однако, по признанию автора, реализация заняла три года из-за непредвиденных проблем. В 2026 году через систему прошло более 9200 задач, и конвейер продолжает сталкиваться с теми же ошибками, что и в начале проекта. Первая часть серии статей посвящена этапу распознавания речи: преобразованию звука в текст с таймкодами и идентификацией спикеров.

Входной поток включает файлы различных форматов или ссылки на YouTube. Звук извлекается через ffmpeg, а затем проходит через Demucs для разделения вокала и фона. Это необходимо для повышения точности Whisper и сохранения оригинальной музыкальной подложки. Распознавание выполняется на локальном GPU (A4000) с использованием whisperX и large-v3-turbo. При сбоях или высокой нагрузке система переключается на резервные облачные провайдеры, такие как Replicate или Gladia.

Автор выделяет три основных типа «галлюцинаций» Whisper. Во-первых, это слова-монстры длиной более 50 символов, возникающие на фоне музыки или пауз; они удаляются алгоритмически. Во-вторых, зацикленные фразы, когда модель повторяет один и тот же фрагмент. Для их выявления используется окно в 130 символов: если подстрока встречается пять раз, текст отправляется LLM для исправления. Если исправить не удалось, сегмент помечается как неозвучиваемый. В-третьих, короткие обрывки текста менее трех символов или сегменты без назначенного спикера, которые также отбрасываются.

Особую сложность представляет работа с сегментами. Whisper генерирует их на основе окон декодера, а не логических границ предложений. Разработчик самостоятельно собирает предложения из слов с таймкодами, учитывая знаки препинания и смену спикеров. Код для этого процесса занял полтора года доработки, так как требует учета множества исключений: сокращений, инициалов, чисел и специфических символов разных языков.

Диаризация спикеров имеет жесткие ограничения. Система не поддерживает одновременную речь нескольких человек; каждое слово приписывается одному спикеру. Это приводит к потере контекста в интервью или ток-шоу с перебиваниями. Если пользователь ожидает двух спикеров, а система находит одного, второй добавляется искусственно для возможности ручного редактирования.

Проблема «речи без точек» решается с помощью LLM. Если сегмент превышает 300 символов, модель анализирует текст и таймкоды, чтобы расставить знаки препинания и разбить фразу на предложения. Это позволяет корректно укладывать перевод в тайминг. В 2026 году основные ошибки распознавания сместились от слов к именам собственным и цифрам, что требует обязательного ручного контроля через редактор интерфейса.