Внутри четырёх конвейеров перевода, на которых работает InterMIND

В InterMIND нет «единого перевода». Есть четыре конвейера — голос, чат, заметки, документы — каждый со своим движком, бюджетом задержки и рамками качества. Вот что на самом деле происходит между моментом, когда вы говорите, и моментом, когда участник на другом языке понимает вас.

The Mind.com Team

Внутри четырёх конвейеров перевода, на которых работает InterMIND

Внутри четырёх конвейеров перевода, на которых работает InterMIND

Старая страница /product/overview/how-it-works на mind.com устарела на несколько крупных релизов. Она описывает единый «движок перевода» так, как это делают страницы большинства вендоров — одна большая стрелка от «вы говорите» к «они слышат». Эта картина была упрощением уже два года назад. Сегодня она неверна.

На самом деле InterMIND использует четыре отдельных конвейера перевода, каждый из которых решает свою задачу с помощью собственного движка, собственного бюджета задержки и собственного диапазона качества. Они используют общий селектор языка. У них нет общего движка.

Это обновлённый ответ на вопрос «как это работает».

Сопутствующая статья: «Сколько языков вы поддерживаете?» описывает, что каждый конвейер охватывает (23 / 23 / 30 / 17). Этот пост описывает, что каждый конвейер делает — и почему он существует отдельно.


Почему «один движок для всего» — это ложь

Платформа для встреч в реальном времени должна выполнять как минимум четыре задачи одновременно, и они тянут в несовместимых направлениях:

  1. Голос в реальном времени — аудио на входе, переведённое аудио на выходе, меньше секунды, каждый участник на своём языке. Жёсткое ограничение — задержка.
  2. Текст чата в реальном времени — короткие сообщения, быстро, с сохранением правок, цитирований и HTML-структуры.
  3. Общие заметки в реальном времени — посимвольная совместная печать с сохранением структурной иерархии (списки, заголовки, чекбоксы), которая должна пережить перевод.
  4. Асинхронные файлы документов — 40-страничный PDF, брошенный в чат. Нет бюджета на задержку. Жёсткое ограничение — точность — форматирование, таблицы, номера страниц, шрифт.

Можно сделать один гигантский вызов LLM, который пытается делать всё четыре. Мы пробовали. Он плохо справляется со всеми четырьмя. Бюджет задержки для голоса означает, что модель не может размышлять; бюджет точности для документов означает, что модель должна это делать. Правка в чате требует diff на языке участника; 40-страничному PDF нужно сохранение формата, которое ни одна модель с потоковой передачей токенов вам не даст.

Поэтому мы используем четыре. Вот каждый из них.


Конвейер 1: Перевод голоса в реальном времени

Задача: Один участник говорит по-французски. Другой присоединился на немецком, третий — на бразильском португальском, четвёртый — на японском. Каждому нужно слышать говорящего на своём языке, в своём наушнике, с задержкой достаточно короткой, чтобы сохранялся зрительный контакт.

Бюджет: Меньше секунды от конца до конца. Всё, что превышает ~1,2 секунды, ломает разговор — люди начинают говорить поверх перевода, и встреча соскальзывает к «давайте просто перейдём на английский».

Как аудио движется на самом деле

Конвейер перевода голоса: браузер говорящего отправляет аудио через WebRTC на наш собственный движок — медиасервер Mind API на OVH, Франция — который выполняет ASR и переводит на каждый целевой язык, присутствующий в комнате; каждый участник получает свою собственную переведённую аудиодорожку, а ws-server получает слова транскрипции для итогового отчёта.

Несколько моментов, которые стоит назвать явно:

  • ASR работает на медиасервере. Аудио говорящего передаётся через WebRTC на наш собственный движок — Mind API на OVH, Франция — и распознаётся там же, на том же сервере, который ведёт звонок; браузер только отправляет аудио и получает обратно текст. Нет отдельного вендора распознавания речи и нет лишнего хопа перед началом перевода. (Голосовые заметки в чате — исключение: их распознавание речи выполняется на Azure AI Speech, речевом сервисе стандартного AI-шлюза.)
  • Перевод — это не одно веерное распределение. Движок переводит по каждому целевому языку, присутствующему в комнате, а не по каждому участнику: перевод на язык начинается, когда первый слушатель на нём запрашивает переведённый поток, три участника, выбравших немецкий, используют один немецкий перевод, а если никто не слушает на арабском — на арабский ничего не переводится. Именно поэтому встреча на четырёх языках стоит столько же, сколько встреча на сорока языках — с точностью до того, кто фактически присутствует: мы никогда не переводим на языки, на которых никто из участников не слушает.
  • Синтезированная речь — индивидуальная для каждого участника. Каждый участник получает собственную переведённую аудиодорожку, смешанную с видео исходного говорящего. Они смотрят не мастер-«переведённую встречу» — они смотрят ту же встречу, с их персональным аудиоканалом, переведённым на выбранный язык. Именно поэтому два человека в одной физической комнате могут подключить наушники и слушать разные языки.

