Traçando um espectrograma usando Python e Matplotlib
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.
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva