Habilite a tradução de voz entre pessoas conversando em tempo real com o Twilio ConversationRelay

February 12, 2025
Escrito por
Revisado por
Paul Kamp
Twilion

Imagine um mundo onde as barreiras linguísticas desaparecem em tempo real, exatamente como acontece em Star Trek, em que o tradutor universal permite que diferentes civilizações se entendam sem obstáculos. Ainda não estamos viajando pelas estrelas, mas o Conversation Relay da Twilio nos aproxima mais dessa realidade.

Neste artigo, saiba como configurar um serviço de tradução simultânea em tempo real com o Conversation Relay da Twilio para que qualquer pessoa possa se comunicar em uma chamada no idioma nativo ou no qual se sente mais à vontade, sem perder o ritmo da conversa. A pessoa do outro lado da chamada também pode usar o idioma que preferir! Essa tecnologia garante que as conversas fluam de forma natural e autêntica entre idiomas, permitindo auxiliar clientes a resolver problemas complexos ou conectar pacientes ao atendimento de que precisam.

Mas como o Conversation Relay da Twilio torna isso possível? E como ele pode revolucionar a forma como empresas e organizações se conectam com o mundo? Vamos conferir os detalhes.

Como a aplicação funciona

A versão beta pública do Conversation Relay foi lançada em novembro de 2024 com foco na conexão entre pessoas e agentes de IA. O Conversation Relay elimina a complexidade de criar aplicações de voz ao abstrair os componentes de fala para texto e texto para fala, além de fornecer um sistema de orquestração simples baseado em websocket para se conectar à sua aplicação.

Não surpreende que o caso de uso de agentes de IA tenha atraído tanta atenção. No entanto, as pessoas ainda precisam se comunicar entre si e o Conversation Relay também pode impulsionar essas conversas. Além de se conectar à IA generativa, o Conversation Relay pode se integrar a outros tipos de serviços de processamento de texto para viabilizar casos de uso adicionais. Um caso de uso óbvio é a tradução de conversas entre pessoas.

A seguir, apresentamos uma prova de conceito que demonstra a tradução de conversas entre pessoas utilizando o Twilio Conversation Relay. A aplicação de referência foi criada usando a AWS e seus produtos sem servidor, mas a arquitetura fornece a estrutura para criar soluções em outros provedores de nuvem. Os serviços de tradução são impulsionados pelo AWS Translate.

Vamos saber mais.

Aplicação de prova de conceito

Vejamos como criar uma aplicação de prova de conceito utilizando o Conversation Relay. Esta é a arquitetura de referência:

Diagram showing IVR flow between caller, Twilio, AWS Lambda functions, and callee agent.
Diagram showing IVR flow between caller, Twilio, AWS Lambda functions, and callee agent.

Vamos analisar o diagrama com base nas etapas identificadas pelos números 1 a 6.

  1. Chamada de voz inbound: o autor da chamada faz uma chamada para um número Twilio e o gerenciador de chamadas inbound direciona o contato para sua aplicação. Sua aplicação usará o número de telefone do autor da chamada para extrair preferências de idioma e estabelecer uma sessão do Conversation Relay.
  2. Estabeleça o estado do autor e do destinatário da chamada: como o autor da chamada precisa falar com outra pessoa em tempo real, configure e salve o estado dessa outra pessoa ("destinatário da chamada") e vincule as duas chamadas no gerenciamento de estado. Por fim, acione um evento para fazer a chamada para a outra pessoa.
  3. Faça uma chamada outbound: utilize a plataforma da Twilio para fazer a segunda chamada e estabelecer uma segunda sessão independente do Conversation Relay.
  4. O autor da chamada diz algo: com as duas chamadas independentes estabelecidas, o autor da chamada diz algo e a sessão do Conversation Relay utiliza a conversão de fala em texto para transcrever as palavras e enviá-las à sua aplicação por meio de mensagens websocket.
  5. Etapa da tradução: sua aplicação recebe o texto do autor da chamada e mantém o estado dessas duas chamadas. Ela utiliza o serviço de tradução para converter o texto falado pelo autor da chamada para o idioma usado pelo destinatário da chamada.
  6. Fale as palavras traduzidas: sua aplicação publica o texto traduzido para a outra conexão websocket, que pertence ao destinatário da chamada. O Conversation Relay recebe esse texto e fala as palavras no idioma do destinatário da chamada. Em seguida, o destinatário da chamada pode falar em seu idioma para iniciar o processo no sentido inverso.

Parece incrível, mas funciona?

