https://a.storyblok.com/f/270183/385484/799f9a2a2d/speech-to-text-with-nexmo-and-microsoft-azure.png

Conversão de voz em texto com a Nexmo e o Microsoft Azure

Publicado em April 19, 2021

Tempo de leitura: 6 minutos

Se você já precisou de algo que ajudasse a receber chamadas telefônicas e transcrevê-las automaticamente em tempo real, está com sorte, pois pode fazer isso usando nosso conector recém-atualizado conector Nexmo-to-Azure Speech Service.

Recentemente, atualizamos o código e as opções de implantação desse conector; agora, ficou ainda mais fácil implantá-lo, modificá-lo ou ampliá-lo, caso ele se encaixe em algum problema que você esteja tentando resolver.

Se isso já te convenceu e você está ansioso para começar, confira mais detalhes em nossa nexmo-community no GitHub.

Como o aplicativo funciona com o Serviço de Fala do Azure

A plataforma Azure da Microsoft oferece um excelente conjunto de Serviços Cognitivos por meio de APIs que permitem trabalhar com reconhecimento de fala, visão, linguagem e muito mais. Este aplicativo utiliza a API de conversão de fala em texto para reconhecer áudio transmitido em tempo real por meio de um websocket de uma chamada telefônica facilitada por um Objeto Nexmo Call Control.

Em termos simples, você literalmente chama a API e se comunica com ela. O Azure Speech realiza o reconhecimento do áudio, e as frases são retornadas ao console.

Nexmo  Azure Speech Service

Como executar sua própria instância

Este aplicativo faz parte da nossa programa Nexmo Extend , no entanto, criamos Applications úteis e reutilizáveis para ajudar você a começar a usar o Nexmo com outros excelentes provedores de serviços, como o Microsoft Azure, Google Cloud e Amazon Web Services.

Facilitamos para você a implantação e o uso imediato da sua própria instância deste aplicativo, com apenas um clique.

Opções de implantação com um clique

Você tem a opção de implantar o aplicativo no Heroku ou no Azure por meio dos botões localizados na parte superior do arquivo Readme no repositório do GitHub.

No entanto, se você quiser implementá-lo e ter uma maneira segura (mas que permite erros!) de trabalhar com o código diretamente do seu navegador, experimente remixar o aplicativo no Glitch e comece a ampliar a base de código imediatamente.

Implantar/Executar com o Docker

Este aplicativo também pode ser executado ou implantado com o Docker. A maneira mais rápida de fazer isso é clonar o repositório e, a partir do diretório raiz, usar o Docker Compose para dar início ao processo, executando:

docker-compose up

Seja qual for a opção de implantação que você escolher, você terá um novo hostname onde o aplicativo estará em execução; portanto, você precisará vincular seu número virtual da Nexmo a ele para concluir a configuração.

Conectando o aplicativo ao Nexmo

Como usar o painel

  1. Criar um aplicativo de voz

  2. Adicione a URL do evento - https://<your_new_hostname>/ncco

  3. Adicione a URL da resposta - https://<your_new_hostname>/event

  4. Clique Create Application

  5. Clique Numbers e vincule o número virtual criado recentemente.

  6. Copie o número virtual para usá-lo na próxima etapa.

Utilizando a interface de linha de comando

Você pode instalar a CLI seguindo estas instruções. Em seguida, crie um novo aplicativo Nexmo que também configure sua answer_urlevent_url para o aplicativo rodando localmente na sua máquina.

nexmo app:create ms-speech-to-text http:///ncco http:///event

Isso retornará um ID de aplicativo. Anote-o.

Alugue um novo número virtual

Se você ainda não tiver um número configurado, precisará alugar um. Você pode fazer isso usando a CLI:

nexmo number:buy

Vincule o número virtual ao aplicativo

Por fim, vincule seu novo número ao aplicativo que você criou executando:

nexmo link:app YOUR_NUMBER YOUR_APPLICATION_ID

Experimente

Agora, com seu aplicativo em execução — independentemente de onde você o tenha implantado —, ligue para o número que você atribuiu a ele e comece a falar. Após uma breve pausa, você verá tudo o que disser sendo exibido no console, em tempo real.

Como ampliar isso

O próximo passo lógico seria começar a enviar as frases retornadas pelo Azure Speech Service para outro serviço que as consumirá e tomará as medidas necessárias com base no que for recebido.

Você pode fazer isso modificando a on_return_message função, que atualmente termina assim:

if data['RecognitionStatus'] == "Success":
    # Extend From here to handle your transcription messages
    print(data["DisplayText"])

Usando a biblioteca Requests (que já é uma dependência, portanto não é preciso instalá-la novamente), você poderia POST enviar as frases como um objeto JSON para outra API, onde elas seriam processadas e, posteriormente, utilizadas. Para adicionar essa funcionalidade, altere a instrução final if em on_return_message para algo assim:

if data['RecognitionStatus'] == "Success":
    # Extend From here to handle your transcription messages
    print(data["DisplayText"])

    url = "http://<another_api>/<endpoint>"
    headers = {'Content-Type': 'application/json'}
    
    resp = requests.post(url, headers=headers, data=json.dumps({'phrase': data["DisplayText"]}))

    if resp.status_code == 200:
        print(resp.content)
    else:
        print(resp.status_code)
        print(resp.content)

Sempre que uma nova frase for retornada pelo Serviço de Fala do Azure, um {"phrase":"Words returned by the app."} será enviado um objeto.

O que você vai fazer com isso a seguir é com você!

Se você decidir ampliar essa aplicação ou tiver dúvidas sobre como ela funciona, acesse o canal da Comunidade Nexmo no Slack , onde teremos o maior prazer em ajudá-lo com quaisquer dúvidas e ouvir suas sugestões.

Compartilhar:

https://a.storyblok.com/f/270183/250x250/d0444194cd/martyn.png
Martyn DaviesEx-funcionários da Vonage

Ex-diretor de Formação de Desenvolvedores da Vonage. Com experiência como desenvolvedor criativo, gerente de produto e organizador de hack days, Martyn atua como defensor da tecnologia desde 2012, tendo trabalhado anteriormente no setor de radiodifusão e em grandes gravadoras. Ele se dedica a capacitar e empoderar desenvolvedores em todo o mundo.