[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"blog-post-pt-/inside-the-translation-pipelines":3},{"page":4,"surround":625},{"id":5,"title":6,"authors":7,"badge":10,"body":11,"date":615,"description":616,"extension":617,"image":618,"meta":619,"navigation":620,"path":621,"seo":622,"stem":623,"__hash__":624},"blog_pt/blog/inside-the-translation-pipelines.md","Por dentro dos quatro pipelines de tradução que executam o InterMIND",[8],{"name":9},"The Mind.com Team","Architecture",{"type":12,"value":13,"toc":590},"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,228,232,235,269,273,276,279,305,312,319,321,325,330,335,357,361,368,373,376,381,388,391,393,397,402,410,414,425,440,454,457,461,468,471,475,482,489,491,495,498,518,521,523,527,547,549,553,581,587],[15,16,6],"h1",{"id":17},"por-dentro-dos-quatro-pipelines-de-tradução-que-executam-o-intermind",[19,20,21,22,26],"p",{},"A antiga página ",[23,24,25],"code",{},"/product/overview/how-it-works"," no mind.com está várias grandes versões desatualizada. Ela descreve um único \"motor de tradução\" da maneira que a maioria das páginas de fornecedores faz — uma grande seta de \"você fala\" para \"eles ouvem\". Essa imagem já era uma simplificação há dois anos. Hoje, ela está errada.",[19,28,29,30,34],{},"A verdade é que o InterMIND executa ",[31,32,33],"strong",{},"quatro pipelines de tradução separados",", cada um resolvendo um problema diferente com um motor diferente, um orçamento de latência diferente e um envelope de qualidade diferente. Eles compartilham um seletor de idioma. Eles não compartilham um motor.",[19,36,37],{},"Esta é a resposta atualizada para \"como funciona\".",[39,40,41],"blockquote",{},[19,42,43,46,47,55,56,59,60,63],{},[31,44,45],{},"Um texto complementar:"," ",[48,49,51],"a",{"href":50},"/blog/how-many-languages-do-you-support",[52,53,54],"em",{},"\"Quantos idiomas vocês suportam?\""," aborda o que cada pipeline ",[52,57,58],{},"cobre"," (24 / 21 / 30 / 6). Este post aborda o que cada pipeline ",[52,61,62],{},"faz"," — e por que é uma coisa própria.",[65,66],"hr",{},[68,69,71],"h2",{"id":70},"por-que-um-motor-para-tudo-é-uma-mentira","Por que \"um motor para tudo\" é uma mentira",[19,73,74],{},"Uma plataforma de reuniões ao vivo tem pelo menos quatro tarefas a cumprir simultaneamente, e elas puxam em direções incompatíveis:",[76,77,78,85,91,97],"ol",{},[79,80,81,84],"li",{},[31,82,83],{},"Voz em tempo real"," — áudio de entrada, áudio traduzido de saída, em menos de um segundo, cada espectador em seu próprio idioma. A restrição rígida é a latência.",[79,86,87,90],{},[31,88,89],{},"Texto de chat em tempo real"," — mensagens curtas, rápidas, com edições e citações e estrutura HTML preservadas.",[79,92,93,96],{},[31,94,95],{},"Notas compartilhadas em tempo real"," — digitação colaborativa caractere por caractere, com hierarquia estrutural (listas, títulos, caixas de seleção) que deve sobreviver à tradução.",[79,98,99,102,103,106],{},[31,100,101],{},"Arquivos de documento assíncronos"," — um PDF de 40 páginas inserido no chat. Sem orçamento de latência. A restrição rígida é a ",[52,104,105],{},"fidelidade"," — formatação, tabelas, números de página, fonte.",[19,108,109],{},"Você pode construir uma única chamada de LLM gigante que tenta fazer todas as quatro coisas. Nós tentamos. Ela é ruim em todas as quatro. O orçamento de latência para voz significa que o modelo não pode pensar; o orçamento de fidelidade para documentos significa que o modelo precisa pensar. Uma edição de chat precisa de um diff no idioma do espectador; um PDF de 40 páginas precisa de preservação de formato que nenhum modelo de streaming de tokens oferece.",[19,111,112],{},"Então, executamos quatro. Aqui está cada um deles.",[65,114],{},[68,116,118],{"id":117},"pipeline-1-tradução-de-voz-em-tempo-real","Pipeline 1: Tradução de voz em tempo real",[19,120,121,124],{},[31,122,123],{},"O problema:"," Um participante fala francês. Outro participante entrou em alemão, um terceiro em português do Brasil, um quarto em japonês. Cada um precisa ouvir o orador em seu próprio idioma, em seu próprio ouvido, com um atraso curto o suficiente para manter o contato visual possível.",[19,126,127,130],{},[31,128,129],{},"O orçamento:"," Sub-segundo de ponta a ponta. Qualquer coisa além de ~1,2 segundos e a conversa se quebra — as pessoas começam a falar por cima da tradução, e a reunião se encaminha para \"vamos apenas mudar para o inglês\".",[132,133,135],"h3",{"id":134},"como-o-áudio-realmente-se-move","Como o áudio realmente se move",[19,137,138],{},[139,140],"img",{"alt":141,"src":142},"Pipeline de tradução de voz: o navegador do orador faz ASR localmente via Mind SDK, o ws-server distribui a transcrição para o motor de tradução por um WebSocket por idioma de destino presente na sala, e cada espectador recebe sua própria trilha de áudio traduzida.","/blog/inside-the-translation-pipelines-voice.svg",[19,144,145],{},"Alguns pontos que vale a pena nomear explicitamente:",[147,148,149,155,165],"ul",{},[79,150,151,154],{},[31,152,153],{},"O ASR é executado no navegador do orador",", não em um servidor central. Usamos o Mind SDK localmente; isso economiza uma rodada e nos dá a transcrição do idioma de origem com o menor atraso possível antes que a tradução possa sequer começar.",[79,156,157,160,161,164],{},[31,158,159],{},"A tradução não é uma única distribuição."," Mantemos um pool de conexões WebSocket com nosso motor de tradução, ",[31,162,163],{},"uma por idioma de destino presente na sala",". Se três participantes escolheram alemão, o alemão compartilha uma conexão. Se ninguém escolheu árabe, nenhuma conexão árabe é aberta. O pool descarta conexões ociosas após cinco minutos. É por isso que uma reunião de quatro idiomas custa o mesmo que uma reunião de quarenta idiomas até o ponto de quem realmente compareceu — nunca traduzimos para idiomas que nenhum participante está ouvindo.",[79,166,167,170,171,174],{},[31,168,169],{},"A fala sintetizada é por espectador."," Cada participante recebe sua própria trilha de áudio traduzida, mixada com o vídeo do orador original. Eles não estão assistindo a uma \"reunião traduzida\" principal — eles estão assistindo à ",[52,172,173],{},"mesma reunião",", com seu canal de áudio pessoal traduzido para o idioma escolhido. É por isso que duas pessoas na mesma sala física podem conectar fones de ouvido e ouvir idiomas diferentes.",[132,176,178],{"id":177},"por-que-isso-importa-quando-uma-reunião-sai-do-controle","Por que isso importa quando uma reunião sai do controle",[19,180,181],{},"Em uma chamada de 40 minutos com oito idiomas, as coisas se quebram de maneiras interessantes: WebSockets caem, o ASR transcreve erroneamente um nome próprio temporariamente, a rede de um participante fica instável. A arquitetura acima é o que nos permite isolar falhas: a falha de áudio de um espectador não afeta os outros sete, porque o motor de tradução nunca produziu \"a tradução\" em primeiro lugar — ele produziu oito, em paralelo, e apenas o afetado precisa se recuperar.",[19,183,184],{},"O próprio motor é nosso, hospedado em nossa própria infraestrutura. Não roteamos voz em tempo real através de LLMs de uso geral de terceiros. O orçamento de latência os exclui; a história da residência de dados os exclui para os clientes regulamentados que realmente se importam.",[39,186,187],{},[19,188,189,46,192,195,196,202,203,207],{},[31,190,191],{},"O que publicamos sobre a qualidade da voz:",[48,193,194],{"href":194},"/benchmark"," executa o pipeline de voz de produção contra frases ",[48,197,201],{"href":198,"rel":199},"https://github.com/facebookresearch/flores",[200],"nofollow","FLORES-200"," para cada par de idiomas publicado, mensalmente. O juiz é nomeado (Gemini 2.5 Flash primário, Claude Sonnet 4 como fallback). A distribuição completa — mediana, p10, p90, mínimo, máximo, tamanho da amostra — está na página. Consulte ",[48,204,206],{"href":205},"/benchmark/methodology","a metodologia"," para saber o que esses números medem e não medem.",[65,209],{},[68,211,213],{"id":212},"pipeline-2-tradução-de-chat-em-tempo-real","Pipeline 2: Tradução de chat em tempo real",[19,215,216,218],{},[31,217,123],{}," Cada mensagem de chat na reunião, traduzida para cada participante em seu próprio idioma, assim que é enviada. Além das edições — e as edições precisam parecer edições, não retraduções.",[19,220,221,223,224,227],{},[31,222,129],{}," Rápido, mas não sub-segundo. Uma mensagem de chat pode levar meio segundo para aparecer em outro idioma sem que ninguém se importe. O que as pessoas se importam é se a tradução está ",[52,225,226],{},"correta"," e se as edições fazem sentido.",[132,229,231],{"id":230},"o-que-o-pipeline-de-chat-realmente-faz","O que o pipeline de chat realmente faz",[19,233,234],{},"Cada mensagem passa pelo mesmo motor de tradução que o pipeline de voz usa — mas com pré e pós-processamento diferentes:",[147,236,237,243,253,263],{},[79,238,239,242],{},[31,240,241],{},"A estrutura HTML é preservada."," O chat suporta texto rico (parágrafos, listas, citações, negrito, itálico). Convertemos para texto simples para o modelo, traduzimos, e então envolvemos o resultado nas tags originais. O modelo nunca vê o HTML — ele vê prosa limpa.",[79,244,245,248,249,252],{},[31,246,247],{},"As citações são traduzidas independentemente."," Se você responder a uma mensagem e citá-la, o bloco ",[23,250,251],{},"[QUOTE]...[/QUOTE]"," e o novo conteúdo são traduzidos como unidades separadas, para que o modelo não possa confundir os dois.",[79,254,255,258,259,262],{},[31,256,257],{},"Mensagens longas são divididas em blocos."," Dividimos em limites de parágrafo com 1.000 caracteres por bloco. Cada bloco é sua própria chamada de tradução. Nós ",[52,260,261],{},"não"," alimentamos o modelo com romances de 4.000 caracteres de uma vez — os modos de falha (truncamento, parágrafos perdidos, cortes no meio da frase) são muito feios.",[79,264,265,268],{},[31,266,267],{},"A tradução é preguiçosa."," Usamos um IntersectionObserver: uma mensagem é traduzida apenas quando rola para a área de visualização do espectador. Mudar de idioma em um canal de longa duração costumava reproduzir todas as chamadas da API de tradução do histórico. Agora não.",[132,270,272],{"id":271},"a-parte-interessante-edições-como-diffs","A parte interessante: edições como diffs",[19,274,275],{},"Na v1.2, mudamos como as edições de chat se comportam para os espectadores em outro idioma. O comportamento antigo era: alguém edita uma mensagem, retraduzimos a mensagem inteira, você vê um parágrafo novo e tem que identificar o que mudou.",[19,277,278],{},"O novo comportamento:",[76,280,281,284,291,302],{},[79,282,283],{},"A mensagem original já foi traduzida para o seu idioma.",[79,285,286,287,290],{},"Quando o remetente edita, retraduzimos a ",[52,288,289],{},"nova"," versão.",[79,292,293,294,297,298,301],{},"Calculamos o diff entre ",[31,295,296],{},"sua tradução anterior"," e ",[31,299,300],{},"sua nova tradução",", em seu idioma.",[79,303,304],{},"Mostramos esse diff em linha — da mesma forma que o Git mostra o que mudou.",[19,306,307,308,311],{},"Então, quando \"revisar até terça\" se torna \"revisar até quinta\" em inglês, seu colega que lê espanhol vê ",[31,309,310],{},"martes → jueves"," destacado, não um parágrafo retraduzido que ele precisa reler.",[19,313,314,315,318],{},"Isso exigiu tratar o pipeline de chat como um cache ",[52,316,317],{},"com estado"," por espectador, não como um endpoint sem estado de tradução sob demanda. Documentos e voz não precisam disso. O chat sim.",[65,320],{},[68,322,324],{"id":323},"pipeline-3-tradução-de-notas-compartilhadas-em-tempo-real","Pipeline 3: Tradução de notas compartilhadas em tempo real",[19,326,327,329],{},[31,328,123],{}," O anfitrião abre um painel de notas compartilhadas e começa a digitar. Cada participante vê as notas em seu idioma, caractere por caractere, com a estrutura do documento — títulos, listas aninhadas, listas de verificação, blocos de código — intacta.",[19,331,332,334],{},[31,333,129],{}," O mesmo do chat (~meio segundo), mas com duas restrições extras:",[147,336,337,347],{},[79,338,339,342,343,346],{},[31,340,341],{},"O item a ser traduzido muda no meio da tradução."," O anfitrião ainda está digitando. Um sistema ingênuo que traduz \"o documento inteiro\" a cada tecla pressionada produz cintilação e queima o orçamento da API. Traduzimos na granularidade da ",[52,344,345],{},"unidade alterada",", não do documento inteiro.",[79,348,349,352,353,356],{},[31,350,351],{},"A estrutura deve sobreviver."," Se você pedir a um modelo de tradução para traduzir um blob markdown com três listas aninhadas, você receberá algo que ",[52,354,355],{},"parece"," o original, mas com hierarquia sutilmente achatada, itens renumerados ou recuo movido. Não deixamos o modelo ver o blob inteiro.",[132,358,360],{"id":359},"como-o-pipeline-de-notas-difere-do-chat","Como o pipeline de notas difere do chat",[19,362,363,364,367],{},"A preservação estrutural é o principal. Traduzimos ",[31,365,366],{},"cada item da lista independentemente"," em vez de como um único documento. O modelo vê:",[39,369,370],{},[19,371,372],{},"\"Revisão de conformidade — Entregáveis do Q2\"",[19,374,375],{},"— e não:",[39,377,378],{},[19,379,380],{},"\"# Plano do projeto\\n## Trimestre\\n- Revisão de conformidade — Entregáveis do Q2\\n- Pontuação de fornecedores\\n  - Fornecedores de Nível 1...\"",[19,382,383,384,387],{},"O documento de encapsulamento — o ",[23,385,386],{},"\u003Cul>",", os títulos, o recuo — é reconstruído no lado do cliente usando a mesma estrutura que o documento original tinha, com cada nó folha trocado por sua tradução. O modelo nunca consegue \"melhorar\" a hierarquia.",[19,389,390],{},"As notas também usam o mesmo modelo de diff por espectador que as edições de chat: se o anfitrião altera uma linha, os espectadores em outros idiomas veem as palavras alteradas destacadas, não um parágrafo novo.",[65,392],{},[68,394,396],{"id":395},"pipeline-4-tradução-assíncrona-de-documentos","Pipeline 4: Tradução assíncrona de documentos",[19,398,399,401],{},[31,400,123],{}," Alguém insere um PDF de 40 páginas, um documento do Word, uma apresentação do PowerPoint ou uma planilha do Excel no chat. Cada participante pode solicitar uma cópia em seu próprio idioma. O arquivo traduzido deve parecer o original — mesmas fontes, mesmas tabelas, mesmos números de página, mesmos cabeçalhos, mesmos gráficos no lugar.",[19,403,404,406,407,409],{},[31,405,129],{}," Sem restrição de tempo real. Um minuto está bom. Dois minutos está bom. A restrição é a ",[31,408,105],{}," — se o PDF traduzido não se parecer com o original, o destinatário não confiará nele.",[132,411,413],{"id":412},"por-que-este-pipeline-não-compartilha-um-motor-com-voz","Por que este pipeline não compartilha um motor com voz",[19,415,416,417,420,421,424],{},"Um LLM geral, mesmo um muito bom, entregará um ",[52,418,419],{},"texto"," traduzido de um documento. Ele não entregará um ",[52,422,423],{},"PDF"," traduzido com o mesmo layout. O modelo não tem o conceito de \"quebra de página que precisa alinhar com a fonte\" ou \"célula de tabela que precisa manter sua largura de coluna\".",[19,426,427,428,431,432,435,436,439],{},"Para esta superfície, usamos diretamente a ",[31,429,430],{},"DeepL Document API",". Ela foi construída especificamente para traduzir ",[52,433,434],{},"arquivos como arquivos",", não ",[52,437,438],{},"prosa extraída de arquivos",". O DeepL lida com:",[147,441,442,445,448,451],{},[79,443,444],{},"PDF (com preservação de layout)",[79,446,447],{},"DOCX, DOC",[79,449,450],{},"PPTX",[79,452,453],{},"XLSX",[19,455,456],{},"O documento é carregado para o pipeline do DeepL, traduzido no servidor com a formatação intacta e retornado no mesmo formato. Em seguida, carregamos o resultado para nosso armazenamento de objetos e o apresentamos de volta no chat como um anexo para download.",[132,458,460],{"id":459},"o-que-isso-custa-e-por-que-não-escondemos","O que isso custa e por que não escondemos",[19,462,463,464,467],{},"O DeepL cobra um mínimo de 50.000 caracteres por documento — aproximadamente um dólar americano por arquivo no nível Pro, independentemente de o documento ter uma ou trinta páginas. Absorvemos esse custo em vez de cobrar por arquivo; ele aparece no uso de tradução da reunião como ",[31,465,466],{},"caracteres faturados",", convertidos em unidades de palavra que correspondem à forma como o restante do produto relata a atividade de tradução.",[19,469,470],{},"Escolhemos o DeepL para esta superfície porque é o motor líder de mercado especificamente para tradução de documentos. Não fingimos ter construído um melhor. O mesmo não é verdade ao contrário — o DeepL não executa um pipeline de voz ao vivo do tipo que construímos para reuniões. Problemas diferentes; ferramentas diferentes. A versão honesta de \"o que impulsiona a tradução do InterMIND\" é \"o motor certo por pipeline\" — não \"nosso motor, em todos os lugares\".",[132,472,474],{"id":473},"idiomas-que-este-pipeline-cobre-que-a-voz-não-cobre","Idiomas que este pipeline cobre que a voz não cobre",[19,476,477,478,481],{},"O pipeline de documentos alcança ",[31,479,480],{},"30 idiomas",", contra 21 para voz. Os nove extras incluem: búlgaro, grego, estoniano, indonésio, lituano, letão, norueguês bokmål, eslovaco, esloveno — além de árabe e turco, que escondemos do seletor em tempo real porque a qualidade da voz não atende aos nossos padrões, mas que o DeepL manipula bem como documentos.",[19,483,484,485,488],{},"Essa assimetria é real. Isso significa que um participante francês em uma reunião pode solicitar o PDF do contrato em estoniano, mesmo que não possa ouvir a reunião em estoniano. Sinalizamos isso no seletor em vez de suavizar com um único número. O raciocínio está no ",[48,486,487],{"href":50},"post sobre contagem de idiomas",".",[65,490],{},[68,492,494],{"id":493},"onde-os-pipelines-se-encontram","Onde os pipelines se encontram",[19,496,497],{},"Os quatro pipelines não funcionam isoladamente. Uma sala de reunião é onde eles se tocam, e as junções importam:",[147,499,500,506,512],{},[79,501,502,505],{},[31,503,504],{},"Uma mensagem de chat com um anexo de documento"," aciona o pipeline de chat para o texto e o pipeline de documento para o arquivo. O participante em outro idioma vê a mensagem traduzida imediatamente e a tradução do anexo chegando assincronamente como um download.",[79,507,508,511],{},[31,509,510],{},"Uma nota compartilhada que cita uma linha de transcrição"," cruza notas ↔ voz. A transcrição é o que o pipeline de voz produziu para o idioma do remetente; a tradução da nota produz uma cópia por espectador dessa citação no idioma de todos os outros, com sua atribuição de fonte preservada.",[79,513,514,517],{},[31,515,516],{},"Uma transcrição exportada após a reunião"," executa o pipeline de texto estilo chat sobre a conversa completa, produzindo um arquivo por idioma que os participantes podem baixar. Este é o mesmo caminho de código da tradução de chat, apenas em lote.",[19,519,520],{},"O seletor de idioma é uma peça da interface do usuário. A infraestrutura subjacente são quatro pipelines, conversando entre si.",[65,522],{},[68,524,526],{"id":525},"o-que-deliberadamente-não-tentamos","O que deliberadamente não tentamos",[147,528,529,535,541],{},[79,530,531,534],{},[31,532,533],{},"Nenhum \"modelo unificado de tradução\"."," Não estamos construindo um modelo que faça voz, chat, notas e documentos. O equilíbrio entre latência e fidelidade não tem um vencedor. Usamos o motor certo para cada superfície.",[79,536,537,540],{},[31,538,539],{},"Nenhum redirecionamento silencioso."," Se a voz não consegue traduzir para o hindi hoje, não voltamos silenciosamente para o motor de documentos e fingimos que funcionou. O hindi está oculto do seletor em ambas as superfícies porque o resultado em qualquer uma das superfícies hoje não é publicável.",[79,542,543,546],{},[31,544,545],{},"Nenhum \"traduzimos para 200 idiomas\"."," Nosso motor emite 24. Nosso produto envia 21 nas superfícies ao vivo e 30 em documentos. O número maior amigável ao marketing é apenas o limite do motor. O número do produto é o que realmente atende aos padrões diante de um auditor.",[65,548],{},[68,550,552],{"id":551},"experimente-você-mesmo","Experimente você mesmo",[147,554,555,567,574],{},[79,556,557,562,563,488],{},[48,558,560],{"href":559},"/demo",[23,561,559],{}," — executa o pipeline de voz ao vivo com seu áudio, em qualquer um dos 21 idiomas do produto. O mesmo pipeline que pontua ",[48,564,565],{"href":194},[23,566,194],{},[79,568,569,573],{},[48,570,571],{"href":194},[23,572,194],{}," — qualidade por par, por mês, em tráfego real. Inclui os pares que deliberadamente escondemos do seletor, com link direto.",[79,575,576,580],{},[48,577,578],{"href":205},[23,579,205],{}," — o que os números são, o que não são, quem é o juiz.",[19,582,583,584,488],{},"Quatro pipelines, quatro motores, uma sala de reuniões. Essa é a substituição honesta da antiga página ",[23,585,586],{},"how-it-works",[19,588,589],{},"— A Equipe Mind.com",{"title":591,"searchDepth":592,"depth":593,"links":594},"",2,3,[595,596,600,604,607,612,613,614],{"id":70,"depth":592,"text":71},{"id":117,"depth":592,"text":118,"children":597},[598,599],{"id":134,"depth":593,"text":135},{"id":177,"depth":593,"text":178},{"id":212,"depth":592,"text":213,"children":601},[602,603],{"id":230,"depth":593,"text":231},{"id":271,"depth":593,"text":272},{"id":323,"depth":592,"text":324,"children":605},[606],{"id":359,"depth":593,"text":360},{"id":395,"depth":592,"text":396,"children":608},[609,610,611],{"id":412,"depth":593,"text":413},{"id":459,"depth":593,"text":460},{"id":473,"depth":593,"text":474},{"id":493,"depth":592,"text":494},{"id":525,"depth":592,"text":526},{"id":551,"depth":592,"text":552},"2026-05-24","Não existe ","md","/blog/inside-the-translation-pipelines.svg",{},true,"/blog/inside-the-translation-pipelines",{"title":6,"description":616},"blog/inside-the-translation-pipelines","LyRRT_EfMvE4dNETCxYJFvkHMaj8omtOZYXcSPZzSGU",[626,630],{"title":627,"path":50,"stem":628,"description":629,"children":-1},"\"Quantos idiomas vocês suportam?\" — e por que nossa resposta honesta é seis números, não um","blog/how-many-languages-do-you-support","Todo fornecedor cita um número de idiomas. Nós não podemos, porque a tradução não é um produto único. Aqui está o detalhamento por superfície para o InterMIND — o que é filtrado, por quê, e o que publicamos no site.",{"title":631,"path":632,"stem":633,"description":634,"children":-1},"Por que o marketing de qualidade de tradução está quebrado — e o que publicamos em vez disso","/blog/why-translation-quality-marketing-is-broken","blog/why-translation-quality-marketing-is-broken","Todo fornecedor de tradução publica a contagem de idiomas. Ninguém publica qualidade verificável por par em tráfego real. Por que essa lacuna importa na sua próxima avaliação de aquisição — e o que publicamos em vez disso."]