Com certeza! Assista ao vídeo a seguir para obter uma visão geral da arquitetura e conferir uma demonstração.

Vídeo de introdução com demonstração


Prefere assistir a um vídeo da instalação?

Pré-requisitos

Esta criação não é para principiantes! É necessário ter conhecimento sobre a AWS, computação sem servidor e programação antes de avançar.

Vamos criar!

1. Baixe o código para esta aplicação

Baixe o código neste repositório e abra a pasta no ambiente de desenvolvimento de sua preferência.

GitHub repository page showing code directory and recent commits for ConversationRelay-Translator project.

O repositório inclui todos os recursos necessários para implantar essa solução.

Primeiro, precisamos instalar alguns pacotes de nós. Em uma janela de terminal aberta no diretório do projeto, execute os comandos a seguir para instalar o SDK da Twilio:

$ npm --prefix ./layers/layer-cr-twilio-client/nodejs install

2. Atualize o arquivo template.yaml com suas variáveis

Para fazer chamadas de API e executar esta solução, você precisará inserir suas credenciais. Para fins deste artigo e para agilizar a configuração, você pode inserir as credenciais diretamente no arquivo yaml. No entanto, como prática recomendada, especialmente em ambientes de produção, armazene as credenciais usando métodos aprovados pela sua organização. O AWS Secrets Manager, por exemplo, seria uma ótima opção.

Abra o arquivo template.yaml no diretório do projeto. Este arquivo yaml contém as instruções necessárias para provisionar os recursos da AWS.

No arquivo template.yaml, usando FIND (Localizar), procure TWILIO_ (disponível no recurso TwilioInitiateCallFunction).

Descomente as linhas semelhantes a:

#TWILIO_ACCOUNT_SID: "YOUR-TWILIO-ACCOUNT-SID"
#TWILIO_AUTH_TOKEN: "YOUR-TWILIO-AUTH-TOKEN"          
#AGENT_PHONE_NUMBER: "<ENTER-A-DEFAULT-TWILIO-NUMBER>"
#TWILIO_DEFAULT_FROM: "ENTER-YOUR-DEFAULT-TWILIO-NUMBER"

Em seguida, substitua os valores pelos respectivos SID da conta da Twilio, token de autenticação, número de telefone padrão do destinatário da chamada (a pessoa à qual você deseja se conectar) e número Twilio padrão usado para chamar o destinatário da chamada.

Use FIND (Localizar) TWILIO_ no arquivo template.yaml novamente para localizar o segundo ponto em que será necessário atualizar o SID da conta da Twilio e o token de autenticação (disponível no recurso OnDisconnectLambdaFunction).

Descomente as linhas semelhantes a:

#TWILIO_ACCOUNT_SID: "YOUR-TWILIO-ACCOUNT-SID"
#TWILIO_AUTH_TOKEN: "YOUR-TWILIO-AUTH-TOKEN"

Então, substitua os valores pelos respectivos SID da conta da Twilio e token de autenticação.

3. Atualize seu perfil da AWS

Para implantar a aplicação SAM em sua conta AWS, verifique se as credenciais da AWS estão devidamente configuradas. Siga essas instruções. Esta aplicação usa seu perfil da AWS salvo localmente para implantar em sua conta da AWS.

Copie aws-profile.profile.sample para aws-profile.profile e, no novo arquivo, insira seu nome de perfil local da AWS. Assim, você poderá executar comandos da AWS localmente para implantar em sua conta da AWS.

Depois de autenticar sua conta da AWS, avance para a próxima etapa.

4. Implante o código

Com essas configurações definidas, estamos prontos para implantar. Em uma janela de terminal, verifique se você está no diretório do projeto e execute:

$ sam build

Este comando processa o arquivo template.yaml e prepara a infraestrutura de tecnologia para implantação.

$ sam deploy –guided --stack-name CR-TRANSLATOR --template template.yaml --profile $(cat ./aws-profile.profile) --capabilities CAPABILITY_NAMED_IAM

Observe que ele faz referência ao arquivo aws-profile.profile para autenticar e implantar em sua conta da AWS.

Em seguida, será aberta uma sessão interativa no prompt para definir configurações básicas e implantar todos os seus recursos por meio de uma infraestrutura de tecnologia no CloudFormation. Após executar esse comando, insira estas respostas, substituindo a AWS Region (Região da AWS) pela região de sua escolha:

