
Video + IA: Traduções ao vivo com o Audio Connector
Tempo de leitura: 5 minutos
Imagine estar em uma videochamada com pessoas de todo o mundo falando sua própria língua nativa e todos se entendendo. O áudio de quem está falando é traduzido em texto que os demais participantes podem ler em seu próprio idioma. Nesta postagem do blog, vamos explicar como podemos fazer isso acontecer. Um dos principais componentes é o novo recurso Audio Connector, recém-lançado.
Resumindo, com Audio Connector, os fluxos de áudio das suas sessões de videochamadas encaminhadas podem ser enviados individualmente (A, B) ou combinados (A+B) para um servidor WebSocket, com capacidade para até 50 fluxos no total.
Audio Connector Diagram
Não há nenhum sinalizador de recurso ou opção a ser ativada para começar a usar o Audio Connector. Ele vem habilitado por padrão, e o preço é calculado com base no número de fluxos de áudio dos participantes enviados. Basta criar um servidor WebSocket para receber os fluxos de áudio.
A capacidade de isolar e analisar fluxos de áudio abre muitas novas possibilidades. Uma delas, que discutiremos nesta postagem do blog, será o uso da Inteligência Artificial para realizar traduções em tempo real com o Serviço de Fala do Azure da Microsoft AI Speech Serviceda Microsoft.
Se você quiser ver o código e uma demonstração em ação, pode acessar o repositório do GitHub de um aplicativo baseado em NodeJS. Basta clicar no botão de implantação e inserir algumas credenciais para experimentar traduções ao vivo em tempo real durante uma videochamada.
Primeiros passos
Conforme mencionado anteriormente, você precisará de algumas credenciais para executar o aplicativo de demonstração.
Você pode encontrar a chave e o segredo da Video API da Vonage no painel de controle, seja em um projeto anterior ou em um recém-criado.
Vonage Project Credentials
No lado da Microsoft, você precisará criar um recurso do Speech Services no Portal do Azure. Após a criação, você precisará de uma das chaves (qualquer uma serve) e do valor em “Localização/Região”.
Microsoft Azure Project Credentials
Ao inserir essas credenciais junto com o domínio do aplicativo em execução, você poderá digitar seu nome, selecionar os idiomas em que falará e ler a tradução. Compartilhe o link e convide um ou dois amigos para participar da sua sessão de Video.
Como funciona
Nesta seção, descreverei o que está acontecendo nos bastidores do aplicativo de demonstração. Para ser o mais independente possível em relação à linguagem de programação, falarei sobre métodos em geral e indicarei a documentação, para que você possa implementar essas funcionalidades na linguagem de programação de sua escolha. Eu criei meu aplicativo de demonstração usando o NodeJS.
Video Call
A videochamada é apenas uma videochamada básica e comum, como a que aparece neste projeto de exemplo ou em uma criada usando nossos novos Componentes Web de Video. A única diferença é permitir que o usuário insira seu nome e os idiomas que deseja usar antes de iniciar uma sessão.
Servidor WebSocket
Quando a videochamada estiver em andamento, isso significa que há áudio para o Audio Connector começar a enviar para um servidor WebSocket. Se você não souber como criar um servidor WebSocket, pode pesquisar por <your programming language> WebSocket server e, com sorte, muitos tutoriais e bibliotecas aparecerão nos resultados da busca. Se não, sempre há um chatbot de IA a quem você pode perguntar. Haha
Para começar a enviar seus fluxos de áudio para o servidor WebSocket recém-criado, a Vonage oferece um método nos diversos SDKs de servidor (Java, NodeJS, PHP, Python, Ruby, .NET) para iniciar uma conexão WebSocket. Caso não encontre a linguagem do seu servidor, você também pode usar um ponto de extremidade REST.
Tradução de áudio
Agora que seu servidor WebSocket recebe fluxos de áudio, é hora de começar a traduzir. O Serviço de Fala do Azure da Microsoft Serviço de Fala com IA da Microsoft pode traduzir áudio de mais de 30 idiomas. A Microsoft disponibiliza SDKs do Speech Service para C++, C#, Go, Java, JavaScript/NodeJS, Objective-Ce Python.
Primeiro, você definirá a configuração do Speech Translation com sua chave e região. No SDK de idiomas, deve haver algo semelhante a SpeechTranslationConfig com um fromSubscription onde você pode inserir suas credenciais. O local para definir o reconhecimento de fala e os idiomas de destino pode depender se você envia um fluxo combinado ou vários fluxos individuais.
No seu servidor WebSocket, você precisará coletar os dados enviados pelo Audio Connector para traduzi-los com inteligência artificial. Para isso, será necessário criar um Push Stream para o Audio Input Stream, pelo menos no NodeJS. É assim que funciona.
O Audio Connector envia diferentes tipos de mensagens WebSocket:
Existem mensagens de texto que incluem a mensagem inicial, atualizações quando um fluxo de áudio é silenciado ou reativado e quando a conexão é interrompida. Essas mensagens contêm informações sobre o formato de áudio, dados relativos ao status da conexão e quaisquer dados de cabeçalho personalizados que você tenha enviado ao criar a conexão.
O outro tipo são as mensagens de áudio binárias que representam o fluxo de áudio. São essas que você deve adicionar ao Push Stream para que a inteligência artificial as traduza.
Para diferenciar entre mensagens de texto e mensagens de áudio, tento analisar a mensagem em JSON. Se não ocorrer nenhum erro, isso significa que é uma mensagem de texto. Se ocorrer um erro, isso significa que é uma mensagem de áudio binária, que é adicionada ao Push Stream.
Agora que temos um fluxo de entrada de áudio fornecido pelo Push Stream, precisamos configurar o áudio da entrada do fluxo para que o SDK de Fala possa analisar e traduzir o áudio. Para começar a “compreender” o fluxo, é criado um Reconhecedor de Tradução utilizando as configurações de Áudio e Tradução de Fala. O Reconhecedor de Tradução é então iniciado para tentar reconhecer continuamente o que está sendo dito no fluxo de áudio.
Traduções parciais serão exibidas à medida que o Reconhecedor de Tradução tenta entender o que está sendo dito. Assim que ele tiver o que considera ser uma compreensão completa do que foi dito na frase, uma tradução finalizada será apresentada.
Exibindo traduções
Em seguida, pegaremos essas traduções finalizadas, tal como forem apresentadas, e as enviaremos para a sessão de Video por meio do recurso Vonage Video Signal para que sejam exibidas nas telas dos participantes.
Desafio
Achei que seria um recurso legal adicionar a possibilidade de silenciar todos os participantes da videochamada e fazer com que o navegador lesse o texto traduzido com uma voz sintetizada. Se você experimentar, conte-nos como foi na Slack da Comunidade de Desenvolvedores ou no X, antes conhecido como Twitter. @VonageDev.