SST: o que é e como transcrever ligações para texto em tempo real

Já pensou como transformar em texto suas ligações em tempo real? Confira as possibilidades da plataforma de voz da Zenvia.

Já imaginou criar uma URA dinâmica que pode conversar com o seu cliente transcrevendo para texto tudo o que o cliente fala? E com base nesse resultado tomar alguma ação? Isso é possível utilizando os serviços de voz da Zenvia, temos uma ferramenta de transcrição de áudio em URAs de forma dinâmica e em tempo real para você conseguir automatizar a telefonia da sua empresa.

Vamos para um exemplo mais prático? Abaixo vamos desenvolver uma URA dinâmica que vai descobrir se a TotalVoice possuí algum funcionário com o nome que vai ser falado e em qual setor trabalha. Vamos solicitar para o usuário informar o nome, depois disso vamos transcrever o áudio e vamos fazer uma pesquisa retornando uma mensagem para o usuário.

Para início de conversa, precisamos criar uma URA que vai enviar um TTS (Text to Speech) para o usuário, solicitando que ele informe um nome após digitar o número 1. E a segunda opção é um STT (Speech to Text) passando uma URL que é a URL destino que vamos receber o retorno dos dados da TotalVoice (inclusive o áudio transcrito em texto). A URA vai ter essa estrutura:

{
   "nome":"Menu Principal",
   "dados":[
      { 
         "acao":"tts",
         "menu": "menu 1",
         "acao_dados":{
			// Uma mensagem que será lida (texto falado)
            "mensagem":"Olá! Vamos jogar? Digite 1 e após o bípe você deve falar o nome de um funcionário da TotalVoice e eu descobrir o setor que essa pessoa trabalha" 
         }
      },
      { 
         "acao":"stt", //Speech to text
         "menu": "menu 1",
         "opcao": "1"
         "acao_dados":{
         // Uma URL que você vai receber o POST com a transcrição do que foi falado
            "url":"https://fooo.com.br" 
         }
      }
      ]
}

Legal, agora que temos a nossa URA criada, a opção default (quando o usuário atender o telefone) vai tocar um Text to Speech, após o usuário digitar a opção 1 vai ser reproduzido um bípe e o usuário deve falar o nome da pessoa. Sendo assim a TotalVoice vai fazer um POST na URL cadastrada na configuração da URA, e você vai receber os seguintes dados:

{
   "id": "2321", //id da chamada
   "confiabilidade_stt": "0.98989", // Confiabilidade do texto transcrito. 0 para não confiável e 0.99 para confiável
   "conteudo_stt": "Meu nome é Carlos" //Conteúdo do texto transcrito
}

Nosso próximo passo é criar um script para receber este post com os dados. Após capturar os dados vamos tratar as informações.

// Recebo o JSON enviado pela TotalVoice
$phpInput = file_get_contents("php://input");
$dadosRecebidos = json_decode($phpInput);
//Coletando o conteúdo da transcrição
$conteudoStt = $dadosRecebidos->conteudo_stt;

Agora, que conseguimos receber a transcrição, devemos tratar esse conteúdo e, posteriormente, montar uma nova URA para entregar à TotalVoice uma nova ação para interagir com o nosso usuário.

if(preg_match('(Joao|João|Pedro|Marcos|Emiliano|Fernanda)', $conteudoStt) === 1) {
    $dados_tts['acao'] = 'tts';
    $dados_tts['acao_dados']['mensagem'] = 'Olá, este funcionário é do setor comercial da TotalVoice, borá vender';
}else if(preg_match('(Carlos|Rafael|Diego|Guilherme)', $conteudoStt) === 1) {
    $dados_tts['acao'] = 'tts';
    $dados_tts['acao_dados']['mensagem'] = 'Olá, este funcionário é do setor de desenvolvimento da TotalVoice, borá codificár';
}else{
    $dados_tts['acao'] = 'tts';
    $dados_tts['acao_dados']['mensagem'] = 'Essa pessoa não trabalha na TotalVoice';
}
$dados = array($dados_tts);

// Monto a array de saída
$menu_resposta = array(
    'nome' => 'Menu Principal',
    'dados' => $dados
);

// Respondo o JSON
header('Content-Type: application/json');
die(json_encode($menu_resposta));

Código completo:

// Recebo o JSON enviado pela TotalVoice
$phpInput = file_get_contents("php://input");
$dadosRecebidos = json_decode($phpInput);
//Coletando o conteúdo da transcrição
$conteudoStt = $dadosRecebidos->conteudo_stt;


if(preg_match('(Joao|João|Pedro|Marcos|Emiliano|Fernanda)', $conteudoStt) === 1) {
$dados_tts['acao'] = 'tts';
$dados_tts['acao_dados']['mensagem'] = 'Olá, este funcionário é do setor comercial da TotalVoice, borá vender';
}else if(preg_match('(Carlos|Rafael|Diego|Guilherme)', $conteudoStt) === 1) {
$dados_tts['acao'] = 'tts';
$dados_tts['acao_dados']['mensagem'] = 'Olá, este funcionário é do setor de desenvolvimento da TotalVoice, borá codificár';
}else{
$dados_tts['acao'] = 'tts';
$dados_tts['acao_dados']['mensagem'] = 'Essa pessoa não trabalha na TotalVoice';
}
$dados = array($dados_tts);

// Monto a array de saída
$menu_resposta = array(
'nome' => 'Menu Principal',
'dados' => $dados
);

// Respondo o JSON
header('Content-Type: application/json');
die(json_encode($menu_resposta));
Categorias:
Escrito por

Zenvia

Fique por dentro e confira as nossas dicas sobre o mercado mobile e interação digital.