
Compartilhar:
Tim é arquiteto de soluções para clientes do setor de saúde e um grande entusiasta de IA/ML, especialmente nas áreas de processamento e compreensão de linguagem natural e grafos de conhecimento. Fora do trabalho, Tim gosta de viajar pelo mundo, pesquisar sobre IA e é um dançarino competitivo de dança de salão.
Geração dinâmica de fala com provedores terceirizados no AI Studio
Tempo de leitura: 8 minutos
O AI Studio oferece uma ampla variedade de idiomas e estilos de voz integrados para a conversão de texto em fala (TTS) idiomas e estilos de voz integrados, aprimorados pela Linguagem de Marcação para Síntese de Fala (SSML) para a criação de falas com tom natural. Existem muitas outras opções de TTS disponíveis que você pode utilizar. O AI Studio oferece a flexibilidade de se conectar a qualquer fornecedor terceirizado que disponha de pontos de extremidade de API REST acessíveis. Neste blog, demonstraremos como utilizar vozes sintéticas Deepgram geradas dinamicamente com o AI Studio.
Uma experiência de TTS envolvente e semelhante à humana é fundamental para os agentes de voz, pois promove uma interação natural e com a qual o usuário se identifica, fazendo com que ele se sinta compreendido e valorizado. Esse nível de envolvimento aumenta a satisfação geral do cliente e sua fidelidade, uma vez que reduz a frustração e melhora a eficiência da comunicação. Esta postagem do blog abordará o uso de arquivos de áudio de fala gerados dinamicamente para a personalização completa da interação Agente <> Pessoa.
Uma postagem anterior do blog abordou os arquivos de áudio de fala gerados estaticamente.
Visão geral do projeto
Nesta postagem do blog, discutiremos como usar o Vonage AI Studio com um provedor terceirizado de síntese de voz para gerar dinamicamente arquivos de voz com base em parâmetros personalizados utilizados ao longo de um fluxo do AI Studio. Para este blog, usaremos um aplicativo simulado de Prontuário Eletrônico do Paciente (EHR) e demonstraremos uma chamada recebida de um paciente para o consultório de um médico. O aplicativo do Studio foi desenvolvido para coletar informações sobre o usuário por meio do Calling Line ID (CLID), ou seja, o número de telefone do usuário que está ligando. O agente do Studio utilizará um webhook para coletar informações sobre o paciente, como nome e sobrenome, número de identificação do paciente e se há ou não consultas agendadas. O usuário será recebido usando o Deepgram Aura TTS.
Pré-requisitos
Account do Vonage AI Studio
Como criar um agente de voz
Passo 1: Crie seu agente
Do Painel do AI Studio, selecione “Criar agente”. Como se trata de um caso de uso de Voice, selecione “Telefonia”.
Select Agent Type
Etapa 2: Configure seu agente
A configuração do agente é um primeiro passo obrigatório; mais informações podem ser encontradas aqui. No nosso caso, estamos definindo algumas configurações básicas do agente, incluindo a localização, a atribuição do agente a uma chave de API ou Subaccount específica e o idioma do agente.
Agent DetailsObserve que o agente de Voice/Telefonia exige que você escolha uma voz. No entanto, essa configuração não é pertinente, pois utilizaremos vozes de terceiros (Deepgram). Nesse caso, não haverá cobrança em sua Account pelo uso do TTS da Vonage, desde que você siga as orientações mencionadas aqui.
Etapa 3: Escolha seu modelo
Selecione “Identificação de Chamada”. Usaremos o CLID (Calling Line ID) da chamada recebida para fornecer uma saudação personalizada. Este modelo é um ótimo ponto de partida. Para obter mais informações sobre este modelo, você pode consultar este artigo.
Choose a Template
Etapa 4: Escolha “Chamada recebida”
Escolha a opção “Chamada Recebida” . Nosso agente de voz atenderá a uma chamada recebida, mas isso não limita o agente apenas a chamadas recebidas. Por exemplo, se você quiser enviar um e-mail de acompanhamento após o término da interação com o agente, poderá fazer isso como parte da fluxo de Chamadas Recebidas . Saiba mais sobre o AI Studio Eventos de Conversação.
Choose Inbound Call
Pronto, você já está pronto para começar a criar seu agente de voz com as vozes personalizadas do Deepgram. Vamos lá!
Como integrar arquivos de áudio de conversão de texto em fala gerados dinamicamente com o AI Studio
É importante entender que, em um agente de telefonia, dois nós podem ser utilizados para a conversão de texto em fala (TTS) personalizada. Você pode ler mais sobre o nó “Speak” e o Collect Input . Vamos nos concentrar no Collect Input .
Com essa abordagem, os designers de conversação podem criar arquivos de áudio de fala usando o endpoint da API de qualquer provedor e utilizar o arquivo retornado em um nó “Coletar Entrada” .
Nesse caso de uso, pode ser importante oferecer uma experiência do usuário (UX) totalmente personalizada. Isso significa que você provavelmente desejará utilizar atributos sobre o usuário, coletados ao longo da chamada, como parte do fluxo de TTS gerado. Por exemplo, nos meus fluxos de trabalho para “Pacientes Existentes”, desejo cumprimentar e me comunicar pessoalmente com cada usuário pelo primeiro nome, e quero que o agente leia alguns desses atributos como parte dos meus fluxos. Exemplos disso incluem:
Olá, F_NAME. É um prazer tê-lo de volta conosco hoje. Sua consulta está marcada para APPT_DATE, às APPT_TIME. Precisa de alguma ajuda com isso?
Boas notícias, F_NAME, já agendei sua consulta remarcada para NOVA_DATA_DA_CONSULTA às NEW_APPT_TIME. Gostaria que eu lhe enviasse uma mensagem de texto para confirmação?
Ótimo, tenho o seu número de celular registrado como PATIENT_MOBILE. Isso ainda está correto? Se estiver, vou te enviar uma mensagem de texto como lembrete agora e no dia anterior à consulta. Se não estiver, é só me avisar que precisamos alterar suas informações de contato e eu vou te ajudar com isso.
Vamos nos aprofundar nessa abordagem. É um pouco mais complexo criar arquivos de voz dinâmicos com base nas informações coletadas do usuário e armazenadas em vários parâmetros. Nenhum dos provedores de TTS orientados por endpoint oferece um serviço de armazenamento em nuvem; em vez disso, eles enviam o arquivo binário de áudio retornado diretamente na resposta ou por meio de um notificador de eventos via webhook. Esse é especialmente o caso do Deepgram, onde você pode optar por receber seu áudio por meio de um webhook ou como parte de uma resposta 200 à sua chamada de API. Assim, você criará um pequeno serviço de armazenamento temporário no back-end que lidará com a rota de entrada, responsável pelo processamento intermediário do arquivo de voz. Dependendo da sua abordagem (um manipulador de rota versus um servidor de webhook), você poderia usar o Vonage Cloud Runtime Asset do Vonage Cloud Runtime ou qualquer outro bucket de armazenamento de blobs/dados não estruturados (AWS S3, etc.). A ideia aqui é tornar o armazenamento e o uso dos arquivos temporários, de modo que esses arquivos sejam eliminados após o uso, aprimorando os controles de segurança e privacidade em seu aplicativo. Agora, vamos explorar a solução.
No meu caso, como meu aplicativo é um sistema de Prontuário Eletrônico do Paciente (EHR) que lida com diversos casos de uso, como agendamento de consultas, remarcação, pagamentos e solicitações de receitas médicas, estou criando um nó de webhook de uso geral (Deepgram_Node) que posso usar em todos os meus fluxos. Adicionei um nó de webhook para reconhecer o paciente pelo identificador de chamada recebida.
Assim que o nó de webhook preliminar do meu aplicativo obtiver o nome de quem está ligando, eu mapeio esse atributo JSON para um parâmetro do Studio chamado $F_NAME. Usarei esse valor armazenado nesse parâmetro para adicioná-lo à minha solicitação de TTS ao Deepgram. O nó de webhook do Deepgram está configurado assim.
Deepgram Node Query ParamsObserve que a configuração do corpo no formato JSON contém o texto genérico desejado, com base no fluxo atendido, bem como o $F_NAME armazenado.
Deepgram Webhook Node JSON BodyO Mapeamento de resposta no nó do webhook é fundamental, pois vou usar a resposta 2xx recebida e mapear esses atributos para outros parâmetros do Studio para uso posterior:
Deepgram Node Response MappingObserve que estou mapeando o atributo URL retornado para um novo parâmetro, chamado $SYNTHETIC_VOICE. Este URL é a URL de hospedagem do arquivo de áudio. Dependendo do provedor de armazenamento que você estiver usando (S3, etc.), é importante que essa url corresponda a uma estrutura semelhante a esta: https://storagefile.com/filename.mp3. O analisador do Studio procurará explicitamente pela extensão de arquivo .mp3 no final da URL. Esse será o parâmetro usado no próximo nó para reproduzir a frase completa de fala sintetizada. Veja a captura de tela abaixo:
Using the stored URL in the SYNTHETIC_VOICE parameterIsso Nó “Coletar Entrada” agora está pronto para ser configurado com outras opções, conforme você achar melhor, tais como:
Mensagem de nova tentativa (que pode ser a mesma $SYNTHETIC_VOICE ou outro parâmetro.)
Além disso, talvez seja interessante configurar a entrada de resposta do chamador (voz, DTMF) e a detecção de silêncio.
Além disso, com base nas suas necessidades específicas, você pode configurar as “Palavras-chave de contexto” e a “Resolução de ambiguidade de entidades” para garantir que seu agente interaja da melhor maneira possível com as pessoas.
É uma boa prática, após usar o nó “Collect Input” , adicionar um Classification , caso a resposta do seu agente dependa da entrada do usuário humano. Você pode saber mais sobre esse nó aqui. Nesse nó, você cria o conhecimento e o treinamento para que o agente seja capaz de lidar com a intenção do usuário.
Conclusão
Hoje, muitos provedores de TTS incorporam LLMs em seus fluxos de trabalho de síntese de fala, permitindo uma fala mais natural e expressiva. Anteriormente, a TTS era impulsionada principalmente por métodos como a síntese concatenativa, que unia trechos de fala pré-gravados, e a síntese paramétrica, que utilizava modelos estatísticos, como os Modelos de Markov Ocultos (HMMs). Essas técnicas anteriores costumavam resultar em vozes mais robóticas e com menos nuances.
Os LLMs aprimoram a síntese de fala ao utilizar grandes quantidades de dados e arquiteturas avançadas de redes neurais para compreender e gerar padrões de fala semelhantes aos humanos. Eles analisam o texto em busca de contexto, sentimento e ritmos naturais da fala, permitindo uma entonação, ênfase e emoção mais precisas na fala gerada. Isso resulta em vozes que não são apenas mais claras e agradáveis de ouvir, mas também capazes de transmitir emoções sutis e uma dinâmica conversacional natural, melhorando significativamente a experiência geral do usuário.
Nesta postagem do blog, exploramos como utilizar provedores terceirizados de conversão de texto em fala (TTS) em conjunto com o AI Studio para personalizar totalmente a experiência do usuário. Sempre valorizamos a participação da comunidade. Sinta-se à vontade para se juntar a nós no GitHub e no Slack da Comunidade Vonage.
Compartilhar:
Tim é arquiteto de soluções para clientes do setor de saúde e um grande entusiasta de IA/ML, especialmente nas áreas de processamento e compreensão de linguagem natural e grafos de conhecimento. Fora do trabalho, Tim gosta de viajar pelo mundo, pesquisar sobre IA e é um dançarino competitivo de dança de salão.