
Construindo um Agente de Voz eficaz para nossa própria documentação
Resolvendo com sucesso >80% das consultas dos usuários
Apresentando o Eleven v3 (alpha)
Experimente o v3A latência é o que separa boas aplicações de Conversational AI das excelentes
Para a maioria das aplicações, a latência é uma preocupação leve. No entanto, para a Conversational AI, a latência é o que separa boas aplicações das excelentes.
Para começar, o objetivo da Conversational AI é bastante aspiracional—proporcionar a mesma sensação, toque e voz de uma conversa humana, enquanto supera um humano em inteligência. Para conseguir isso, uma aplicação deve conversar sem longas pausas silenciosas. Caso contrário, o realismo é quebrado.
O desafio de latência da Conversational AI é agravado por sua natureza fragmentada. A Conversational AI é uma série de processos intermediários, todos considerados de ponta em seus respectivos campos. Cada um desses processos gera uma latência adicional.
Como uma empresa de voz generativa, passamos muito tempo estudando como minimizar a latência para a Conversational AI. Hoje, queremos compartilhar o que aprendemos, na esperança de que seja útil para quem está interessado em construir aplicações de Conversational AI.
Toda aplicação de Conversational AI envolve pelo menos quatro etapas: speech-to-text, alternância de turnos, processamento de texto (ou seja, LLMs) e text-to-speech. Embora essas etapas sejam executadas em paralelo, cada uma ainda contribui com alguma latência.
Notavelmente, a equação de latência da Conversational AI é única. Muitos problemas de latência de processo podem ser reduzidos a um único gargalo. Por exemplo, quando um site faz uma solicitação de banco de dados, a latência da rede da web impulsiona a latência total, com contribuições triviais da latência do VPC do backend. No entanto, os componentes de latência da Conversational AI não são drasticamente variados. Eles são desiguais, mas a contribuição de latência de cada componente está dentro de um grau dos outros. Assim, a latência é impulsionada por uma soma de partes.
O “Ouvido” do Sistema
O reconhecimento automático de fala (ASR)—às vezes referido como speech-to-text (STT)—é o processo de converter áudio falado em texto escrito.
A latência do ASR não é o tempo que leva para gerar texto, pois o processo de speech-to-text ocorre em segundo plano enquanto o usuário fala. Em vez disso, a latência é o tempo entre o fim da fala e o fim da geração do texto.
Assim, intervalos curtos e longos de fala podem incorrer em latência semelhante do ASR. A latência pode variar entre implementações de ASR (em alguns casos, não há latência de rede, pois o modelo está incorporado no navegador, como no Chrome/Chromium). O modelo padrão de código aberto, Whisper, adiciona 300ms + de latência. Nossa implementação personalizada adiciona <100ms.
O “Instinto” do Sistema
Alternância de turnos / Interrupção (TTI) é um processo intermediário que determina quando um usuário terminou de falar. O modelo subjacente é conhecido como Detector de Atividade de Voz (ou VAD).
A alternância de turnos envolve um conjunto complexo de regras. Uma breve explosão de fala (por exemplo, “uh-huh”) não deve acionar uma troca de turno; caso contrário, as conversas pareceriam muito staccato. Em vez disso, deve avaliar quando um usuário está realmente tentando chamar a atenção do modelo. Também deve determinar quando o usuário terminou de transmitir seus pensamentos.
Um bom VAD não sinaliza um novo turno sempre que detecta silêncio. Há silêncio entre palavras (e frases), e o modelo precisa estar confiante de que o usuário realmente terminou de falar. Para conseguir isso de forma confiável, ele precisa buscar um limiar de silêncio (ou mais especificamente, uma falta de fala). Esse processo introduz um atraso, contribuindo para a latência geral experimentada pelo usuário.
Tecnicamente falando, se todos os outros componentes da Conversational AI incorrerem em zero latência, a latência atribuída ao TTI seria uma coisa boa. Humanos fazem uma pausa antes de responder à fala. Uma máquina fazendo uma pausa semelhante dá realismo à interação. No entanto, como outros componentes da Conversational AI já geram latência, a latência mínima do TTI é ideal.
O Cérebro do Sistema
Em seguida, o sistema precisa gerar uma resposta. Hoje, isso é geralmente realizado com um Modelo de Linguagem de Grande Escala (LLM), como o GPT-4 ou o Gemini Flash 1.5.
A escolha do modelo de linguagem faz uma diferença significativa. Modelos como o Gemini Flash 1.5 são incrivelmente rápidos—gerando saídas em menos de 350ms. Modelos mais robustos que podem lidar com consultas mais complexas—como variantes do GPT-4 e Claude—podem levar entre 700ms a 1000ms.Escolher o modelo certo é geralmente a maneira mais fácil de direcionar a latência ao otimizar um processo de Conversational AI.
No entanto, a latência do LLM é o tempo que leva para começar a gerar tokens. Esses tokens podem ser imediatamente transmitidos para o seguinte processo de text-to-speech. Como o text-to-speech é desacelerado pelo ritmo natural de uma voz humana, o LLM supera isso de forma confiável—o que mais importa é a latência do primeiro token (ou seja, tempo para o primeiro byte).
Existem outros fatores que contribuem para a latência de um LLM além da escolha do modelo. Isso inclui o comprimento do prompt e o tamanho da base de conhecimento. Quanto maior qualquer um deles, maior a latência. Resumindo, quanto mais o LLM precisa considerar, mais tempo leva. Assim, as empresas precisam encontrar um equilíbrio entre uma quantidade saudável de contexto sem sobrecarregar o modelo.
A Boca do Sistema
O componente final da Conversational AI é text-to-speech (TTS). A latência líquida do text-to-speech é o tempo que leva para começar a falar após receber tokens de entrada do processamento de texto. É isso—porque tokens adicionais são disponibilizados a uma taxa mais rápida que a fala humana, a latência do text-to-speech é estritamente o tempo para o primeiro byte.
Anteriormente, text-to-speech era particularmente lento, levando até 2-3s para gerar fala. No entanto, modelos de ponta como nosso motor Turbo são capazes de gerar fala com apenas 300ms de latência e o novo motor Flash TTS é ainda mais rápido. O Flash tem um tempo de modelo de 75ms e pode alcançar um tempo de latência de áudio de 135ms para o primeiro byte, o melhor resultado no campo (temos que nos gabar um pouco!).
Além dos quatro componentes, há alguns contribuintes adicionais para a latência líquida da Conversational AI.
Sempre haverá latência associada ao envio de dados de um local para outro. Para algumas aplicações de Conversational AI, os processos de ASR, TTI, LLM e TTS devem idealmente estar co-localizados, de modo que a única fonte de latência de rede não trivial seja os caminhos entre o falante e todo o sistema.Isso nos dá uma vantagem na latência, pois podemos economizar duas chamadas de servidor, já que temos nosso próprio TTS e uma solução interna de transcrição.
Muitas aplicações de Conversational AI existem para invocar funções (ou seja, interface com ferramentas e serviços). Por exemplo, posso pedir verbalmente à IA para verificar o tempo. Isso requer chamadas de API adicionais invocadas na camada de processamento de texto, o que pode incorrer em mais latência dependendo das necessidades.
Por exemplo, se eu precisar pedir uma pizza verbalmente, pode haver várias chamadas de API necessárias, algumas com atraso excessivo (por exemplo, processar um cartão de crédito).
No entanto, um sistema de Conversational AI pode combater os atrasos associados à chamada de função, solicitando ao LLM que responda ao usuário antes que a chamada de função seja concluída (por exemplo, “Deixe-me verificar o tempo para você”). Isso modela uma conversa real e não deixa o usuário sem engajamento.
Esses padrões assíncronos são geralmente realizados aproveitando webhooks para evitar solicitações de longa duração.
Outro recurso comum para plataformas de Conversational AI é permitir que o usuário se conecte via telefone (ou, em alguns casos, faça uma ligação em nome do usuário). A telefonia incorrerá em latência adicional—e essa latência pode ser severamente dependente da geografia.
Como base, a telefonia incorrerá em 200ms adicionais de latência se contida na mesma região. Para chamadas globais (por exemplo, Ásia → EUA), o tempo de viagem pode aumentar significativamente, com a latência atingindo ~500ms. Esse padrão pode ser comum se os usuários tiverem números de telefone fora da região em que estão localizados—forçando um salto para as redes telefônicas do país base.
Esperamos que esta exploração de ida e volta da Conversational AI tenha sido interessante. Em resumo, as aplicações devem visar uma latência inferior a um segundo. Isso pode ser geralmente alcançado escolhendo o LLM certo para a tarefa. Elas também devem interagir com o usuário sempre que processos mais complexos estiverem em execução em segundo plano para evitar longas pausas.
No final do dia, o objetivo é criar realismo. Um usuário precisa sentir a facilidade de conversar com um humano enquanto obtém os benefícios de um programa de computador. Ao apertar os subprocessos, isso agora é possível.
Na ElevenLabs, estamos otimizando cada parte de um sistema de Conversational AI com nossos modelos de ponta de STT e TTS. Trabalhando em cada parte do processo, podemos alcançar fluxos de conversa sem interrupções. Essa visão de cima para baixo na orquestração nos permite reduzir um pouco a latência—mesmo 1ms—em cada ponto.
Resolvendo com sucesso >80% das consultas dos usuários
Nossa plataforma tudo-em-um para criar agentes de voz interativos e personalizáveis