Configuring SAM deploy
======================
        Looking for config file [samconfig.toml] :  Not found
        Setting default arguments for 'sam deploy'
        =========================================
        Stack Name [CR-TRANSLATOR]: CR-TRANSLATOR
        AWS Region [us-east-1]: us-east-1 
        #Shows you resources changes to be deployed and require a 'Y' to initiate deploy
        Confirm changes before deploy [y/N]: N
        #SAM needs permission to be able to create roles to connect to the resources in your template
        Allow SAM CLI IAM role creation [Y/n]: Y
        #Preserves the state of previously provisioned resources when an operation fails
        Disable rollback [y/N]: N
        CallSetupFunction has no authentication. Is this okay? [y/N]: y
        Save arguments to configuration file [Y/n]: Y
        SAM configuration file [samconfig.toml]: 
        SAM configuration environment [default]:

Depois de responder às últimas perguntas, o SAM criará um conjunto de alterações com todos os recursos que serão implantados. Responda "y" à última pergunta para que a AWS comece a criar os recursos.

Previewing CloudFormation changeset before deployment
======================================================
Deploy this changeset? [y/N]:

O prompt do SAM informará quando a implantação de todos os recursos for concluída. Em seguida, no console da AWS e no CloudFormation, você pode navegar pela nova infraestrutura de tecnologia que acabou de criar. Todos os Lambdas, Lambda Layers, API Gateways, funções do IAM e tópicos do SNS são criados automaticamente. (A IaC, infraestrutura como código, é incrível!)

Você verá uma nova infraestrutura de tecnologia chamada CR-TRANSLATOR:

Screenshot of AWS CloudFormation Stacks list showing one stack CR-TRANSLATOR with status UPDATE_COMPLETE.
Screenshot of AWS CloudFormation Stacks list showing one stack CR-TRANSLATOR with status UPDATE_COMPLETE.

Clique nessa infraestrutura de tecnologia, vá para a guia Outputs (Saídas) e copie o valor referente a TwimlAPI, que será necessário na próxima etapa! Ele deve ser semelhante a:

Screenshot of CR-TRANSLATOR outputs with keys, values, descriptions, and highlighted Twilio API initialization link
Screenshot of CR-TRANSLATOR outputs with keys, values, descriptions, and highlighted Twilio API initialization link

4. Conecte seu número de telefone Twilio

Com o valor copiado da etapa anterior, vá para o console da Twilio e navegue até o número de telefone que deseja usar para esta aplicação. Na seção Voice Handler (Gerenciador de voz), em A call comes in (Uma chamada é recebida), selecione webhook e cole o valor copiado acima para conectar seu número de telefone Twilio à aplicação que acabou de ativar.

A seção correta da página da Twilio será semelhante a:

Configuration screen showing webhook URL for voice call routing
Configuration screen showing webhook URL for voice call routing

5. Carregue os detalhes da configuração

Agora, precisamos carregar um perfil na nova tabela DynamoDB que está vinculada ao número de telefone do autor da chamada. Esse perfil será usado para configurar as sessões do Conversation Relay para o autor e o destinatário da chamada.

Primeiro, abra o arquivo profile-caller-example.js na pasta configuration/dynamo-loaders.

Nesse arquivo, revise os comentários na parte superior e edite as propriedades do objeto JSON para configurar o autor e o destinatário da chamada, além dos idiomas e das vozes que ambos usarão.

Depois de concluir a edição do arquivo, execute este comando no diretório do projeto:

$ aws dynamodb put-item --table-name CR-TRANSLATOR-AppDatabase --item "$(node ./configuration/dynamo-loaders/profile-caller-example.js | cat)" --profile $(cat ./aws-profile.profile)

A execução do comando criará um item em sua instância do DynamoDB que será usado para configurar cada sessão do autor da chamada. Confira esse item no console do DynamoDB.

No console da AWS, acesse DynamoDB, selecione TABLES (Tabelas) e, em seguida, a tabela chamada CR-TRANSLATORAppDatabase. Por fim, clique em EXPLORE TABLE ITEMS (Explorar itens da tabela).

A seguir, localize e clique em um item com uma chave principal que corresponda ao número de telefone do autor da chamada. O item será semelhante a:

Screenshot showing various attributes for call details configuration, including language, voice, and providers.
Screenshot showing various attributes for call details configuration, including language, voice, and providers.

Faça uma chamada!

Para funcionar, você precisará de dois telefones. Um deles ligará para o número de telefone da Twilio e o outro receberá a segunda chamada da segunda sessão do Conversation Relay.

Agora você pode ligar para seu número de telefone Twilio e começar a conversar por meio da nova aplicação de tradução de voz em tempo real! No exemplo de configuração do repositório, o autor da chamada fala inglês e o destinatário da chamada fala espanhol. É possível alterar para qualquer idioma compatível.

