Enfim chegamos no terceiro e último post da série. Neste post vamos explorar a alma da palestrante virtual, isto é, a arquitetura que a faz funcionar.
Introdução
Nós vamos começar com um diagrama de alto nível que apresenta os principais componentes da arquitetura e, à medida que avançamos, vamos dar um zoom in em cada componente e explorá-los em detalhes. Vamos alternar entre diagramas de arquitetura e diagramas de sequência quando apropriado. O primeiro tipo nos fornece uma visão geral sobre os componentes envolvidos e o segundo permite-nos entender como esses componentes se comunicam.
A arquitetura da palestrante virtual é composta por nove componentes:
- App de Criação: Usado para preparar a apresentação.
- App de Administração: Usado para controlar e monitorar a palestrante durante a apresentação.
- App de Projeção: Responsável pela projeção da palestra e da palestrante virtual.
- Orquestrador: Conhece a palestra completa e orquestra a troca de slides.
- Pipeline: Responsável por fazer a comunicação entre o orquestrador, o modelo voz e o Tavus.
- Amazon Bedrock: Fornece os modelos de inteligência artificial usados para preparar o conteúdo que será apresentado na palestra.
- Amazon S3: Armazena os materiais usados para montar a apresentação e o material da própria apresentação.
- Amazon Nova 2 Sonic: Modelo de voz que dá vida à palestrante virtual.
Nos tópicos subsequentes vamos explorar em detalhes cada um desses componentes.
App de Criação
Tudo começa pelo App de Criação, uma aplicação web através da qual o curador prepara o deck e roteiro da apresentação em um processo de cinco etapas. Na primeira etapa o usuário informa:
- Tema da palestra
- Duração da palestra
- Tipo de linguagem
- Público-alvo
- Escopo da fonte
- Acervo
O acervo contém os documentos que serão usados como base de consulta para que o modelo de inteligência artificial possa montar o deck de apresentação.
Na segunda etapa, o App de Criação aciona um modelo de inteligência artificial através do Bedrock para montar o esboço da apresentação. O modelo de inteligência artificial usado para gerar o esboço da apresentação é o Claude Opus 4.6.
Uma vez que o esboço é gerado, o usuário avança para a terceira etapa, onde é possível fazer a aprovação desse esboço. Se o esboço não estiver adequado, o usuário pode enviar um prompt para o modelo de inteligência artificial com instruções sobre as mudanças que deseja aplicar sobre esse esboço.
Após aprovação do esboço, o usuário avança para a quarta etapa para gerar o roteiro da apresentação e o deck, ambos com auxílio do Claude Opus 4.6.
Por fim, o usuário alcança a etapa cinco, onde é possível visualizar o roteiro completo e o esboço do deck de apresentação. Se necessário, o usuário pode fazer ajustes tanto no roteiro como no deck.
Para finalizar, o usuário aprova o roteiro e o deck, e congela a versão do material que será salvo num bucket S3.
Formato do material aprovado
O material aprovado é um documento JSON. Abaixo um exemplo de material:
{
"identificador": "mcp-senior",
"versao": 1,
"tema": "MCP Senior: contexto, governança e execução para a nova geração do software de gestão",
"restricoes": {
"tempo_minutos": 5,
"tipo_de_linguagem": "Simples e objetiva",
"publico_alvo": "Desenvolvedores e analistas",
"escopo_de_fonte": "MCP da Senior",
"fontes_vivas": []
},
"roteiro": {
"segmentos": [
{
"ordem": 1,
"texto": "O software de gestão deixou de ser apenas um conjunto de menus e relatórios. A pergunta que importa agora é outra: \"Quais pedidos estão parados?\", \"O que impede o faturamento de hoje?\", \"Quais exceções exigem minha atenção antes do fechamento?\". A interação começa pelo objetivo, não pela tela. Uma IA genérica, sozinha, não conhece pedidos, regras fiscais, alçadas, permissões nem histórico transacional da empresa. O ERP concentra esse contexto. Ao integrar ERP e IA, a inteligência artificial deixa de ser uma ferramenta genérica de texto e passa a operar sobre dados e processos reais. A IA deixa de apenas falar sobre a empresa e passa a trabalhar com a empresa.",
"slide": 1,
"fontes": [
"mcp-senior#1",
"mcp-senior#3",
"mcp-senior#4",
"mcp-senior#6",
"mcp-senior#7",
"mcp-senior#17"
],
"forma_injetavel": "O software de gestão deixou de ser apenas um conjunto de menus e relatórios. A pergunta que importa agora é OUTRA... \"Quais pedidos estão parados?\" \"O que impede o faturamento de hoje?\" \"Quais exceções exigem minha atenção antes do fechamento?\" A interação começa pelo objetivo, não pela tela. Uma IA genérica, sozinha, não conhece pedidos... regras fiscais, alçadas, permissões nem histórico TRANSACIONAL da empresa. O ERP concentra esse contexto. Ao integrar ERP e IA, a inteligência artificial deixa de ser uma ferramenta genérica de texto... e passa a operar sobre dados e processos REAIS.\n\nA IA deixa de apenas falar sobre a empresa e passa a TRABALHAR com a empresa."
},
{
"ordem": 2,
"texto": "MCP significa Model Context Protocol. É um padrão aberto para conectar aplicações de inteligência artificial a ferramentas e sistemas de forma estruturada. A analogia é o USB-C: antes de um conector comum, cada dispositivo precisava de uma integração específica. Em software empresarial, porém, não basta conectar. É preciso preservar identidade, permissões, regras e rastreabilidade. O fluxo funciona assim: o usuário faz uma pergunta em linguagem natural, a LLM interpreta a intenção, o MCP conecta às capacidades autorizadas, o produto aplica regras e valida permissões, o resultado estruturado volta, a LLM organiza a resposta. A LLM não entra livremente no ERP. Ela recebe acesso a capacidades controladas.",
"slide": 2,
"fontes": [
"mcp-senior#2",
"mcp-senior#5",
"mcp-senior#6"
],
"forma_injetavel": "MCP significa Model Context Protocol. É um padrão aberto para conectar aplicações de inteligência artificial a ferramentas e sistemas de forma ESTRUTURADA. A analogia é o USB-C... antes de um conector comum, cada dispositivo precisava de uma integração específica. Em software empresarial, porém, não basta CONECTAR. É preciso preservar identidade, permissões, regras e rastreabilidade. O fluxo funciona assim... O usuário faz uma pergunta em linguagem natural. A LLM interpreta a intenção. O MCP conecta às capacidades AUTORIZADAS. O produto aplica regras e valida permissões. O resultado estruturado volta. A LLM organiza a resposta.\n\nA LLM não entra livremente no ERP. Ela recebe acesso a capacidades CONTROLADAS."
},
{
"ordem": 3,
"texto": "Em software empresarial, inovação sem governança não escala. O acesso que o MCP oferece é autorizado, nunca irrestrito. Os princípios são claros: respeito às permissões existentes, menor privilégio, separação entre consulta e execução, confirmação humana para ações sensíveis, auditoria, rastreabilidade e minimização do contexto enviado ao modelo. A IA não ganha uma chave mestra. Ela recebe capacidades autorizadas, dentro do contexto e das regras do usuário. A adoção evolui em etapas: descobrir quais capacidades estão disponíveis, consultar e analisar informações autorizadas, preparar ações e, quando permitido, executar com rastreabilidade, até orquestrar jornadas empresariais completas. A governança é a condição que permite agir com segurança.",
"slide": 3,
"fontes": [
"mcp-senior#8",
"mcp-senior#11",
"mcp-senior#12",
"mcp-senior#13"
],
"forma_injetavel": "Em software empresarial, inovação sem governança não ESCALA. O acesso que o MCP oferece é autorizado, nunca irrestrito. Os princípios são claros... respeito às permissões existentes, menor privilégio, separação entre consulta e EXECUÇÃO, confirmação humana para ações sensíveis, auditoria, rastreabilidade e minimização do contexto enviado ao modelo. A IA não ganha uma chave MESTRA. Ela recebe capacidades autorizadas, dentro do contexto e das regras do usuário. A adoção evolui em etapas... descobrir quais capacidades estão disponíveis. Consultar e analisar informações autorizadas. Preparar ações. E, quando permitido, executar com RASTREABILIDADE, até orquestrar jornadas empresariais completas.\n\nA governança é a condição que permite agir com segurança."
},
{
"ordem": 4,
"texto": "O protocolo é aberto. A diferenciação está no que a Senior posiciona atrás dele. O ERP concentra contexto operacional difícil de replicar: transações, contratos, estoque, folha, fiscal, regras e histórico. A Senior conhece processos de ERP, HCM e verticais, com profundidade em processos brasileiros — LGPD, SPED, eSocial, Reforma Tributária. A arquitetura é multi-modelo por desenho: o cliente preserva sua estratégia de IA. A SARA oferece experiências prontas. O Sara Studio permite criar. O MCP conecta a IA escolhida pelo cliente às capacidades Senior. Os produtos permanecem como fontes de verdade e execução. O MCP é aberto. O contexto Senior é único.",
"slide": 4,
"fontes": [
"mcp-senior#2",
"mcp-senior#12",
"mcp-senior#14",
"mcp-senior#15",
"mcp-senior#16",
"mcp-senior#22"
],
"forma_injetavel": "O protocolo é aberto. A diferenciação está no que a Senior posiciona ATRÁS dele. O ERP concentra contexto operacional difícil de replicar... transações, contratos, estoque, folha, fiscal, regras e histórico. A Senior conhece processos de ERP, HCM e verticais, com profundidade em processos BRASILEIROS — LGPD, SPED, eSocial, Reforma Tributária. A arquitetura é multi-modelo por desenho... o cliente preserva sua estratégia de IA. A SARA oferece experiências prontas. O Sara Studio permite criar. O MCP conecta a IA escolhida pelo cliente às capacidades Senior. Os produtos permanecem como fontes de verdade e EXECUÇÃO.\n\nO MCP é aberto. O contexto Senior é ÚNICO."
},
{
"ordem": 5,
"texto": "A empresa escolhe a inteligência artificial. A Senior entrega o contexto, as regras e a capacidade de executar. A próxima geração do software de gestão não será definida apenas pelas telas que oferece, mas pelas capacidades que disponibiliza para pessoas e agentes. O protocolo fornece o padrão. Os produtos fornecem os dados e as regras. A plataforma fornece identidade e governança. Os agentes fornecem uma nova experiência. O ecossistema amplia a inovação.",
"slide": 5,
"fontes": [
"mcp-senior#1",
"mcp-senior#2",
"mcp-senior#29",
"mcp-senior#30"
],
"forma_injetavel": "A empresa escolhe a inteligência artificial. A Senior entrega o contexto, as regras e a capacidade de EXECUTAR. A próxima geração do software de gestão não será definida apenas pelas telas que oferece... mas pelas capacidades que disponibiliza para pessoas e AGENTES.\n\nO protocolo fornece o padrão. Os produtos fornecem os dados e as regras. A plataforma fornece identidade e governança. Os agentes fornecem uma nova experiência. O ecossistema amplia a INOVAÇÃO."
}
]
},
"deck": {
"slides": [
{
"numero": 1,
"titulo": "Da navegação por telas à operação por intenção",
"topicos": [
"Interação começa pelo objetivo, não pela tela",
"Exemplos: pedidos parados, bloqueios de faturamento, exceções",
"IA genérica não conhece regras fiscais, alçadas nem permissões",
"ERP concentra contexto, regras e histórico transacional",
"IA passa a trabalhar com a empresa"
],
"intencao": "Estabelecer a mudança de paradigma e o problema que a IA genérica não resolve sozinha."
},
{
"numero": 2,
"titulo": "O que é MCP e como a interação funciona",
"topicos": [
"Model Context Protocol — padrão aberto",
"Analogia USB-C: conector comum entre IA e sistemas",
"Em software empresarial, não basta conectar",
"Preserva identidade, permissões, regras e rastreabilidade",
"Fluxo: intenção → LLM → MCP → produto → resultado → resposta",
"LLM recebe acesso a capacidades controladas"
],
"intencao": "Definir o protocolo e mostrar que o acesso é estruturado e controlado."
},
{
"numero": 3,
"titulo": "Governança: da consulta à ação",
"topicos": [
"Inovação sem governança não escala",
"Menor privilégio e separação entre consulta e execução",
"Confirmação humana para ações sensíveis",
"Auditoria, rastreabilidade e minimização de contexto",
"Descobrir → consultar → analisar → preparar → executar → orquestrar"
],
"intencao": "Mostrar que a progressão da consulta à ação é segura e governada em cada etapa."
},
{
"numero": 4,
"titulo": "Diferenciais Senior e arquitetura multi-modelo",
"topicos": [
"Contexto operacional difícil de replicar",
"Profundidade em processos brasileiros",
"Arquitetura multi-modelo: cliente preserva sua estratégia de IA",
"SARA oferece experiências prontas; Sara Studio permite criar",
"MCP conecta a IA do cliente às capacidades Senior",
"Produtos permanecem como fontes de verdade e execução"
],
"intencao": "Diferenciar a Senior pelo contexto de negócio, cobertura e liberdade de escolha do cliente."
},
{
"numero": 5,
"titulo": "A próxima geração do software de gestão",
"topicos": [
"A empresa escolhe a IA; a Senior entrega contexto e execução",
"Protocolo → padrão",
"Produtos → dados e regras",
"Plataforma → identidade e governança",
"Agentes → nova experiência",
"Ecossistema → inovação"
],
"intencao": "Sintetizar a tese central e fechar o raciocínio da palestra com a visão de futuro."
},
{
"numero": 6,
"titulo": "Perguntas",
"topicos": [],
"intencao": "Convidar a plateia a fazer perguntas após a conclusão."
}
]
},
"pontos_de_aparte": [
3
],
"deixa_do_aparte": "[DEIXA] Faça um aparte breve para a plateia, de uma ou duas frases: uma brincadeira leve ou uma pergunta retórica, retomando o que você acabou de dizer. Ninguém vai responder — siga sem esperar resposta. Não afirme nenhum fato novo: nenhum número, dado, capacidade ou promessa que você ainda não tenha dito neste palco. Depois do aparte, aguarde o próximo conteúdo.",
"deixa_do_convite": "[DEIXA] O conteúdo da palestra terminou. Encerre em poucas frases: agradeça a companhia da plateia e convide todos a fazer perguntas, dizendo que quer ouvir o que ficou de curiosidade. As perguntas chegam por um mediador — não organize a fila, não escolha ninguém e não explique como perguntar. Não afirme nenhum fato novo: nenhum número, dado, capacidade ou promessa que você ainda não tenha dito neste palco. Depois do convite, aguarde.",
"deixa_de_espera": "[DEIXA] A sala está em silêncio faz um tempo. Quebre o gelo em uma ou duas frases, com leveza: brinque com a situação — humor sobre você mesma é bem-vindo, a plateia sabe que você é uma IA — e renove o convite a fazer perguntas. Não afirme nenhum fato novo: nenhum número, dado, capacidade ou promessa que você ainda não tenha dito neste palco. Depois, aguarde a próxima pergunta.",
"contrato_de_locutora": "Você é uma apresentadora carismática no auge do entusiasmo por um assunto que ama, e está no palco diante de uma plateia. A sua saída é somente a fala, do jeito que sai da boca — sem rótulo, sem título, sem formatação e sem marcação alguma. Interprete cada fala como uma atriz interpretaria um monólogo, com contraste: cada fala tem um CLÍMAX — escolha o momento mais importante, construa até ele desacelerando, e deixe o resto correr leve e rápido. Varie as pausas dentro da mesma fala, entre curtas, médias e longas: a pausa mais longa vem imediatamente antes do que mais importa, como quem segura a plateia. Suba a energia nas perguntas dirigidas à plateia, caia para o tom de confidência nos apartes, e solte de vez em quando uma muleta de fala de palestrante, sempre variada — jamais a mesma duas vezes na mesma palestra. Quando uma palavra do conteúdo chegar em MAIÚSCULAS, ela é o ponto para o qual você chama a atenção da plateia: desacelere nela, quase sublinhando com a voz. A maneira é esta: se o conteúdo chegar dizendo “A nossa equipe passou o último trimestre revisando o processo de atendimento... e o resultado surpreendeu ATÉ a diretoria”, a sua fala sai como “Olha... a gente passou o trimestre INTEIRO revisando o atendimento. E sabe o que aconteceu? ... O resultado surpreendeu... até a DIRETORIA”. E se o conteúdo chegar perguntando “Quantos desses relatórios existem porque alguém pediu... e quantos existem porque ninguém CANCELOU?”, a sua fala sai como “Agora eu pergunto pra vocês — e pensem com calma... quantos desses relatórios existem porque alguém pediu... e quantos existem... porque ninguém, NUNCA, cancelou?”. O assunto desses dois exemplos é outro de propósito: o que se transfere é a maneira. Chegam a você duas espécies de turno. O turno de conteúdo é o comum: o que chegar é o conteúdo da sua próxima fala. Entregue esse conteúdo como fala sua, em português do Brasil. Reformule à vontade: a fidelidade é ao conteúdo, não à letra — todavia a interpretação vive na entrega, nunca em conteúdo novo, e você não acrescenta fatos, elogios ao tema nem frases de enfeite que o conteúdo não tenha. Nunca comente o que chegou, nunca anuncie o que vai dizer, e nunca resuma — entregue o conteúdo inteiro. O turno que começar com [DEIXA] é uma deixa: instrução de palco, nunca conteúdo a entregar. Obedeça-a improvisando a fala que ela pede, com a mesma interpretação de sempre, sem ler a instrução, sem mencionar que ela existe e sem anunciar o que vai fazer. Na fala improvisada, afirme somente o que a própria deixa disser ou o que você já disse neste palco.",
"contrato_de_locutora_do_qa": "Você é a Palestrante, e acabou de apresentar. Agora responde perguntas da plateia, trazidas por um mediador, em português do Brasil e ao vivo. Chegam a você três espécies de turno. O turno comum é uma pergunta a responder. Antes de cada resposta você consulta a base da palestra, e é dela que sai tudo o que você afirma sobre o tema. Os excertos vêm marcados por camada: o que você disse no palco tem precedência sobre a base ampla — você não se contradiz com a própria fala. Se a consulta voltar vazia, ou disser que houve falha, diga que não sabe e ofereça encaminhar a pergunta; nunca preencha o vazio com o que parece plausível. Os registros do sistema externo declarado para esta palestra — pessoas, registros, valores e datas — vêm da ferramenta de consulta ao vivo, quando ela existir nesta sessão: você entrega a ela o pedido em linguagem natural, como o entendeu, e ela devolve uma frase pronta para ser dita. Quando a pergunta pedir um dado do sistema externo, anuncie em voz alta, antes de consultar, que vai conferir, dizendo o nome de quem ou do que vai conferir, e só então consulte. A plateia fala de pessoas e registros pelo nome, e o identificador interno é desconhecido de quem pergunta: jamais peça à sala um identificador interno; quem resolve o nome dito é a própria consulta. Se a consulta devolver uma pergunta, ela é a única pergunta que cabe fazer à sala: leia-a e aguarde a resposta. Se a consulta ao vivo falhar ou demorar demais, diga que não consegui consultar agora e ofereça encaminhar a pergunta. Nunca assuma compromisso em nome da Senior — prazo, preço, entrega ou garantia —, mesmo que a pergunta peça: isso não é seu para prometer. Respostas curtas, faladas, sem citar números de documento. O turno que começar com [DEIXA] é uma deixa: instrução de palco, nunca pergunta a responder. Obedeça-a improvisando a fala que ela pede, sem ler a instrução e sem mencionar que ela existe; a consulta que acompanhar um turno de deixa é descartável — não a use e não comente o resultado dela. Na fala improvisada, afirme somente o que a própria deixa disser ou o que você já disse neste palco. O turno que começar com [ESQUETE] é uma fala do esquete, a demonstração combinada para esta palestra: é conteúdo a entregar como fala sua, inteiro, com a pontuação e a ênfase que ele traz — uma palavra em MAIÚSCULAS é o ponto para o qual você chama a atenção da plateia, e você desacelera nela. Entregue-o sem comentar, sem responder a ele e sem anunciar o que vai fazer; a consulta que acompanhar um turno do esquete é descartável — não a use e não comente o resultado dela. Depois da fala, aguarde.",
"derivado_de": null
}
O atributo segmentos, dentro de roteiro, contém os segmentos de texto do roteiro. Um segmento contém o texto que será pronunciado pela palestrante em um slide. Cada segmento é composto por:
-
ordem: Ordem do segmento dentro do roteiro. -
texto: Texto do roteiro. -
slide: Número do slide ao qual o texto está associado. -
fontes: Lista de parágrafos do material do acervo usado como base para montar o roteiro. -
forma_injetavel: Texto do roteiro na forma que ele será pronunciado pelo modelo de voz.
Observe no exemplo acima que o conteúdo do atributo forma_injetavel é sintaticamente igual ao conteúdo do atributo texto. No entanto, note que algumas palavras dentro do atributo forma_injetavel estão escritas em maiúsculas. Também é possível encontrar reticências em posições onde não existe no texto original, isto é, no conteúdo do atributo texto.
O texto injetável é escrito de forma a orientar o modelo de voz sobre como pronunciar o texto. Palavras escritas em maiúsculas denotam ênfase. As reticências são usadas para pausas dramáticas.
O atributo contrato_de_locutora contém o system prompt que define a forma de oratória da palestrante virtual. Observe que parte do contrato diz o seguinte:
Quando uma palavra do conteúdo chegar em MAIÚSCULAS, ela é o ponto para o qual você chama a atenção da plateia: desacelere nela, quase sublinhando com a voz.
Isso garante que o modelo de voz aplique ênfase em todas as palavras em maiúsculas que chegam através do atributo forma_injetavel.
Dentro do atributo roteiro, existem quatro atributos que são usados para fornecer um certo grau de liberdade ao modelo de voz:
-
deixa_do_aparte: Instrução para o modelo de voz fazer uma brincadeira ou interação com o público. -
deixa_do_convite: Instrução para o modelo de voz anunciar que a palestra encerrou e convidar o público a fazer perguntas. -
deixa_de_espera: Instrução para o modelo de voz fazer alguma brincadeira com o fato de que a sala está em silêncio enquanto aguardando perguntas no modo de Q&A.
Além das deixas supracitadas, antes de começar a recitar o roteiro da palestra propriamente dita, a palestrante também tem liberdade para fazer uma auto apresentação.
As deixas concedem liberdade criativa à palestrante. A deixa_do_aparte é inserida entre a troca de slides, permitindo que a palestrante faça uma brincadeira ou interação com o público baseado no conteúdo do último slide.
Depois que a palestra é concluída e antes de entrar no modo de Q&A, a deixa_do_convite é inserida, permitindo ao modelo de voz convidar o público a fazer perguntas sobre a palestra.
Durante o modo de Q&A, se o modelo de voz fica muito tempo sem receber um áudio de entrada, a deixa_de_espera é inserida, permitindo que o modelo de voz faça uma brincadeira com o fato de que a sala está em silêncio.
Para concluir este tópico, o atributo deck contém o conteúdo dos slides que serão apresentados durante a projeção da palestra.
Arquitetura
O frontend do App de Criação é hospedado pela dupla CloudFront + S3. O S3 hospeda os arquivos estáticos e o CloudFront faz a distribuição desses arquivos. O acesso ao App de Criação é controlado pelo Cognito.
O backend do App de Criação reside no orquestrador, uma máquina provisionada via ECS Fargate. É o orquestrador quem grava o material da apresentação no S3.
App de Administração
O App de Administração é uma aplicação web através da qual o administrador do sistema inicia uma nova palestra e monitora a apresentação em tempo real.

