Processamento de língua falada com Python

Sabemos como processar textos, mas e fala?

Vitoria
Turing Talks
5 min readDec 20, 2020

--

Olá! Bem vindos novamente ao Turing Talks. Hoje abordaremos um tema dentro da área de Processamento de Linguagem Natural: O processamento de língua falada (também conhecido como processamento de áudio). Vamos tratar aqui de como fazer uma transcrição simples de áudio, ou seja, apenas uma parte básica do Processamento de Fala.

Imagem.

Para esse artigo é importante que você já possua conhecimentos básicos de Processamento de Linguagem Natural, para isso recomendamos a leitura deste texto.

Dados em áudio

Na área de Processamento de Linguagem Natural, assim como em outras áreas da inteligência artificial, trabalhamos com dados, ou seja, informações estruturadas a respeito de alguma coisa. Em NLP, eles normalmente estão em formato de texto escrito. Mas então como podemos fazer a máquina compreender o que foi dito em um áudio?

Essa tarefa é na verdade bem fácil, pois a única diferença é que você precisa transcrever o texto antes de poder trabalhar com ele e temos muitas bibliotecas feitas exclusivamente para transcrições de áudio. Vamos ver então como podemos fazer isso usando Python!

Transcrevendo áudios

Primeiro, precisamos entender que assim como um filme mostra cerca de 30 imagens por segundo, fazendo com que nosso cérebro registre como uma imagem em movimento, a taxa de amostragem de um áudio é uma medida do número de blocos de áudios por segundo, usados para representar um som no total, sendo 1 kHz = 1000 pedaços de informações por segundo. Isso nos mostra que até o mais pequeno trecho de áudio possui muitos pedaços de informação.

Também precisamos entender que existem muitos formatos diferentes de áudio: mp3, m4a, wav, flac, etc. Assim sendo, a transcrição deles será melhor quando você trabalhar apenas com um tipo. Sabendo disso, vamos conhecer um pouco mais sobre a biblioteca que vamos usar!

A biblioteca

SpeechRecognition library é uma biblioteca do Python para transcrição e reconhecimento de áudios. Ela utiliza ferramentas de detecção de áudios de várias API’s diferentes, como a do Google e da IBM, e para trabalhar com elas você precisa importar e instalar as ferramentas necessárias. Entretanto, as linguagens que essa biblioteca suporta são bem poucas, sendo a principal língua o inglês. Aqui nesse texto vamos usar o recognizer do Google para transcrever um áudio em inglês.

Vamos começar instalando a biblioteca:

!pip install SpeechRecognition

Feito isso já podemos importá-la! Vamos aproveitar e já instanciar o nosso reconhecedor de áudios e definir um threshold de 300, esse valor representa o limite do nível de energia para sons. Valores abaixo desse limite são considerados silêncio e valores acima desse limite são consideradas falas. Se você está tendo problemas porque o recognizer está tentando reconhecer palavras mesmo quando você não está falando, tente ajustar isso para um valor mais alto. Se estiver tendo problemas de não reconhecer suas palavras quando você está falando, tente ajustar isso para um valor mais baixo. Para mais informações sobre o threshold é só dar uma olhada na seção recognizer_instance.energy_threshold deste link.

Vamos ver como fica:

Lendo nosso áudio

O próximo passo é ler nosso áudio. Existem muitas bibliotecas do Python próprias para isso, como por exemplo a biblioteca wave que serve para ler e mexer com áudios no formato wav. Porém, a biblioteca que estamos usando aqui já possui uma função exclusiva para esse tipo de leitura, então vamos usá-la:

Nosso áudio está salvo como “audio.wav”, ele possui pouco menos de um minuto e o seguinte texto:

“Hello, we are the Turing Group. We study, apply and disseminate Artificial Intelligence. One of our most important works is the articles written for Medium, our Turing Talks. I hope you like the material we wrote! Stay tuned for more news.”

TRADUÇÃO: “Olá, nós somos o Grupo Turing. Estudamos, aplicamos e disseminamos Inteligência Artificial. Um dos nossos trabalhos mais importantes são os artigos escritos para o Medium, os Turing Talks. Esperamos que vocês gostem do material que escrevemos! Fiquem ligados para mais novidades.”

Convertendo para o data type correto

Temos um problema para resolver antes de partirmos para a transcrição. Se printarmos o tipo (data type) do nosso áudio ele será reconhecido como “Audio File”, que é uma das formas que o Python pode ler um áudio:

Entretanto, para a biblioteca transcrever, ela exige que o áudio esteja como “Audio Data”, então precisamos converter o data type antes de começarmos a transcrição! É bem fácil, vamos ver:

Vamos checar para ver se realmente mudou o data type:

Perfeito! Feito isso só nos resta passar o áudio para ser transcrito.

Transcrição

Aqui vamos usar a função recognize_google, que utiliza a API do google para transcrever áudios com Python. Precisamos apenas indicar qual arquivo será transcrito no parâmetro audio_data e especificar a linguagem em language. Aqui usaremos o que está guardado na variável audio e vamos colocar a língua como “en-US” (Inglês dos EUA), já que nosso áudio está em inglês. Bora?

Nossa transcrição ficou muito boa, mesmo levando em conta que o áudio foi falado por um brasileiro!

Áudio transcrito, e agora?

Agora você pode tratar seu texto transcrito da mesma forma que trataria um texto normal, pode pré processá-lo ou obter insights mais significativos, assim como fazer uma Análise de Sentimentos, por exemplo!

Note que o texto já sai com alguns pré-processamentos, como letras minúsculas e nenhuma pontuação, isso já ajuda na hora de trabalharmos com ele para outras tarefas de NLP.

Conclusão

Nesse artigo vimos como transcrever um áudio para texto usando uma biblioteca do Python. Essa foi apenas a parte mais básica, uma vez que existem outras muitas funções nessa lib e em outras similares.

Para fixar os assuntos vistos aqui recomendamos que você treine cada um desses passos com seu próprio áudio! Também, se você quiser se aprofundar mais nas outras inúmeras funções da biblioteca SpeechRecognition, assim como descobrir as línguas que ela suporta e mais sobre as API’s que ela utiliza, incentivamos que você dê uma olhada na sua documentação.

Por fim, assim como disse o áudio, não deixe de acompanhar as novidades do Grupo Turing no Facebook, Linkedin, Instagram e seguir nossos posts do Medium =)

Agradecimentos ao Nathan de Moura.

--

--

Vitoria
Turing Talks

Estudante de Linguística na FFLCH e membro do Turing USP. Você pode me encontrar no GitHub: https://github.com/vitoriars