Pré-requisitos: Matplotlib

Um espectrograma pode ser definido como a representação visual de frequências contra o tempo que mostra a força do sinal em um determinado momento. Em palavras simples, um espectrograma nada mais é do que uma imagem de som. Também é chamado de impressão de voz ou gramas de voz. Um espectrograma é mostrado usando várias cores que indicam a intensidade do sinal. Se a cor for brilhante, significa que a energia do sinal está alta. Em outras palavras, o brilho da cor é diretamente proporcional à intensidade do sinal no espectrograma.

Os espectrogramas são, na verdade, criados usando a transformada de Fourier de curta duração (STFT). Isso nos ajuda a fazer uma análise variável com o tempo do sinal fornecido. De qualquer forma, não é necessário entrar em profundidade neste tópico. O conceito principal é que dividimos o sinal de áudio em pequenos pedaços e então esse sinal de áudio é plotado no gráfico em função do tempo. 

Para esta visualização, a função specgram() é usada com os parâmetros necessários.

Sintaxe: matplotlib.pyplot.specgram (Data, NFFT = None, Fs = None, Fc = None, detrend = None, window = None, noverlap = None, cmap = None, xextent = None, pad_to = None, sides = None, scale_by_freq = None, mode = None, scale = None, vmin = None, vmax = None, *, data = None, ** kwargs)



Parâmetro:

  • Dados- Esta é a sequência de dados reais que precisam ser plotados.
  • Fs- Este é um scaler com um valor surdo-padrão de 2.
  • janela- Este parâmetro converte o segmento de dados e retorna a versão em janela do segmento.
  • lados- Isso especifica o lado do espectro que deve ser exibido. Pode ter três valores, a saber, “padrão”, “unilateral” e “dupla face”.
  • NFFT- Este parâmetro contém o número de pontos de dados usados ​​em cada bloco para o FFT.
  • detrend- Este parâmetro contém a função aplicada a cada segmento antes do ajuste.
  • scale_by_freq- Este parâmetro permite a integração sobre os valores de frequência retornados.
  • modo- Este parâmetro é o tipo de espectro a ser usado {'default', 'psd', 'magnitude', 'ângulo', 'fase'}.
  • noverlap- Este parâmetro é o número de pontos de sobreposição entre os blocos.
  • escala- Contém a escala dos valores na especificação e pode ter três valores como 'padrão', 'linear' e 'dB'.
  • Fc: Este parâmetro é a frequência central de x.
  • camp: Este parâmetro é uma instância matplotlib.colors.Colormap que nos permite alterar as cores do espectrograma.

Esses eram os princípios básicos do espectrograma. Agora, vamos avançar para a plotagem de um espectrógrafo usando a biblioteca matplotlib em python. 

Abordagem

  • Módulo de importação
  • Defina a diferença de tempo para tirar uma foto do sinal gerado
  • Gere um conjunto de valores
  • Use a função com os parâmetros corretos
  • Adicione personalização adicional ao gráfico
  • Gráfico de exibição

Exemplo:

# Importing libraries using import keyword.
import math
import numpy as np
import matplotlib.pyplot as plt
  
# Set the time diffrence to take picture of
# the the generated signal.
Time_difference = 0.0001
  
# Generating an array of values
Time_Array = np.linspace(0, 5, math.ceil(5 / Time_difference))
  
# Actual data array which needs to be plot
Data = 20*(np.sin(3 * np.pi * Time_Array))
  
# Matplotlib.pyplot.specgram() function to
# generate spectrogram
plt.specgram(Data, Fs=6, cmap="rainbow")
  
# Set the title of the plot, xlabel and ylabel
# and display using show() function
plt.title('Spectrogram Using matplotlib.pyplot.specgram() Method')
plt.xlabel("DATA")
plt.ylabel("TIME")
plt.show()

Saída:

 Atenção geek! Fortaleça suas bases com o Python Programming Foundation Course e aprenda o básico.