https://a.storyblok.com/f/270183/100674/d6e469350a/e_extending-nexmo_steaming-transcript_1200x600.jpg

Ampliando o Nexmo: Comparação de transcrições em streaming

Publicado em May 10, 2021

Tempo de leitura: 6 minutos

No mundo da comunicação, as palavras são fundamentais, e escolher as palavras certas é extremamente importante. As transcrições de chamadas de voz podem ajudar as empresas a compreender as tendências emergentes no conteúdo das chamadas de vendas e de atendimento ao cliente.

A transcrição é o processo de transformar conversas em áudio em texto escrito. No passado, isso era feito por pessoas que ouviam uma gravação e digitavam o texto manualmente. Essa prática ainda existe hoje. Atualmente, surgiram serviços automatizados que permitem que desenvolvedores de software enviem arquivos de áudio a esses serviços para obter um resultado mais imediato.

Esse trabalho, por si só, já pode oferecer insights incríveis, mas estou focado especificamente nas transcrições de transmissões ao vivo, nas quais as informações em tempo real podem proporcionar um novo nível de detalhes para suas equipes de vendas e suporte.

Visão geral

Esta publicação apresenta uma comparação e uma visão geral dos serviços de transcrição de streaming dos quatro principais provedores de nuvem: Amazon Transcribe, Azure Cognitive Speech Service, Google Cloud Speech-to-Texte IBM Watson Speech-to-Text.

Usando a Voice API da Nexmo e WebSockets, conectei uma chamada Voice do meu celular e transmiti o áudio para testar o serviço. Durante o processo, fiz algumas anotações sobre aspectos como recursos, facilidade de uso, precisão e custos.

Precisão

Um dos fatores mais importantes na escolha de um serviço de transcrição é a precisão. Informações incorretas tornariam os dados não confiáveis.

Testei cada serviço usando uma 8kHz taxa de amostragem com meu celular. Você também pode usar 16kHz, mas, em alguns casos, ele é, na verdade, menos preciso. Usando várias frases, falei em um ritmo relativamente normal e em volume moderado. O ambiente também estava silencioso o suficiente para eliminar ruídos de fundo.

Todos os serviços transcreveram as frases que eu usei sem problemas, mas isso dependia, em parte, da clareza com que eu falava. Infelizmente, qualquer serviço tem dificuldade quando a pronúncia não é clara.

Caso contrário, você pode confiar bastante em qualquer um desses serviços para cuidar de suas transcrições.

"Fiquem afastados das portas."

  • IBM Watson Speech-to-Text - 90% (Por mais claramente que eu falasse, ele não conseguia reconhecer a palavra “stand”)

  • Serviço de Reconhecimento de Fala do Azure - 100%

  • Google Cloud Speech-to-Text - 100%

  • Amazon Transcribe - 100%

"Agite bem antes de servir"

  • IBM Watson Speech-to-Text - 100%

  • Serviço de Reconhecimento de Fala do Azure - 100%

  • Google Cloud Speech-to-Text - 100%

  • Amazon Transcribe - 100%

"Peter Piper colheu um peck de pimentas em conserva."

  • IBM Watson Speech-to-Text - 100%

  • Serviço de Reconhecimento de Fala do Azure - 100%

  • Google Cloud Speech-to-Text - 100%

  • Amazon Transcribe - 100%

Recursos

Os conjuntos de recursos da maioria dos serviços são muito semelhantes:

  • Utiliza aprendizado de máquina para garantir a precisão

  • Modelos personalizados para otimização

  • Arquivos de áudio e streaming

  • Formatação contextual para nomes próprios

  • Suporte à pontuação

Suporte a idiomas

Google Cloud Speech-to-Text possui, de longe, o maior número de idiomas suportados — 120 — e consegue detectar automaticamente o idioma na maioria dos casos. O segundo serviço com maior suporte a idiomas é o Azure Cognitive Speech Service , com 30, e IBM Watson Speech-to-Text , com 15. O Amazon Transcribe é o mais restritivo, com apenas 5 idiomas disponíveis para transcrição em streaming (há mais opções disponíveis para arquivos de áudio).

Facilidade de uso

Cada provedor tem seu próprio caminho para o sucesso. Todos eles oferecem guias de introdução em vários formatos. No entanto, esses guias costumam se referir ao envio de um arquivo de áudio ou à captura de entrada do microfone. Embora a entrada do microfone seja o método de transmissão que precisamos usar com o Nexmo WebSocket, ela vem acompanhada de algum código de front-end adicional que era desnecessário.

Google Cloud Speech-to-Text

O SDK do Google foi fácil de implementar, bastando criar um SpeechClient com o SDK fornecido e o arquivo de credenciais do Google fornecido durante a criação da conta de serviço.

O SpeechClient oferece um método chamado streamingRecognize que fornece eventos.

const client = new speech.SpeechClient();

  let request ={
    config: {
      encoding: 'LINEAR16',
      sampleRateHertz: 8000,
      languageCode: 'en-US'
    },
    interimResults: false
  };

  const recognizeStream = client
  .streamingRecognize(request)
  .on('error', console.error)
  .on('data', data => {
    console.dir(data, {depth: null});
  });