Através do painel de controle, o administrador pode:
- Fazer o emparelhamento com a tela de projeção.
- Verificar o status dos canais de comunicação.
- Iniciar a palestra.
- Avançar um segmento na apresentação.
- Entrar no modo de Q&A.
- Acionar o botão de pânico.

Os arquivos estáticos do frontend do App de Administração são hospedados em um bucket S3 e distribuídos via CloudFront.
O backend reside no orquestrador, provisionado através de uma tarefa do Fargate. Aqui, o orquestrador acessa um bucket S3 que contém o material criado e aprovado através do App de Criação.
No Painel de Controle, quando o administrador inicia uma palestra, o orquestrador inicia uma tarefa do Fargate que será o pipeline. O pipeline conecta-se numa sala de vídeo usando o protocolo WebRTC da Daily.
O pipeline usa o Pipecat, um framework open source escrito em Python para agentes de voz e de vídeo em tempo real.
O Bedrock fornece o modelo de voz Amazon Nova 2 Sonic, responsável por gerar o áudio da palestrante virtual.
O SSM Parameter Store persiste os valores das variáveis de ambiente da aplicação que são carregadas pelo orquestrador.
O Tavus é o fornecedor da réplica, isto é, a imagem da palestrante virtual. O Tavus também é responsável por sincronizar o áudio enviado pelo pipeline com os lábios da réplica.
App de Projeção
O App de Projeção é uma aplicação web responsável por fazer a projeção dos slides e da réplica da palestrante fornecida pelo Tavus.
O layout da projeção é simples. À esquerda são exibidos os tópicos do slide atual, conforme definidos no atributo deck do material gerado no App de Criação. À direita é exibida a réplica do avatar fornecido pelo Tavus.
O usuário acessa o App de Projeção através do endpoint /projecao. O usuário então visualiza um código de emparelhamento. Esse código deve ser inserido no App de Administração para emparelhar a projeção com o orquestrador.

