Carregando arquivos de áudio no Python

Instalando e utilizando a biblioteca SoundFile para carregar e visualizar arquivos WAV

Walisson Silva30 de maio de 20214 minIniciante

Fala, pessoal! Neste post eu estarei ensinando a vocês como carregar arquivos de áudio e exibi-los graficamente no Python. O pessoal que trabalha com processamento de sinais, normalmente, tem a necessidade de carregar arquivos de áudio no formato wav para realizar algum tipo de processamento sobre ele, extrair algumas informações, dentre outras coisas. No Matlab existe uma função chamada audioread que realiza esse tipo de rotina. Da mesma forma, existe uma função similar no Python que pode te ajudar com isso.

A seguir, estarei elencando para vocês os passos para carregar um arquivo wav e exibir, graficamente, o sinal de voz:

Passo 1

Para carregar arquivos no formato wav você vai precisar, primeiramente, instalar uma biblioteca do Python chamada SoundFile. Se você possui o pip instalado, basta dar o comando pip3 install soundfile. Caso você tenho o Anaconda instalado, basta dar o comando conda install -c conda-forge pysoundfile.

Passo 2

Agora que você já tem a biblioteca instalada, vamos criar o script para carregar o arquivo de áudio wav. Caso você não tenha um arquivo de áudio nesse formato, faça o download do arquivo contido nesse link.

import numpy as np 
import matplotlib.pyplot as plt 
import soundfile as sf

signal, samplerate = sf.read('audio.wav')

Observe que nós iniciamos o código importando três bibliotecas. Primeiro, a biblioteca do Numpy, porque o sinal de áudio será armazenado em um numpy, portanto, é possível que você precise utilizar essa biblioteca. Em seguida, importamos a biblioteca do matplotlib, porque no próximo passo iremos plotar o gráfico do sinal. Por fim, importamos a biblioteca soundfile, o nome dado à biblioteca PySoundFile no código. Veja que ela é importada, por definição e simplicidade, como sf.

A linha seguinte é a mais importante, porque é nessa linha que o arquivo é carregado e armazenado no numpy. Utilizamos a função read da biblioteca PySoundFile. Essa função é composta, no mínimo, por um parâmetro que é uma string contendo o diretório e o nome do arquivo. Nesse caso, o arquivo deve estar no mesmo diretório do seu script. Observe que essa função retorna duas variáveis: a primeira delas é o numpy no qual as amostras do sinal de voz será armazenado; o segundo parâmetro é um inteiro que contém a taxa de amostragem do sinal de áudio.

Passo 3

Agora, vamos plotar o sinal de voz. Para isso, utilizaremos você deve adicionar o código abaixo ao seu script (do passo anterior):

time = np.arange(0, len(signal) * 1/samplerate, 1/samplerate)

plt.plot(time, signal)
plt.xlabel('Time (s)')
plt.ylabel('Amplitude (V)')
plt.show()

Veja que primeiro nós criamos um vetor de tempo (time). O que acontece é que nós temos apenas as amostras do sinal (eixo vertical), mas precisamos ter os valores do eixo horizontal, que corresponde ao tempo de duração do sinal. Por isso, definimos um array que inicia em 0, possui a duração do período de amostragem (o inverso da taxa de amostragem) multiplicado pelo número de amostras, e com um passo igual ao período de amostragem. Por fim, nós plotamos o sinal de áudio utilizando a biblioteca do Matplotlib.

É isso! Gostou desse post? Então, não deixa de me seguir no Instagram ou no Canal do Telegram para acompanhar todas as novidades do Blog e do canal do YouTube. Um grande abraço e até a próxima!