https://a.storyblok.com/f/270183/20120/780c2cd82c/blog_voice-transcription-pipeline_1200x600.png

Fluxo de trabalho de transcrição de voz em PHP com a Vonage

Publicado em May 4, 2021

Tempo de leitura: 6 minutos

Nesta postagem, você criará um fluxo de trabalho de transcrição de voz. O objetivo é usar o Amazon Transcribe para processar uma conversa inteira em canais e, em seguida, inserir os resultados em um instância instância de banco de dados MySQL. Para fazer isso, serão necessários dois funções do AWS Lambda : uma aplicativo HTTP para recuperar um arquivo MP3 e enviá-lo ao Amazon Transcribe, e uma função de retorno de chamada após a conclusão da transcrição para armazenar os resultados em um banco de dados MySQL.

Pré-requisitos

Instruções de configuração

Clone o nexmo-community/voice-channels-aws-transcribe-php do GitHub e acesse o diretório recém-criado para continuar.

Use o Composer para instalar dependências

Este exemplo requer o uso do Composer para instalar dependências e configurar o carregador automático.

Supondo que você tenha o Composer instalado globalmente, execute:

composer install

Configuração da AWS

Você precisará criar credenciais da AWS conforme indicado por Serverless.

Além disso, crie um novo bucket do AWS S3 e anote a URL para uso posterior.

Vincule o aplicativo ao Vonage

Criar uma aplicação Vonage usando a interface de linha de comando

Instale a CLI seguindo estas instruções. Você usará isso para criar um novo aplicativo Vonage Voice que também configura um answer_url e event_url para o aplicativo em execução no AWS Lambda:

vonage apps:create aws-transcribe --voice_answer_url=https://<your_hostname>/webhooks/answer --voice_event_url=https://<your_hostname>/webhooks/event

NOTA: Você usará <your_hostname> como um espaço reservado neste comando. Mais tarde, depois de saber as URLs fornecidas pela implantação no AWS Lambda, você precisará atualizar essas partes das URLs por meio do Painel da API da Vonage para o seu aplicativo.

IMPORTANTE: Isso retornará um ID de aplicativo e uma chave privada. O ID de aplicativo será necessário para o vonage apps:link comando e também para o .env arquivo posteriormente. Um arquivo chamado private.key será criado no mesmo local/nível que server.js, por padrão.

Obter um novo número virtual

Se você ainda não tiver um número, solicite um à Vonage. Isso também pode ser feito por meio da CLI, executando este comando:

vonage numbers:search US

E adquirir um dos números disponíveis, obtidos ao executar o comando:

vonage numbers:buy <number>

Vincule o número virtual ao aplicativo

Por fim, vincule o novo número ao aplicativo criado executando:

vonage apps:link YOUR_APPLICATION_ID --number=<number>

Atualizar o ambiente

Renomeie o .env.dist para .env e atualize os valores conforme necessário:

APP_ID=voice-aws-transcribe-php LANG_CODE=en-US SAMPLE_RATE=8000 AWS_VERSION=latest AWS_S3_ARN= AWS_S3_BUCKET_NAME='' AWS_S3_RECORDING_FOLDER_NAME='' VONAGE_APPLICATION_PRIVATE_KEY_PATH='./private.key' VONAGE_APPLICATION_ID=

NOTA: Todos os espaços reservados marcados com <> devem ser atualizados.

Plug-in sem servidor

Instale o serverless-dotenv-plugin com o seguinte comando:

npm i -D serverless-dotenv-plugin

Implantar no Lambda

Com todas as atualizações acima concluídas com sucesso, agora você pode usar Serverless para implantar o aplicativo no AWS Lambda.

serverless deploy

Observação: Não deixe de visitar o Painel da API da Vonage e atualize o answer e event URLs para suas aplicações com as informações fornecidas pela implantação.

Migrar a transcrição para um banco de dados

Se você precisar apenas da transcrição, está tudo pronto. No entanto, para automatizar a migração dos resultados da transcrição para o banco de dados, será necessário implantar outra função. Clone isto nexmo-community/aws-voice-transcription-rds-callback-php para outro local e siga as instruções no README para colocá-lo em funcionamento. As instruções são idênticas às que foram seguidas acima para a primeira função.

Criar o gatilho

Depois de adicionar a segunda função, você pode acessar CloudWatch no seu Console da AWS e selecionar Eventos e Começar para criar uma nova regra de evento.

Defina a regra da seguinte forma:

  • Padrão de evento

  • Criar um padrão de eventos para filtrar eventos por serviço

  • Nome do serviço = Transcribe

  • Tipo de evento = Alteração no status da tarefa de transcrição

  • Status específico(s) = CONCLUÍDO

  • Como destino, selecione a função Lambda nº 2 criada acima

  • Role a página para baixo e clique em Configurar detalhes.

  • Dê à regra um nome e uma descrição significativos e ative-a.

  • Clique Criar regra para concluí-la.

Agora você está pronto para fazer o teste.

Uso

Com a implantação concluída, você poderá fazer uma ligação para o seu número virtual a partir de qualquer telefone. Você ouvirá uma mensagem informando que a ligação foi estabelecida e, em seguida, o número do destinatário será discado.

Depois que você desligar, o arquivo MP3 será recuperado da Vonage e enviado para o AWS S3. Em seguida, será iniciada uma tarefa de transcrição. É possível acompanhar o andamento da tarefa no site do AWS Console após o login.

Após a conclusão da transcrição, o CloudWatch acionará a função Lambda para analisar a transcrição e inseri-la no banco de dados.

Próximos passos

Se você tiver alguma dúvida ou encontrar algum problema, entre em contato com @VonageDev no Twitter ou fazer sua pergunta na Comunidade de Desenvolvedores da Vonage no Slack. Boa sorte.

Compartilhar:

https://a.storyblok.com/f/270183/384x384/b3c7ffaf85/adamculp.png
Adam CulpEx-funcionários da Vonage

Adam é um desenvolvedor e consultor que gosta de corridas de ultramaratona, escrever em blogs e gravar vlogs, além de ajudar outras pessoas a dominar a tecnologia para realizar coisas incríveis, movido por um desejo insaciável de orientar e ajudar.