Почему это важно, когда встреча идёт не по плану

В 60-минутном звонке на восьми языках всё ломается по-разному: WebSocket-соединения рвутся, ASR временно неправильно распознаёт имя собственное, у одного из участников возникает джиттер сети. Описанная выше архитектура позволяет нам изолировать сбои: проблемы с аудио у одного участника не влияют на остальных семерых, потому что движок перевода никогда не создавал «единственный перевод» — он создал восемь, параллельно, и восстанавливать нужно только пострадавший.

Сам движок — наш, размещён на нашей собственной инфраструктуре. Мы не маршрутизируем голос в реальном времени через сторонние LLM общего назначения. Бюджет задержки исключает их; резидентность данных исключает их для регулируемых клиентов, которым это действительно важно.

Что мы публикуем о качестве голоса: /benchmark прогоняет продакшен-конвейер голоса по предложениям FLORES-200 для каждой опубликованной языковой пары ежемесячно. Судья назван (Gemini 3.7 Flash — основной, Claude Sonnet 5 — резервный). Полное распределение — медиана, p10, p90, минимум, максимум, размер выборки — на странице. См. методологию, чтобы понять, что эти числа измеряют, а что нет.


Конвейер 2: Перевод чата в реальном времени

Задача: Каждое сообщение в чате во время встречи, переведённое для каждого участника на его язык, в момент отправки. Плюс правки — и правки должны выглядеть как правки, а не как повторные переводы.

Бюджет: Быстро, но не дольше секунды. Сообщение в чате может появиться на другом языке за полсекунды, и никого это не смутит. Людей волнует, точный ли перевод и имеют ли смысл правки.

Что конвейер чата делает на самом деле

Каждое сообщение проходит через тот же движок перевода, что и голосовой конвейер — но с другой пред- и постобработкой:

  • HTML-структура сохраняется. Чат поддерживает форматированный текст (абзацы, списки, цитаты, жирный, курсив). Мы конвертируем в plain text для модели, переводим, затем оборачиваем результат обратно в исходные теги. Модель никогда не видит HTML — она видит чистый текст.
  • Цитаты переводятся независимо. Если вы отвечаете на сообщение и цитируете его, блок [QUOTE]…[/QUOTE] и новый контент переводятся как отдельные единицы, поэтому модель не может их перепутать.
  • Длинные сообщения разбиваются на чанки. Мы разделяем по границам абзацев по 1 000 символов на чанк. Каждый чанк — отдельный вызов перевода. Мы не загружаем 4 000-символьные «романы» в модель за один раз — режимы ошибок (обрезка, потеря абзацев, разрывы на середине предложения) слишком неприятны.
  • Перевод ленивый. Мы используем IntersectionObserver: сообщение переводится только тогда, когда оно попадает в видимую область зрителя. Раньше переключение языка в долгоживущем канале заново запускало каждый API-вызов перевода из истории. Теперь — нет.

Интересная часть: правки как diff

В v1.2 мы изменили, как правки в чате выглядят для участников на другом языке. Старое поведение: кто-то редактирует сообщение, мы заново переводим всё целиком, вы видите новый абзац и должны сами найти, что изменилось.

Новое поведение:

  1. Исходное сообщение уже переведено на ваш язык.
  2. Когда отправитель вносит правки, мы заново переводим новую версию.
  3. Мы вычисляем diff между вашим предыдущим переводом и вашим новым переводом, на вашем языке.
  4. Мы показываем этот diff инлайн — так же, как Git показывает, что изменилось.

Поэтому, когда «review by Tuesday» превращается в «review by Thursday» на английском, ваш коллега, читающий на испанском, видит выделенное martes → jueves, а не повторно переведённый абзац, который нужно перечитывать.

Это потребовало, чтобы конвейер чата работал с сохранением состояния — как индивидуальный кэш для каждого зрителя, а не как эндпоинт без сохранения состояния, переводящий по запросу. Документам и голосу это не нужно. Чату — нужно.


Конвейер 3: Перевод общих заметок в реальном времени

Задача: Хост открывает панель общих заметок и начинает печатать. Каждый участник видит заметки на своём языке, символ за символом, со структурой документа — заголовки, вложенные списки, чек-листы, блоки кода — нетронутой.