A simplicidade do Google é uma vantagem em relação aos outros concorrentes. É possível começar a usar o serviço com pouco esforço e, para mim, isso é uma grande vantagem.

Documentação do Google Cloud Speech-to-Text

Azure/IBM

Tanto a IBM quanto o Azure oferecem SDKs específicos para cada linguagem e uma ampla documentação de introdução para você começar, mas a chamada direta à API é simples de implementar. Ambos os serviços podem ser utilizados simplesmente conectando-se a uma rota de API com o wss:// protocolo e fornecendo uma chave.

Serviço de Reconhecimento de Fala do Azure Cognitive

wss://region.stt.speech.microsoft.com/speech/recognition/interactive/cognitiveservices/v1?format=simple&language=LANG_CODE

IBM Watson: Conversão de Fala em Texto

wss://stream.watsonplatform.net/speech-to-text/api/v1/recognize?model=langage_model

Há alguns cabeçalhos adicionais que precisam ser fornecidos, mas a documentação de cada serviço pode ser um recurso útil.

Amazon Transcribe

Tenho que admitir que a AWS foi a parte mais difícil de implementar para mim. A documentação tinha muito poucos exemplos, e o SDK parecia não oferecer nenhum suporte a serviços de streaming. Quando comecei a desenvolver a integração com o Amazon Transcribe, o HTTP/2 era o único protocolo disponível e exigia a assinatura de todas as solicitações enviadas ao servidor. Como eu ainda era um pouco inexperiente com a AWS em geral, isso acabou sendo bastante complicado para mim.

O ponto em que essa história dá uma grande reviravolta é quando o líder de Relações com Desenvolvedores, Brandon West entrou em cena, escreveu um código de exemplo usando uma conexão WebSocket e me salvou. O código de exemplo tornou tudo muito mais acessível, mas o processo geral de autorização e a assinatura de chamadas tornam o Amazon Transcribe um pouco mais difícil de implementar no geral.

Aqui, utilizei o WebSocket pacote Node e criei uma URL assinada para estabelecer a conexão.

  let url = v4.createPresignedURL(
    'GET',
    `transcribestreaming.${process.env.AWS_REGION}.amazonaws.com:8443`,
    '/stream-transcription-websocket',
    'transcribe',
    crypto.createHash('sha256').update('', 'utf8').digest('hex'), {
        'key': process.env.AWS_ACCESS_KEY_ID,
        'secret': process.env.AWS_SECRET_ACCESS_KEY,
        'protocol': 'wss',
        'expires': 15,
        'region': process.env.AWS_REGION,
        'query': `language-code=${process.env.LANG_CODE}&media-encoding=pcm&sample-rate=${process.env.SAMPLE_RATE}`
    }
  );

  let socket = new WebSocket(url);

O Amazon Transcribe é um serviço excelente, mas, se você não estiver acostumado a usá-lo, a curva de aprendizado pode ser um desafio.

Documentação do Amazon Transcribe

Custo

Todos os provedores de serviço oferecem um plano básico ou gratuito para você começar. O custo básico depende da duração do áudio transcrito. Como os provedores utilizam incrementos de tempo diferentes, eu os normalizei na tabela abaixo para ajudar você a entender com precisão a diferença nos custos.

Provider Free Tier Cost Normalized Cost
Amazon Transcribe 60 min/month for 12 months $0.006/~10 seconds $0.036/minute
Azure Cognitive Speech Service 5 audio hours free per month $1/audio hour $0.016/minute
Google Cloud Speech-to-Text 60 minutes free $0.006/15 seconds $0.024/minute
IBM Watson Speech-to-Text 500 Minutes per Month $0.02/minute $0.02/minute

Resumo

A transcrição em tempo real é uma ótima maneira de fornecer informações em tempo real. Cada um dos quatro principais provedores de nuvem oferece excelentes soluções com serviços de conversão de fala em texto confiáveis e precisos. Utilizar o Nexmo como fonte de áudio é uma excelente integração que permite experiências de comunicação mais aprofundadas para seus clientes.

Recomendo vivamente o Google Speech-to-text como uma excelente opção. O preço é competitivo, e o serviço é robusto e confiável. É fácil configurá-lo e começar a usá-lo imediatamente, o que é uma vantagem.

Se você quiser experimentar algum ou todos esses serviços, a equipe do Nexmo Extend criou exemplos de código para ajudá-lo a dar os primeiros passos.

Compartilhar:

https://a.storyblok.com/f/270183/384x384/444c073b5e/kellyjandrews.png
Kelly J AndrewsEx-membro da equipe

Kelly J Andrews é defensora de desenvolvedores da Nexmo e vem se dedicando à informática há mais de 30 anos, tendo usado BASIC pela primeira vez aos 5 anos de idade.

Foi só ao criar sua primeira página da web, em 1997, e ao experimentar o JavaScript pela primeira vez que ele descobriu sua verdadeira vocação. Hoje, Kelly luta pelo JavaScript, pelo código testável e pela entrega rápida.

É possível encontrá-lo cantando no karaokê, fazendo truques de mágica ou torcendo pelos Cubs e pelos Fighting Irish.