Para alterar idiomas e vozes do autor da chamada e do destinatário da chamada, modifique os parâmetros de configuração diretamente do console do DynamoDB. Verifique os itens da sessão gerados pelas chamadas e veja como essa aplicação une as conversas.

Limpeza

Para evitar custos indesejados, você pode excluir a infraestrutura de tecnologia do CloudFormation da aplicação no console da AWS. Selecione a infraestrutura de tecnologia e a opção DELETE (Excluir), conforme mostrado a seguir:

Interface showing AWS CloudFormation stack 'CR-TRANSLATOR' selected for deletion.
Interface showing AWS CloudFormation stack 'CR-TRANSLATOR' selected for deletion.

Implante na produção

Embora seja possível colocá-lo em operação muito rapidamente, esse sistema não está pronto para seu ambiente de produção. A finalidade deste artigo e repositório é inspirar você a criar aplicações de tradução de voz incríveis em tempo real com a Twilio e o Conversation Relay.

Conclusão

Neste artigo, mostramos como ativar rapidamente um sistema de tradução de prova de conceito usando o Twilio Voice e o Twilio Conversation Relay. Mais uma vez, quero enfatizar que esta é uma prova de conceito. Ainda assim, você há de concordar que a latência e a funcionalidade básica são muito promissoras. O Twilio Conversation Relay torna casos de uso como este muito mais acessíveis!

Alguns casos de uso que podem ser impulsionados pela tradução de conversas entre pessoas demonstrada nesta prova de conceito são:

  • Educação e aprendizagem on-line: possibilidade de conectar professores a alunos que falam diferentes idiomas, promovendo ambientes de aprendizagem inclusivos e globais. As escolas também podem se comunicar de forma eficaz com mães e pais em reuniões, independentemente das barreiras linguísticas.
  • Viagem e hospitalidade: hotéis, companhias aéreas e agências de viagem podem fornecer suporte de idiomas em tempo real para turistas, melhorando sua experiência.
  • Comércio eletrônico e varejo: as empresas on-line podem se expandir globalmente ao oferecer atendimento multilíngue ao cliente em tempo real, ampliando a confiança e as conversões. As centrais de suporte podem ajudar os clientes a navegar por produtos técnicos em seus idiomas nativos.
  • Governo e serviços públicos: linhas diretas de emergência e organizações de serviços públicos podem se comunicar com comunidades que falam diferentes idiomas, garantindo acesso a informações e respostas mais rápidas.
  • Ajuda humanitária e respostas a desastres: as organizações de ajuda humanitária podem coordenar esforços em zonas de crise com mais eficiência e apoiar refugiados no acesso a serviços essenciais.

Com o Conversation Relay, a Twilio se responsabiliza pela gestão das complexidades da telefonia e pela orquestração de fala em texto e texto em fala. Assim, sua empresa pode priorizar a aplicação, neste caso, a tradução.

A latência exigida para traduzir texto entre diferentes idiomas é ínfima e este repositório é ideal para conversas com trechos curtos. Quando uma pessoa fala várias frases de uma só vez, a latência aumenta por causa do tempo necessário para reproduzir as palavras no outro idioma. Na verdade, é mais uma "impressão" de latência, já que o sistema não é lento. É preciso apenas reproduzir as palavras duas vezes. Para eliminar essa percepção, basta adicionar efeitos sonoros enquanto o texto traduzido está sendo falado ou falar o texto traduzido para ambas as partes, permitindo que cada uma delas saiba quando a tradução foi concluída. Há várias formas de resolver esse problema e a escolha dependerá dos requisitos específicos de cada caso.

Uma coisa é certa: o potencial da tradução em tempo real é enorme. Queremos ver e ouvir o que você pode criar com essas ferramentas incríveis da Twilio!

Material bônus

Alguns dos meus colegas Twilions se uniram recentemente em um evento interno para demonstrar as possibilidades de uso dessa solução, mais especificamente, o Twilio Flex, em um contact center.

Conseguimos conectar a segunda sessão do Conversation Relay do "destinatário da chamada" a um agente com suporte do Flex. Essa solução utiliza um proxy para vincular as duas chamadas. Parte do código para uma solução de proxy está disponível neste repositório.

Confira nossa apresentação:


Dan Bartlett cria aplicações web desde a primeira onda das empresas ponto.com. Os princípios fundamentais daquela época ainda são os mesmos, mas hoje é possível criar soluções mais interessantes com muito mais rapidez. Você pode entrar em contrato com ele pelo e-mail dbartlett [arroba] twilio.com.