Бюджет: Как в чате (~полсекунды), но с двумя дополнительными ограничениями:

  • Переводимый текст меняется во время перевода. Хост продолжает печатать. Наивная система, которая переводит «весь документ» при каждом нажатии клавиши, производит мерцание и сжигает бюджет API. Мы переводим на уровне изменённой единицы, а не всего документа.
  • Структура должна сохраниться. Если попросить модель перевода перевести markdown-блок с тремя вложенными списками, вы получите что-то, что выглядит как оригинал, но с едва заметно уплощённой иерархией, перенумерованными элементами или смещёнными отступами. Мы не позволяем модели видеть весь блок целиком.

Чем конвейер заметок отличается от чата

Сохранение структуры — главное. Мы переводим каждый элемент списка независимо, а не как единый документ. Модель видит:

«Проверка комплаенса — результаты Q2»

— а не:

«# План проекта\n## Квартал\n- Проверка комплаенса — результаты Q2\n- Оценка вендоров\n - Вендоры первого тира...»

Оборачивающий документ — <ul>, заголовки, отступы — перестраивается на клиенте с использованием той же структуры, что была у исходного документа, а каждый листовой узел заменяется переводом. Модель никогда не может «улучшить» иерархию.

Заметки также используют ту же модель diff для каждого зрителя, что и правки в чате: если хост меняет строку, участники на других языках видят выделенные изменённые слова, а не новый абзац.


Конвейер 4: Асинхронный перевод документов

Задача: Кто-то бросает в чат 40-страничный PDF, документ Word, презентацию PowerPoint или таблицу Excel. Каждый участник может запросить копию на своём языке. Переведённый файл должен выглядеть как оригинал — те же шрифты, те же таблицы, те же номера страниц, те же колонтитулы, те же диаграммы на своих местах.

Бюджет: Нет ограничения в реальном времени. Минута — нормально. Две минуты — нормально. Ограничение — точность — если переведённый PDF не выглядит как оригинал, получатель не будет ему доверять.

Почему этот конвейер не делит движок с голосом

LLM общего назначения, даже очень хороший, вернёт вам переведённый текст документа. Он не вернёт вам переведённый PDF с тем же макетом. У модели нет понятия «разрыв страницы, который должен совпадать с исходным» или «ячейка таблицы, которая должна сохранить ширину столбца».

Для этой задачи мы используем DeepL Document API напрямую. Он создан специально для перевода файлов как файлов, а не текста, извлечённого из файлов. DeepL работает с:

  • PDF (с сохранением макета)
  • DOCX, DOC
  • PPTX
  • XLSX

Документ загружается в конвейер DeepL, переводится на сервере с сохранением форматирования и возвращается в том же формате. Затем мы загружаем результат в наше объектное хранилище и возвращаем его в чат как вложение для скачивания.

Сколько это стоит и почему мы это не скрываем

DeepL тарифицирует минимум 50 000 символов за документ — примерно один доллар США за файл на тарифе Pro, независимо от того, одна страница в документе или тридцать. Мы покрываем эти затраты, а не списываем их с вас за каждый файл; они отображаются в статистике перевода встречи как тарифицированные символы, конвертированные в единицы, соответствующие тому, как остальной продукт отчитывается о переводе.

Мы выбрали DeepL для этой задачи, потому что перевод файлов как файлов — это именно то, для чего он был создан. Мы не пытались сделать лучше. Но обратное неверно — DeepL не запускает конвейер перевода голоса в реальном времени того типа, который мы построили для встреч. Разные задачи; разные инструменты. Честная версия «что обеспечивает перевод InterMIND» — «правильный движок для каждого конвейера», а не «наш движок везде».

Языки, которые покрывает этот конвейер, но не покрывает голос

Документный конвейер охватывает 30 языков против 23 для голоса. Дополнительные: болгарский, греческий, эстонский, индонезийский, литовский, латышский, словацкий, словенский. (Арабский также в этом списке, и он один из дополнительных: он убран из селектора в реальном времени, пока качество голоса ниже нашего стандарта, а его баллы по каждой паре остаются публичными на /benchmark — именно это число определяет, когда он вернётся. Асимметрия действует в обратную сторону для хинди — доступен на голосе, но пока не на файлах.)

Эта асимметрия реальна. Она означает, что франкоязычный участник встречи может запросить PDF-контракт на эстонском, даже если он не может слушать встречу на эстонском. Мы обозначаем это в селекторе, а не сглаживаем одним числом. Логика — в посте о количестве языков.


Где конвейеры пересекаются

