
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.
Integre a conversão de texto em fala personalizada com o Vonage AI Studio e o Deepgram
Tempo de leitura: 8 minutos
Introdução
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ê talvez queira 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. Nesta postagem, demonstraremos como conectar o AI Studio ao Deepgram.
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 estaticamente como parte de um Speak ou Collect Input . Uma próxima postagem no blog abordará arquivos de áudio de fala gerados dinamicamente para personalização completa da interação Agente <> Pessoa.
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, ilustrando com um aplicativo simples de Prontuário Eletrônico do Paciente (EHR). 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
Escolha o modelo “Identificação de Chamada”. Usaremos o CLID (Calling Line ID) da chamada recebida para fornecer uma saudação personalizada. Esse modelo é um ótimo ponto de partida.
Choose a TemplateEtapa 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 com o AI Studio
É importante entender que, em um agente de telefonia, dois nós podem ser usados para TTS personalizado. Você pode ler mais sobre o nó “Speak” e o Collect Input nos links. Vamos nos concentrar no Collect Input nesta postagem do blog. No meu agente, conforme descrito, há vários nós com os quais o chamador interage antes de chegar ao Collect Input . Veja abaixo:
Basic Flow Initiation
É possível ver os seguintes nós com os quais o chamador interage.
O Nó .
O nó patient_webhook é usado para coletar informações sobre quem está ligando a partir do banco de dados de back-end do EHR.
Um nó condicional chamado Existing_patient é usado para determinar para qual fluxo o usuário deve ser direcionado em seguida. Nesse caso, como o nó webhook associa o chamador recebido a um paciente existente (por meio do CALLER_PHONE_NUMBER ), o chamador é direcionado para um fluxo que oferece automação de autoatendimento para criação, atualização e cancelamento de consultas, bem como solicitações de renovação de receitas por meio do autoatendimento.
O paciente existente Coletar entrada é usado para reproduzir a saudação predefinida proveniente do Deepgram.
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” .
Como criar arquivos de áudio personalizados de conversão de texto em fala com o Deepgram
Gere áudio sintetizado programaticamente usando a API de um provedor de TTS (por exemplo, Deepgram) ou por meio de sua interface de usuário. Esses arquivos serão retornados ao seu aplicativo como um fluxo binário, e você poderá codificá-lo com a extensão .mp3. Abaixo está um exemplo de aplicação que pode ser usada para criar arquivos de áudio por meio do Aura do Deepgram.
Saiba como começar a usar API de conversão de texto em fala Aura da Deepgram.
import requests
import os
from os.path import join, dirname
from dotenv import load_dotenv
from speech_patterns import SPEECH_PATTERNS
dotenv_path = join(dirname(__file__), ".env")
load_dotenv(dotenv_path)
deepgram_password = os.environ.get('deepgram_password')
deepgram_url = "https://api.deepgram.com/v1/speak?model=aura-asteria-en"
headers = {
"Content-Type": "application/json",
"Authorization": f"Token {deepgram_password}" }
def deepgram_tts():
print("Iniciando o processo")
'''
Envia sequências de texto ao Deepgram para síntese de fala e salva os arquivos MP3 retornados.
'''
for key, text in SPEECH_PATTERNS.items():
print(f"Processando chave: {key}")
payload = {"text": text}
response = requests.post(deepgram_url, headers=headers, json=payload)
print(response.headers)
if response.status_code == 200:
filename = f"{key}.mp3"
# Certifique-se de usar `response.content` para conteúdo binário!
with open(filename, 'wb') as file:
file.write(response.content)
print(f"Arquivo salvo com sucesso como {filename}.")
else:
print(f"Erro: {response.status_code} - {response.text}")
if __name__ == "__main__":
deepgram_tts()Observação — no código acima, a importação de speech_patterns import SPEECH_PATTERNS é uma referência a um arquivo associado que contém todos os padrões de fala desejados que serão enviados ao Deepgram, neste formato:
SPEECH_PATTERNS = {
"system_greeting": "Olá, seja bem-vindo à Stonebridge Dermatologia e Estética",
"patient_query": "Olá, é um prazer tê-lo de volta conosco...O que você gostaria de resolver hoje?”,
"repeat_query": "Não entendi... Você poderia repetir o que precisa ou simplesmente usar seu telefone para digitar o número correspondente?”,
"type_of_appointment": "Ótimo! Que tipo de consulta você gostaria de agendar? Para consultar um médico, diga ‘médico’ ou ‘doutor’, ou mencione o que o preocupa. Por exemplo, você poderia dizer ‘câncer de pele’. Para serviços de estética, diga ‘esteticista’ ou ‘consultor’, ou o nome do tratamento que você tem em mente.",
"request_for_date": "Entendido. Você tem alguma data preferida em mente?",
"appointment_time": "Agora, por favor, me diga um horário de consulta que seja conveniente para você.",
"appointment_coordination": "Ótimo, obrigado! Por favor, aguarde alguns instantes enquanto verifico no sistema se esse horário está disponível.",
"appointment_confirmation": "Perfeito. Já tenho o seu novo horário de consulta. Enviarei um e-mail de confirmação com as informações. Teremos o maior prazer em recebê-lo na sua consulta. Agora, há mais alguma coisa em que eu possa ajudá-lo?"
}Depois de executar o aplicativo acima, você terá os arquivos .mp3 correspondentes, que agora podem ser enviados para AI Studio.
Como adicionar arquivos de áudio ao AI Studio
Etapa 1: Salvar a entrada do usuário em um parâmetro
Navegue até o nó “Collect Input”. Como criei um agente de autoatendimento para que pacientes de médicos e especialistas possam agendar e alterar consultas, vou intitular esse nó “(Paciente existente) de forma adequada: Definir data e horário da consulta.” Este nó coletará as informações do usuário necessárias para definir a consulta. Especificamente, estou coletando a data e o horário preferidos pelo usuário para a consulta e atribuindo-os a um parâmetro chamado APPT_DATE. Esse parâmetro será utilizado mais adiante no fluxo.
Collect Input Node
Etapa 2: Envie os arquivos de áudio
Selecione o botão de opção “Áudio”. Ao fazer isso, a tela muda para um menu de comandos de voz.
Select “Recording” for PromptNa seção “Prompt”, selecione “Gravação”. Agora, você adicionará o arquivo do seu armazenamento local ao armazenamento integrado do AI Studio ou utilizará um arquivo de áudio existente que já esteja armazenado no AI Studio. No meu caso, já tenho vários arquivos que enviei, mas você pode usar o botão “+Adicionar gravação” para adicionar uma nova gravação.

Depois de concluir essa etapa, a janela modal mostra que você selecionou uma gravação para ser reproduzida para o usuário, conforme ilustrado abaixo. Além disso, um recurso útil dessa funcionalidade é que você pode ver a transcrição real do arquivo (fornecida pela IA da Vonage). Essa visualização na interface do usuário garante que você mapeie os arquivos de áudio adequadamente aos nós do seu fluxo.
Recording Selected
Etapa 3: Configurar outros nós
Você pode então usar os outros recursos desse nó como faria normalmente. Por exemplo:
Defina o número de tentativas (o número de vezes que a gravação será reproduzida)
Defina uma mensagem de repetição (por exemplo, se você quiser que o agente diga “Desculpe, não ouvi isso” como mensagem secundária).
Configuração da resposta do chamador: Permite definir a resposta por voz, a resposta por DTMF ou ambas.
Além disso, há alguns ajustes na linguagem natural que você talvez queira adicionar para que o Agente seja “treinado” com as palavras-chave específicas do seu contexto de uso personalizado, etc.
Não se esqueça de clicar no botão “Salvar e Sair”, e pronto! Agora você personalizou o TTS para deixar seu Agente ainda mais à sua medida.
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.