[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-post-ru-/inside-the-translation-pipelines":3},{"page":4,"surround":637},{"id":5,"title":6,"authors":7,"badge":10,"body":11,"date":627,"description":628,"extension":629,"image":630,"meta":631,"navigation":632,"path":633,"seo":634,"stem":635,"__hash__":636},"blog_ru/blog/inside-the-translation-pipelines.md","Внутри четырех конвейеров перевода, которые обеспечивают работу InterMIND",[8],{"name":9},"The Mind.com Team","Architecture",{"type":12,"value":13,"toc":601},"minimark",[14,18,27,35,38,64,67,72,75,107,110,113,115,119,125,131,136,143,146,175,179,182,185,208,210,214,219,224,228,231,265,269,272,275,301,308,315,317,321,326,331,353,357,364,369,372,392,399,402,404,408,413,421,425,436,451,465,468,472,479,482,486,493,500,502,506,509,529,532,534,538,558,560,564,592,598],[15,16,6],"h1",{"id":17},"внутри-четырех-конвейеров-перевода-которые-обеспечивают-работу-intermind",[19,20,21,22,26],"p",{},"Старая страница ",[23,24,25],"code",{},"/product/overview/how-it-works"," на mind.com устарела на несколько крупных релизов. Она описывает единый «движок перевода» так, как это делают большинство страниц поставщиков — одна большая стрелка от «вы говорите» к «они слышат». Эта картина была упрощением уже два года назад. Сегодня она неверна.",[19,28,29,30,34],{},"На самом деле InterMIND использует ",[31,32,33],"strong",{},"четыре отдельных конвейера перевода",", каждый из которых решает свою проблему с помощью отдельного движка, отдельного бюджета задержки и отдельного уровня качества. У них общий выбор языка. Но у них не общий движок.",[19,36,37],{},"Это обновленный ответ на вопрос «как это работает».",[39,40,41],"blockquote",{},[19,42,43,46,47,55,56,59,60,63],{},[31,44,45],{},"Сопутствующий материал:"," ",[48,49,51],"a",{"href":50},"/blog/how-many-languages-do-you-support",[52,53,54],"em",{},"«Сколько языков вы поддерживаете?»"," охватывает то, что каждый конвейер ",[52,57,58],{},"охватывает"," (24 / 21 / 30 / 6). Этот пост рассказывает, что каждый конвейер ",[52,61,62],{},"делает"," — и почему он является отдельным механизмом.",[65,66],"hr",{},[68,69,71],"h2",{"id":70},"почему-один-движок-для-всего-ложь","Почему «один движок для всего» — ложь",[19,73,74],{},"Платформа для онлайн-встреч должна выполнять как минимум четыре задачи одновременно, и они тянут в несовместимых направлениях:",[76,77,78,85,91,97],"ol",{},[79,80,81,84],"li",{},[31,82,83],{},"Голосовой перевод в реальном времени"," — звук на входе, переведенный звук на выходе, менее одной секунды, каждый зритель на своем языке. Жесткое ограничение — задержка.",[79,86,87,90],{},[31,88,89],{},"Текст чата в реальном времени"," — короткие сообщения, быстро, с сохранением правок, цитат и HTML-структуры.",[79,92,93,96],{},[31,94,95],{},"Общие заметки в реальном времени"," — совместный набор текста по символам, со структурной иерархией (списки, заголовки, чекбоксы), которая должна сохраняться при переводе.",[79,98,99,102,103,106],{},[31,100,101],{},"Асинхронные файлы документов"," — 40-страничный PDF, добавленный в чат. Нет бюджета задержки. Жесткое ограничение — ",[52,104,105],{},"точность"," — форматирование, таблицы, номера страниц, шрифт.",[19,108,109],{},"Можно создать один гигантский вызов LLM, который попытается выполнить все четыре задачи. Мы пробовали. Он плохо справляется со всеми четырьмя. Бюджет задержки для голоса означает, что модель не может думать; бюджет точности для документов означает, что модель должна. Правка чата требует диффа на языке зрителя; 40-страничный PDF требует сохранения формата, что не может обеспечить ни одна модель потоковой передачи токенов.",[19,111,112],{},"Поэтому мы используем четыре. Вот каждый из них.",[65,114],{},[68,116,118],{"id":117},"конвейер-1-голосовой-перевод-в-реальном-времени","Конвейер 1: Голосовой перевод в реальном времени",[19,120,121,124],{},[31,122,123],{},"Проблема:"," Участник говорит по-французски. Другой участник присоединился на немецком, третий на бразильском португальском, четвертый на японском. Каждый должен слышать говорящего на своем языке, в своем ухе, с задержкой, достаточно короткой, чтобы поддерживать зрительный контакт.",[19,126,127,130],{},[31,128,129],{},"Бюджет:"," Менее секунды от начала до конца. Что-либо дольше ~1,2 секунды, и разговор прерывается — люди начинают говорить поверх перевода, и встреча смещается к «давайте просто переключимся на английский».",[132,133,135],"h3",{"id":134},"как-на-самом-деле-перемещается-аудио","Как на самом деле перемещается аудио",[19,137,138],{},[139,140],"img",{"alt":141,"src":142},"Конвейер голосового перевода: браузер говорящего выполняет ASR локально через Mind SDK, ws-сервер рассылает расшифровку движку перевода через один WebSocket для каждого целевого языка, присутствующего в комнате, и каждый зритель получает свою собственную переведенную звуковую дорожку.","/blog/inside-the-translation-pipelines-voice.svg",[19,144,145],{},"Несколько моментов, которые стоит отметить:",[147,148,149,155,165],"ul",{},[79,150,151,154],{},[31,152,153],{},"ASR работает в браузере говорящего",", а не на центральном сервере. Мы используем Mind SDK локально; это экономит время на передачу данных и предоставляет нам расшифровку исходного языка с минимально возможной задержкой до начала перевода.",[79,156,157,160,161,164],{},[31,158,159],{},"Перевод не является единым вещанием."," Мы поддерживаем пул соединений WebSocket к нашему движку перевода, ",[31,162,163],{},"по одному на каждый целевой язык, присутствующий в комнате",". Если три участника выбрали немецкий, немецкий использует одно соединение. Если никто не выбрал арабский, соединение с арабским не открывается. Пул отключает неактивные соединения через пять минут. Вот почему встреча на четырех языках стоит столько же, сколько встреча на сорока языках, вплоть до того, кто фактически присутствовал — мы никогда не переводим на языки, которые никто из участников не слушает.",[79,166,167,170,171,174],{},[31,168,169],{},"Синтезированная речь индивидуальна для каждого зрителя."," Каждый участник получает свою собственную переведенную звуковую дорожку, смешанную с видео оригинального говорящего. Они не смотрят мастер-версию «переведенной встречи» — они смотрят ",[52,172,173],{},"ту же самую встречу",", с их личным аудиоканалом, переведенным на выбранный ими язык. Вот почему два человека в одной физической комнате могут подключить наушники и слышать разные языки.",[132,176,178],{"id":177},"почему-это-важно-когда-встреча-идет-не-по-плану","Почему это важно, когда встреча идет не по плану",[19,180,181],{},"Во время 40-минутного звонка на восьми языках все может ломаться интересными способами: отключаются WebSocket-соединения, ASR временно неправильно транскрибирует имя собственное, сеть одного участника начинает работать с перебоями. Архитектура выше позволяет нам изолировать сбои: сбой аудио у одного зрителя не влияет на остальных семерых, потому что движок перевода изначально никогда не производил «единственный перевод» — он производил восемь, параллельно, и только пострадавший должен восстановиться.",[19,183,184],{},"Сам движок наш, размещен на нашей собственной инфраструктуре. Мы не направляем голосовой перевод в реальном времени через сторонние LLM общего назначения. Бюджет задержки исключает их; требования к хранению данных исключают их для регулируемых клиентов, которым это действительно важно.",[39,186,187],{},[19,188,189,46,192,195,196,202,203,207],{},[31,190,191],{},"Что мы публикуем о качестве голоса:",[48,193,194],{"href":194},"/benchmark"," ежемесячно запускает производственный голосовой конвейер на предложениях ",[48,197,201],{"href":198,"rel":199},"https://github.com/facebookresearch/flores",[200],"nofollow","FLORES-200"," для каждой опубликованной языковой пары. Указан судья (основной Gemini 2.5 Flash, резервный Claude Sonnet 4). Полное распределение — медиана, p10, p90, мин, макс, размер выборки — находится на странице. См. ",[48,204,206],{"href":205},"/benchmark/methodology","методологию",", чтобы узнать, что эти числа измеряют, а что нет.",[65,209],{},[68,211,213],{"id":212},"конвейер-2-перевод-чата-в-реальном-времени","Конвейер 2: Перевод чата в реальном времени",[19,215,216,218],{},[31,217,123],{}," Каждое сообщение чата на встрече, переведенное для каждого участника на его собственный язык, по мере отправки. Плюс правки — и правки должны выглядеть как правки, а не как повторный перевод.",[19,220,221,223],{},[31,222,129],{}," Быстро, но не менее секунды. Сообщение чата может появиться на другом языке за полсекунды, и это никого не будет волновать. Что волнует людей, так это правильность перевода и осмысленность правок.",[132,225,227],{"id":226},"что-на-самом-деле-делает-конвейер-чата","Что на самом деле делает конвейер чата",[19,229,230],{},"Каждое сообщение проходит через тот же движок перевода, который использует голосовой конвейер — но с разной предварительной и последующей обработкой:",[147,232,233,239,249,259],{},[79,234,235,238],{},[31,236,237],{},"HTML-структура сохраняется."," Чат поддерживает форматированный текст (абзацы, списки, цитаты, полужирный шрифт, курсив). Мы преобразуем его в обычный текст для модели, переводим, затем снова оборачиваем результат в исходные теги. Модель никогда не видит HTML — она видит чистую прозу.",[79,240,241,244,245,248],{},[31,242,243],{},"Цитаты переводятся независимо."," Если вы отвечаете на сообщение и цитируете его, блок ",[23,246,247],{},"[QUOTE]…[/QUOTE]"," и новое содержимое переводятся как отдельные единицы, чтобы модель не могла их перепутать.",[79,250,251,254,255,258],{},[31,252,253],{},"Длинные сообщения разбиваются на части."," Мы разделяем по границам абзацев по 1000 символов на часть. Каждая часть является отдельным вызовом перевода. Мы ",[52,256,257],{},"не"," подаем модели романы длиной в 4000 символов за один раз — режимы отказа (усечение, потерянные абзацы, обрывы предложений) слишком неприглядны.",[79,260,261,264],{},[31,262,263],{},"Перевод «ленивый»."," Мы используем IntersectionObserver: сообщение переводится только тогда, когда оно прокручивается в область видимости зрителя. Переключение языков в долгосрочном канале раньше приводило к повторному воспроизведению каждого вызова API перевода из истории. Теперь это не так.",[132,266,268],{"id":267},"интересная-часть-правки-как-различия","Интересная часть: правки как различия",[19,270,271],{},"В версии 1.2 мы изменили поведение правок чата для зрителей на другом языке. Старое поведение было таким: кто-то редактирует сообщение, мы повторно переводим все сообщение, вы видите новый абзац и должны сами определить, что изменилось.",[19,273,274],{},"Новое поведение:",[76,276,277,280,287,298],{},[79,278,279],{},"Исходное сообщение уже было переведено на ваш язык.",[79,281,282,283,286],{},"Когда отправитель вносит правки, мы повторно переводим ",[52,284,285],{},"новую"," версию.",[79,288,289,290,293,294,297],{},"Мы вычисляем разницу между ",[31,291,292],{},"вашим предыдущим переводом"," и ",[31,295,296],{},"вашим новым переводом"," на вашем языке.",[79,299,300],{},"Мы показываем эту разницу прямо в строке — так же, как Git показывает, что изменилось.",[19,302,303,304,307],{},"Поэтому, когда «review by Tuesday» (проверить к вторнику) превращается в «review by Thursday» (проверить к четвергу) на английском, ваш испаноязычный коллега видит выделенное ",[31,305,306],{},"martes → jueves",", а не повторно переведенный абзац, который ему придется перечитывать.",[19,309,310,311,314],{},"Это потребовало обработки конвейера чата как ",[52,312,313],{},"сохраняющего состояние"," кэша для каждого зрителя, а не как безстатусной конечной точки «перевод по запросу». Документы и голосовой перевод этого не требуют. Чат требует.",[65,316],{},[68,318,320],{"id":319},"конвейер-3-перевод-общих-заметок-в-реальном-времени","Конвейер 3: Перевод общих заметок в реальном времени",[19,322,323,325],{},[31,324,123],{}," Ведущий открывает панель общих заметок и начинает печатать. Каждый участник видит заметки на своем языке, посимвольно, с сохранением структуры документа — заголовков, вложенных списков, чек-листов, блоков кода.",[19,327,328,330],{},[31,329,129],{}," То же, что и у чата (~полсекунды), но с двумя дополнительными ограничениями:",[147,332,333,343],{},[79,334,335,338,339,342],{},[31,336,337],{},"Переводимый объект меняется в процессе перевода."," Ведущий все еще печатает. Наивная система, которая переводит «весь документ» при каждом нажатии клавиши, вызывает мерцание и расходует бюджет API. Мы переводим на уровне ",[52,340,341],{},"измененной единицы",", а не всего документа.",[79,344,345,348,349,352],{},[31,346,347],{},"Структура должна сохраниться."," Если вы попросите модель перевода перевести markdown-блок с тремя вложенными списками, вы получите нечто, что ",[52,350,351],{},"выглядит"," как оригинал, но с едва заметно выровненной иерархией, перенумерованными элементами или измененным отступом. Мы не позволяем модели видеть весь блок.",[132,354,356],{"id":355},"чем-конвейер-заметок-отличается-от-чата","Чем конвейер заметок отличается от чата",[19,358,359,360,363],{},"Сохранение структуры — это главное. Мы переводим ",[31,361,362],{},"каждый элемент списка независимо",", а не как единый документ. Модель видит:",[39,365,366],{},[19,367,368],{},"\"Проверка соответствия — результаты за Q2\"",[19,370,371],{},"— не:",[39,373,374,377,381],{},[19,375,376],{},"\"# План проекта",[68,378,380],{"id":379},"квартал","Квартал",[147,382,383,386,389],{},[79,384,385],{},"Проверка соответствия — результаты за Q2",[79,387,388],{},"Оценка поставщиков",[79,390,391],{},"Поставщики первого уровня...\"",[19,393,394,395,398],{},"Окружающий документ — ",[23,396,397],{},"\u003Cul>",", заголовки, отступы — перестраивается на стороне клиента с использованием той же структуры, что и у оригинального документа, при этом каждый конечный узел заменяется его переводом. Модель никогда не «улучшает» иерархию.",[19,400,401],{},"Заметки также используют ту же модель различий для каждого зрителя, что и правки чата: если ведущий изменяет строку, зрители на других языках видят выделенные измененные слова, а не новый абзац.",[65,403],{},[68,405,407],{"id":406},"конвейер-4-асинхронный-перевод-документов","Конвейер 4: Асинхронный перевод документов",[19,409,410,412],{},[31,411,123],{}," Кто-то помещает 40-страничный PDF, документ Word, презентацию PowerPoint или таблицу Excel в чат. Каждый участник может запросить копию на своем языке. Переведенный файл должен выглядеть как оригинал — те же шрифты, те же таблицы, те же номера страниц, те же заголовки, те же диаграммы на своих местах.",[19,414,415,417,418,420],{},[31,416,129],{}," Отсутствие ограничений по времени в реальном времени. Минута — нормально. Две минуты — нормально. Ограничение — это ",[31,419,105],{}," — если переведенный PDF не выглядит как оригинал, получатель ему не доверяет.",[132,422,424],{"id":423},"почему-этот-конвейер-не-использует-тот-же-движок-что-и-голосовой","Почему этот конвейер не использует тот же движок, что и голосовой",[19,426,427,428,431,432,435],{},"Общая LLM, даже очень хорошая, вернет вам переведенный ",[52,429,430],{},"текст"," документа. Она не вернет вам переведенный ",[52,433,434],{},"PDF"," с тем же макетом. У модели нет понятия «разрыв страницы, который должен совпадать с оригиналом» или «ячейка таблицы, которая должна сохранять свою ширину столбца».",[19,437,438,439,442,443,446,447,450],{},"Для этого типа поверхностей мы напрямую используем ",[31,440,441],{},"DeepL Document API",". Он специально разработан для перевода ",[52,444,445],{},"файлов как файлов",", а не ",[52,448,449],{},"прозы, извлеченной из файлов",". DeepL обрабатывает:",[147,452,453,456,459,462],{},[79,454,455],{},"PDF (с сохранением макета)",[79,457,458],{},"DOCX, DOC",[79,460,461],{},"PPTX",[79,463,464],{},"XLSX",[19,466,467],{},"Документ загружается в конвейер DeepL, переводится на стороне сервера с сохранением форматирования и возвращается в том же формате. Затем мы загружаем результат в наше объектное хранилище и отображаем его в чате как загружаемое вложение.",[132,469,471],{"id":470},"что-это-стоит-и-почему-мы-это-не-скрываем","Что это стоит и почему мы это не скрываем",[19,473,474,475,478],{},"DeepL выставляет счет за минимум 50 000 символов на документ — примерно один доллар США за файл на уровне Pro, независимо от того, одна страница в документе или тридцать. Мы берем на себя эту стоимость, а не взимаем плату за каждый файл; это отображается в использовании перевода на встрече как ",[31,476,477],{},"оплаченные символы",", преобразованные в словесные единицы, соответствующие тому, как остальная часть продукта отчитывается о переводческой деятельности.",[19,480,481],{},"Мы выбрали DeepL для этого типа поверхностей, потому что это лучший в своем классе движок специально для перевода документов. Мы не претендуем на то, что создали лучший. Обратное неверно — DeepL не использует конвейер живого голосового перевода, подобный тому, который мы создали для встреч. Разные проблемы; разные инструменты. Честная версия «что лежит в основе перевода InterMIND» — это «правильный движок для каждого конвейера», а не «наш движок везде».",[132,483,485],{"id":484},"языки-которые-охватывает-этот-конвейер-но-не-голосовой","Языки, которые охватывает этот конвейер, но не голосовой",[19,487,488,489,492],{},"Конвейер документов поддерживает ",[31,490,491],{},"30 языков"," против 21 для голоса. Дополнительные девять включают: болгарский, греческий, эстонский, индонезийский, литовский, латышский, норвежский букмол, словацкий, словенский — плюс арабский и турецкий, которые мы скрываем из средства выбора в реальном времени, потому что качество голоса не соответствует нашим требованиям, но DeepL хорошо справляется с ними как с документами.",[19,494,495,496,499],{},"Эта асимметрия реальна. Это означает, что французский участник встречи может запросить PDF-файл контракта на эстонском языке, даже если он не может слушать встречу на эстонском. Мы отмечаем это в средстве выбора, а не сглаживаем одним числом. Обоснование приведено в ",[48,497,498],{"href":50},"посте о количестве языков",".",[65,501],{},[68,503,505],{"id":504},"где-конвейеры-встречаются","Где конвейеры встречаются",[19,507,508],{},"Четыре конвейера не работают изолированно. Конференц-зал — это место, где они соприкасаются, и эти «швы» имеют значение:",[147,510,511,517,523],{},[79,512,513,516],{},[31,514,515],{},"Сообщение в чате с прикрепленным документом"," запускает конвейер чата для текста и конвейер документов для файла. Участник на другом языке видит сообщение переведенным немедленно, а перевод вложения поступает асинхронно в виде загружаемого файла.",[79,518,519,522],{},[31,520,521],{},"Общая заметка, цитирующая строку стенограммы",", пересекает заметки ↔ голос. Стенограмма — это то, что голосовой конвейер произвел для языка отправителя; перевод заметки создает копию этой цитаты для каждого зрителя на его языке, с сохранением атрибуции источника.",[79,524,525,528],{},[31,526,527],{},"Стенограмма, экспортированная после встречи",", запускает текстовый конвейер в стиле чата по всей беседе, создавая файл на каждом языке, который участники могут загрузить. Это тот же путь кода, что и перевод чата, просто в пакетном режиме.",[19,530,531],{},"Выбор языка — это один элемент пользовательского интерфейса. Инфраструктура под ним — это четыре конвейера, взаимодействующие друг с другом.",[65,533],{},[68,535,537],{"id":536},"что-мы-намеренно-не-пытаемся-сделать","Что мы намеренно не пытаемся сделать",[147,539,540,546,552],{},[79,541,542,545],{},[31,543,544],{},"Нет «единой модели перевода»."," Мы не создаем одну модель, которая выполняет голосовой перевод, чат, заметки и документы. Компромисс между задержкой и точностью не имеет победителя. Мы используем подходящий движок для каждой поверхности.",[79,547,548,551],{},[31,549,550],{},"Без бесшумной переадресации."," Если сегодня голосовой перевод не может перевести на хинди, мы не переключаемся молча на движок документов и не делаем вид, что все сработало. Хинди скрыт из средства выбора на обеих поверхностях, потому что результат на любой из этих поверхностей сегодня непригоден для выпуска.",[79,553,554,557],{},[31,555,556],{},"Нет «мы переводим на 200 языков»."," Наш движок поддерживает 24. Наш продукт поддерживает 21 для живых поверхностей и 30 для документов. Большее число, приятное для маркетинга, — это просто потолок движка. Число продукта — это то, что фактически соответствует требованиям аудитора.",[65,559],{},[68,561,563],{"id":562},"попробуйте-сами","Попробуйте сами",[147,565,566,578,585],{},[79,567,568,573,574,499],{},[48,569,571],{"href":570},"/demo",[23,572,570],{}," — запускает конвейер живого голосового перевода с использованием вашего аудио на любом из 21 языка продукта. Тот же конвейер, который оценивает ",[48,575,576],{"href":194},[23,577,194],{},[79,579,580,584],{},[48,581,582],{"href":194},[23,583,194],{}," — качество по парам, помесячно, на реальном трафике. Включает пары, которые мы намеренно скрываем из средства выбора, с возможностью глубокой ссылки.",[79,586,587,591],{},[48,588,589],{"href":205},[23,590,205],{}," — что представляют собой эти числа, чем они не являются, и кто является судьей.",[19,593,594,595,499],{},"Четыре конвейера, четыре движка, одна конференц-комната. Это честная замена старой страницы ",[23,596,597],{},"how-it-works",[19,599,600],{},"— Команда Mind.com",{"title":602,"searchDepth":603,"depth":604,"links":605},"",2,3,[606,607,611,615,618,619,624,625,626],{"id":70,"depth":603,"text":71},{"id":117,"depth":603,"text":118,"children":608},[609,610],{"id":134,"depth":604,"text":135},{"id":177,"depth":604,"text":178},{"id":212,"depth":603,"text":213,"children":612},[613,614],{"id":226,"depth":604,"text":227},{"id":267,"depth":604,"text":268},{"id":319,"depth":603,"text":320,"children":616},[617],{"id":355,"depth":604,"text":356},{"id":379,"depth":603,"text":380},{"id":406,"depth":603,"text":407,"children":620},[621,622,623],{"id":423,"depth":604,"text":424},{"id":470,"depth":604,"text":471},{"id":484,"depth":604,"text":485},{"id":504,"depth":603,"text":505},{"id":536,"depth":603,"text":537},{"id":562,"depth":603,"text":563},"2026-05-24","В InterMIND нет понятия «единственного перевода». Существуют четыре конвейера — голосовой, чат, заметки, документы — каждый со своим движком, бюджетом задержки и уровнем качества. Вот что на самом деле происходит между моментом, когда вы говорите, и моментом, когда участник на другом языке вас понимает.","md","/blog/inside-the-translation-pipelines.svg",{},true,"/blog/inside-the-translation-pipelines",{"title":6,"description":628},"blog/inside-the-translation-pipelines","wyqvrDV-A8Ml86E0jSKD3l32zGDd82VM4SRAmU8AM2I",[638,642],{"title":639,"path":50,"stem":640,"description":641,"children":-1},"\"Сколько языков вы поддерживаете?\" — и почему наш честный ответ состоит из шести чисел, а не одного","blog/how-many-languages-do-you-support","Каждый поставщик называет одно количество языков. Мы не можем, потому что перевод — это не один продукт. Здесь представлен постраничный обзор для InterMIND — что отфильтровано, почему и что мы публикуем на сайте.",{"title":643,"path":644,"stem":645,"description":646,"children":-1},"Почему маркетинг качества перевода не работает — и что мы публикуем взамен","/blog/why-translation-quality-marketing-is-broken","blog/why-translation-quality-marketing-is-broken","Любой вендор перевода публикует количество языков. Никто не публикует проверяемое качество по парам на реальном трафике. Почему этот пробел важен в вашей следующей закупке — и что мы публикуем вместо этого."]