Четыре конвейера не работают изолированно. Комната встречи — это место, где они соприкасаются, и стыки имеют значение:

  • Сообщение в чате с вложением-документом запускает конвейер чата для текста и конвейер документов для файла. Участник на другом языке видит переведённое сообщение сразу, а перевод вложения приходит асинхронно как файл для скачивания.
  • Общая заметка, цитирующая строку транскрипта пересекает заметки ↔ голос. Транскрипт — это то, что голосовой конвейер создал для языка отправителя; перевод заметки создаёт индивидуальную копию этой цитаты на языке каждого участника, с сохранением атрибуции источника.
  • Транскрипт, экспортированный после встречи, проходит через текстовый конвейер в стиле чата по всему разговору, создавая файл на каждом языке, который участники могут скачать. Это тот же код, что и перевод чата, только пакетный.

Селектор языка — один элемент UI. Инфраструктура под ним — четыре конвейера, взаимодействующих друг с другом.


Что мы намеренно не пытаемся делать

  • Никакой «универсальной модели перевода». Мы не строим одну модель, которая делает голос, чат, заметки и документы. Компромисс между задержкой и точностью не имеет победителя. Мы используем правильный движок для каждой задачи.
  • Никакого тихого перенаправления. Если файловый конвейер не может перевести на хинди сегодня, мы не переключаемся тихо на голосовой движок и не делаем вид, что всё работает — селектор файлов показывает пробел вместо того, чтобы скрывать его.
  • Никакого «мы переводим на 200 языков». Наш движок генерирует 24. Поверхности в реальном времени предоставляют 23, документы — 30 — и вместо одного маркетингового числа качество по каждой паре, которое должно выдержать проверку аудитора, публикуется на /benchmark, включая более слабые пары.

Попробуйте сами

  • Попробуйте живую демонстрацию — запускает конвейер перевода голоса в реальном времени на вашем аудио, на любом из 23 языков продукта. Тот же конвейер, который набирает баллы на /benchmark.
  • Посмотрите бенчмарк — качество по каждой паре, по каждому месяцу на реальном трафике. Каждая пара в селекторе, сильная или слабая, с возможностью прямой ссылки.
  • Читайте методологию — что значат числа, что не значат, кто судья.

Четыре конвейера, четыре движка, одна комната встречи. Это честная замена старой странице how-it-works.

— Команда Mind.com


Источники: DeepL — поддерживаемые языки, DeepL — подсчёт использования и тарификация (минимум 50 000 символов на файл), FLORES-200; внутренние данные о конвейерах сверены с кодом в продакшене, проверено август 2026.

Ещё в разделе «Живой перевод»

Все публикации в разделе «Живой перевод»
Переводчик турецкого голоса: глагол идёт последним, и это решает, какой вам нужен
Живой перевод

Переводчик турецкого голоса: глагол идёт последним, и это решает, какой вам нужен

В турецком глагол — а также отрицание и время — ставится в конце предложения. Один этот факт разделяет три продукта, которые продаются как «голосовой переводчик»: телефонные приложения, наушники-переводчики и живой перевод встреч. Что каждый из них может и не может сделать с турецким предложением и почему количество языков у вендора ничего не говорит об этой паре.

The Mind.com Team

Синхронный переводчик: человек, платформа удалённого синхронного перевода или ИИ — что нужно вашей многоязычной встрече (2026)
Живой перевод

Синхронный переводчик: человек, платформа удалённого синхронного перевода или ИИ — что нужно вашей многоязычной встрече (2026)

«Синхронный переводчик» — это профессия; то, что на самом деле ищут чаще всего, — это речь на другом языке в момент её произнесения. Это руководство разделяет кабину, платформу удалённого синхронного перевода и ИИ-синхронный перевод, сравнивает инструменты по их документации — Interprefy, KUDO, Wordly, DeepL Voice, Zoom, Teams, Google Meet, InterMIND — и задаёт вопрос о том, что упускают сравнения: какая часть встречи на самом деле возвращается на вашем языке и где обрабатываются данные.

The Mind.com Team

Синхронный перевод: будка, RSI или ИИ — и какие инструменты для ваших встреч (2026)
Живой перевод

Синхронный перевод: будка, RSI или ИИ — и какие инструменты для ваших встреч (2026)

«Синхронный перевод» охватывает три реальности: переводчик в будке, удалённый синхронный перевод (RSI) и ИИ-перевод в реальном времени. В этом руководстве они разделяются, сравниваются задокументированные инструменты — Interprefy, KUDO, Wordly, DeepL Voice, Zoom, Teams, Google Meet, InterMIND — и задаётся вопрос, который обходят стороной в сравнительных постах: какая часть встречи на самом деле возвращается на вашем языке?

The Mind.com Team

Получайте новые публикации и обновления продукта по email

Одно письмо в месяц с новыми публикациями и обновлениями продукта. Отписаться можно в любой момент.