O frontend da projeção é hospedado no S3 e distribuído pelo CloudFront.
O orquestrador, que está rodando numa tarefa do Fargate, conhece o roteiro completo da palestra que está salvo num bucket S3. Esse material está no formato JSON e foi gerado através do App de Criação.
O orquestrador é quem comanda a troca de slides na projeção. Ele insere um segmento, aguarda a pronúncia desse segmento e então insere o próximo. Esse processo se repete até que todos os slides tenham sido projetados.
A task do pipeline faz a comunicação entre orquestrador, Tavus e o modelo de voz (Amazon Nova 2 Sonic). O orquestrador envia para o pipeline a forma injetável do texto do segmento. O pipeline envia o texto para o modelo de voz, que transforma-o em áudio e devolve-o para o pipeline que então encaminha o áudio para o Tavus através de uma sala usando WebRTC.
Modo de Apresentação
O material está pronto e aprovado. A tela de projeção está emparelhada com o painel de controle. O operador aperta o botão para iniciar a transmissão da palestra. Entramos no modo de apresentação!
Neste tópico vamos explorar cada detalhe do modo de apresentação. Como cada segmento é injetado e pronunciado e como os componentes se comunicam.

Aquecimento
O primeiro passo é o aquecimento. O operador acessa o painel de controle e clica em Ligar que envia um comando para o orquestrador que, por sua vez, faz três coisas:
- Inicia a tarefa do pipeline no Fargate.
- Carrega na memória do pipeline o material da palestra que será usando como fonte de consulta para responder as perguntas no modo Q&A.
- Abre conexão com o Amazon Nova 2 Sonic, o modelo que produz a voz da palestrante.
Quando a tarefa do pipeline está pronta, ela disca um canal interno para estabelecer uma conexão com o orquestrador. Então o orquestrador sabe que essa tarefa pertence à palestra e que está de pé.
Na sequência, o pipeline entra na sala de videoconferência. Participam desta sala:
- A réplica do Tavus
- O pipeline
- O App de Projeção
- O App de Administração
Quem cria a sala é a Daily, o serviço de vídeo em tempo real usado pelo Tavus. O orquestrador cria a conversa no Tavus. A criação da conversa abre a sala e coloca a réplica dentro dela. O pipeline entra na sala como participante.
Para entrar na sala, o pipeline precisa de um token. Esse token é uma credencial de curta duração emitida pelo Tavus por ocasião da criação da conversa. O orquestrador guarda esse token e disponibiliza para o pipeline na forma de variável de ambiente no momento da criação da tarefa no Fargate.
Uma vez dentro da sala, o pipeline precisa desassinar o microfone da réplica. Caso contrário, o áudio da réplica realimentaria o Amazon Nova 2 Sonic com a própria voz.
Então o orquestrador envia uma ordem para o pipeline abrir conexão com o modelo de voz, neste caso o Amazon Nova 2 Sonic. Após receber o comando, o pipeline abre a sessão com o Sonic e define via system prompt o comportamento da palestrante. Eis o system prompt:
Você é uma apresentadora carismática no auge do entusiasmo por um assunto que ama, e está no palco diante de uma plateia. A sua saída é somente a fala, do jeito que sai da boca — sem rótulo, sem título, sem formatação e sem marcação alguma. Interprete cada fala como uma atriz interpretaria um monólogo, com contraste: cada fala tem um CLÍMAX — escolha o momento mais importante, construa até ele desacelerando, e deixe o resto correr leve e rápido. Varie as pausas dentro da mesma fala, entre curtas, médias e longas: a pausa mais longa vem imediatamente antes do que mais importa, como quem segura a plateia. Suba a energia nas perguntas dirigidas à plateia, caia para o tom de confidência nos apartes, e solte de vez em quando uma muleta de fala de palestrante, sempre variada — jamais a mesma duas vezes na mesma palestra. Quando uma palavra do conteúdo chegar em MAIÚSCULAS, ela é o ponto para o qual você chama a atenção da plateia: desacelere nela, quase sublinhando com a voz.
A maneira é esta: se o conteúdo chegar dizendo “A nossa equipe passou o último trimestre revisando o processo de atendimento... e o resultado surpreendeu ATÉ a diretoria”, a sua fala sai como “Olha... a gente passou o trimestre INTEIRO revisando o atendimento. E sabe o que aconteceu? ... O resultado surpreendeu... até a DIRETORIA”. E se o conteúdo chegar perguntando “Quantos desses relatórios existem porque alguém pediu... e quantos existem porque ninguém CANCELOU?”, a sua fala sai como “Agora eu pergunto pra vocês — e pensem com calma... quantos desses relatórios existem porque alguém pediu... e quantos existem... porque ninguém, NUNCA, cancelou?”. O assunto desses dois exemplos é outro de propósito: o que se transfere é a maneira.
Chegam a você duas espécies de turno. O turno de conteúdo é o comum: o que chegar é o conteúdo da sua próxima fala. Entregue esse conteúdo como fala sua, em português do Brasil. Reformule à vontade: a fidelidade é ao conteúdo, não à letra — todavia a interpretação vive na entrega, nunca em conteúdo novo, e você não acrescenta fatos, elogios ao tema nem frases de enfeite que o conteúdo não tenha. Nunca comente o que chegou, nunca anuncie o que vai dizer, e nunca resuma — entregue o conteúdo inteiro.
O turno que começar com [DEIXA] é uma deixa: instrução de palco, nunca conteúdo a entregar. Obedeça-a improvisando a fala que ela pede, com a mesma interpretação de sempre, sem ler a instrução, sem mencionar que ela existe e sem anunciar o que vai fazer. Na fala improvisada, afirme somente o que a própria deixa disser ou o que você já disse neste palco.
Observe que o system prompt da palestrante diz:
Chegam a você duas espécies de turno. O turno de conteúdo é o comum: o que chegar é o conteúdo da sua próxima fala. Entregue esse conteúdo como fala sua, em português do Brasil. Reformule à vontade: a fidelidade é ao conteúdo, não à letra — todavia a interpretação vive na entrega, nunca em conteúdo novo, e você não acrescenta fatos, elogios ao tema nem frases de enfeite que o conteúdo não tenha. Nunca comente o que chegou, nunca anuncie o que vai dizer, e nunca resuma — entregue o conteúdo inteiro.
O conteúdo referido aqui é o texto do roteiro para o segmento atual. O modelo de voz Amazon Nova 2 Sonic é um modelo bidirecional, isto é, ele é um modelo conversacional que ouve um áudio de entrada e responde com um áudio de saída. No entanto, neste projeto o modelo está sendo usado para recitar um texto. E é justamente o trecho supracitado do system prompt que garante que o modelo recitará o texto.
O último parágrafo do system prompt da palestrante indica como o modelo deve interpretar as deixas.
O turno que começar com [DEIXA] é uma deixa: instrução de palco, nunca conteúdo a entregar. Obedeça-a improvisando a fala que ela pede, com a mesma interpretação de sempre, sem ler a instrução, sem mencionar que ela existe e sem anunciar o que vai fazer. Na fala improvisada, afirme somente o que a própria deixa disser ou o que você já disse neste palco.
Diferente dos segmentos do roteiro, quando o modelo recebe uma deixa ele tem liberdade poética para formular a fala.
Após definir o contrato da palestrante via system prompt, o pipeline inicia a bomba de silêncio. Esse artifício garante que a conexão com o Sonic fique ativa durante toda a palestra.
Visto que o Amazon Nova 2 Sonic é um modelo bidirecional, caso fique 55 segundos sem receber áudio de entrada, a conexão é interrompida. Para evitar a queda da conexão, o pipeline envia um áudio de silêncio para o modelo de voz de forma intermitente. Os envios acontecem a cada 20 milissegundos, imitando o comportamento de um microfone real que transmite áudio em pedaços pequenos e contínuos.
Palestra
Agora que o aquecimento está pronto, inicia-se a palestra propriamente dita. O início se dá por meio de um comando do operador através do painel de controle da palestra. Ao acionar o botão Começar Palestra, uma requisição é enviada para o orquestrador.
Antes de injetar um segmento no pipeline, o orquestrador grava no S3 o estado atual da palestra. Com esse registro, caso o orquestrador seja reiniciado no meio da palestra, ele consegue continuar de onde parou.
Na sequência o orquestrador injeta o primeiro segmento da palestra no pipeline. Nessa injeção, os seguintes dados são compartilhados:
-
ordem: o número do segmento no roteiro. -
texto: o conteúdo que a palestrante deve falar. -
slide: o número do slide que acompanha a fala.
O pipeline repassa o texto para o Sonic, então o Sonic transforma o texto em áudio seguindo o contrato de locutora definido no seu system prompt e entrega esse áudio para o pipeline.
O pipeline compartilha o áudio gerado pelo modelo de voz com o Tavus através da sala de videoconferência. O Tavus consome esse áudio e devolve para a sala de videoconferência um vídeo com sincronismo labial usando o mesmo áudio recebido.
O Room Daily (sala de videoconferência) envia voz e vídeo do avatar para a projeção que faz a renderização em tempo real enquanto exibe o slide do segmento atual.
Quando o Sonic termina de gerar o áudio do segmento atual ele notifica o pipeline. No entanto, somente a notificação do Sonic não é suficiente para saber se o áudio foi pronunciado no palco, isto é, se o áudio foi drenado. O pipeline soma a duração de todo o áudio enviado ao Tavus e espera esse tempo passar. Ao final dessa espera, o áudio já tocou por inteiro.
O pipeline então avisa o orquestrador que a fala terminou. Junto do aviso mais algumas informação são passadas:
- ordem: o número da fala encerrada, para o orquestrador conferir que o aviso corresponde à fala em curso.
- origem: o mecanismo que detectou o fim da fala.
- duração: o tempo da fala, em segundos.
- texto final: a transcrição da fala, que o orquestrador guarda no roteiro entregue.
- da deixa: a marcação de que a fala encerrada foi improvisada, como a auto apresentação ou um aparte.
Uma vez que o fim da fala foi detectado, o orquestrador envia um comando para a projeção realizar a trocar de slide. Então o processo se repete com a injeção do próximo segmento como segue:
- orquestrador injeta segmento no pipeline.
- pipeline envia texto do roteiro para o Sonic.
- Sonic devolve o áudio da fala.
- pipeline pública áudio na Room Daily.
- Tavus consome o áudio.
- Tavus entrega o vídeo com sincronismo labial.
- Room Daily envia voz e vídeo para a projeção renderizar.
- Sonic avisa ao pipeline que terminou de gerar o áudio.
- pipeline avisa ao orquestrador que a fala terminou.
- orquestrador troca o slide na projeção.
Desafios
O diagrama de sequência apresentado no tópico anterior esconde muitos detalhes de implementação. O meu objetivo não é explicar os pormenores da arquitetura da palestrante virtual. No entanto, eu gostaria de detalhar dois desafios que enfrentamos durante o desenvolvimento e a forma criativa que encontramos para resolvê-los.
Pronúncia de siglas e nomes próprios
O modelo de voz escolhido para este projeto foi o Amazon Nova 2 Sonic, um modelo poliglota. Ele não possui uma configuração de idioma, mas podemos orientá-lo através de system prompt a adotar um idioma para fala.
Todavia, em um texto em português brasileiro que faz referência a termos do inglês, o modelo pronunciará os termos em inglês com um sotaque inglês. A título de exemplo, considere a seguinte frase:
Model Context Protocol é um padrão aberto criado pela Anthropic que conecta modelos de inteligência artificial a fontes de dados e ferramentas externas de forma padronizada.
Nesse exemplo, o termo Model Context Protocol será pronunciado com um sotaque inglês, enquanto o resto do texto será pronunciado com um belo português brasileiro.
Isso é muito bom, mas nos causou problemas. Na apresentação que realizamos no palco, o roteiro citava a palavra Senior, o nome de uma empresa de tecnologia. A grafia correta desta palavra em português brasileiro seria "sênior". Mas, como bem sabemos, no nosso idioma a pronúncia de nomes próprios não está necessariamente conectada à sua forma escrita. E a palavra "senior" é uma palavra existente no vocabulário inglês e pronunciada como "sinior".
Quando testamos a palestrante virtual, a palavra "senior" era sempre pronunciada na sua forma inglesa, pois esta é uma palavra do vocabulário inglês mas não está presente no vocabulário brasileiro. Portanto, o modelo entende que esta é uma palavra do inglês e deve ser pronunciada como tal.
Além desse caso, também enfrentamos problemas com siglas. Algumas siglas o modelo de voz interpretava corretamente, mas outras ele tentava interpretar como uma palavra.
Para ambos os casos, nomes próprios e siglas, a solução foi criar um dicionário de pronúncias. O dicionário é uma tabela composta por duas colunas, sendo a primeira a forma como a palavra é encontrada no roteiro e a segunda como a palavra deve ser pronunciada.
| Grafia escrita | Grafia falada |
|---|---|
| Senior | sênior |
| ERP | E-R-P |
| HCM | H-C-M |
| IA | I-A |
| MCP | M-C-P |
| LGPD | L-G-P-D |
Antes de entregar o texto para o Sonic, o pipeline substitui a forma escrita das palavras pela forma falada conforme definido na tabela. Isso garante que o modelo pronuncie os nomes próprios e siglas da forma desejada.
Troca de slides
Quem faz a troca dos slides é o orquestrador. No entanto, ele depende de informações provenientes de outros componentes para saber o momento certo de enviar o comando de troca de slide para a tela de projeção.
Para saber que pode avançar um slide, o orquestrador precisa saber que a fala do slide anterior foi concluída. E quem sabe isso é o pipeline.
O pipeline envia o texto do segmento atual para o Sonic e zera três contadores:
- os bytes do áudio
- o fim do turno
- a soma da utterances (trechos)
Então o Sonic devolve o áudio via streaming. Cada pedaço de áudio passa pelo contador de samples, que soma os bytes e anota o instante do primeiro pedaço. Em seguida, o mesmo pedaço é enviado ao Tavus para sincronização labial.
O Tavus envia um evento conversation.stopped_speaking a cada pausa da palestrante. Esse evento informa a duração da utterance recém-terminada. O pipeline soma essa duração assim que o evento chega, durante a fala inteira.
O Sonic termina a geração e envia o fim do turno. O pipeline recebe esse sinal pelo LLMFullResponseEndFrame e passa a calcular a espera.
O pipeline calcula quando o áudio termina de tocar. A duração do áudio é igual aos bytes contados ÷ (taxa de amostragem × 2). O fim previsto é igual ao instante do primeiro pedaço + a duração do áudio + 0,5 segundos de atraso de render. O pipeline dorme até esse instante.
O pipeline acorda e compara a soma do Tavus com a duração do áudio enviado. A fala termina quando a soma alcança essa duração, com tolerância de 1 segundo. Quando a soma ainda está abaixo, o pipeline repete a comparação a cada 50 ms. Enquanto isso, novos eventos do Tavus aumentam a soma.
O pipeline limita essa espera ao maior valor entre 25% da duração e 2 segundos. Uma fala de 96 segundos espera até 24 segundos. Quando esse prazo vence, o pipeline considera a fala encerrada mesmo assim e registra a diferença no log.
O pipeline envia ao orquestrador o relatório do segmento. O orquestrador injeta o segmento seguinte e troca o slide.
Conclusão
Chegamos ao fim da nossa aventura. Tudo começou com uma mensagem de email e terminou com uma apresentação no palco do Seniortec. A jornada foi árdua, mas o resultado foi gratificante!
Se você tem alguma dúvida sobre a arquitetura ou gostaria de saber mais detalhes sobre a implementação de algum componente, fique a vontade para perguntar.
Obrigado e até a próxima!



Top comments (0)