Início > DSP, Programação > Calculando Decibéis Pela Entrada de Áudio

Calculando Decibéis Pela Entrada de Áudio

Bom vamos lá….

Alguem já se perguntou como calcular a itensidade sonora provocada por algum ruido??

Toda variação de pressão gerada por uma onda sonora possue uma itensidade !

Detalhes técnicos pode ser encontrado aqui http://en.wikipedia.org/wiki/Decibel

Desenvolvi uma classe bem simples em python que faz este cálculo:

você vai precisar de um microfone …

O grande problema de se medir a itensidade por microfones é que eles não sao precisos pois eles não faram feitos com esta finalidade, tanto é que existem microfones mais senssível outros de melhor qualidade, ate mesmo as configurações de sua entrada de audio pode alterar os valores, limitações do dispositivo, ruidos provocados pelo próprio CPU podem interferir nos resultados etc, etc …

Existem padroes estabelecidos referente as faixas de decibéis !!!

* 0-20dB —- Muito Baixo imperceptível
* 20-40dB —- Baixo conversação silenciosa
* 40-60dB —- Moderado conversação normal
* 60-80dB —- Alto ruído médio de fábrica ou trânsito
* 80-100dB — Muito alto apito de guarda e ruído de caminhão
* 100-120dB —Ensurdecedor ruído de discoteca e de avião decolando

#########CLASSE INICIO##########################

##############################################

##Eng Eder de Souza

##Date: 12/09/2010

##Power Audio From Microphone Calc.

##############################################

import sys

import math

import numpy

import pyaudio

from scipy.fftpack import rfft

from numpy import *

class AudioPowerClass(object):

def GetPowerWavFromMIC(self):

FORMAT = pyaudio.paInt16

pyaud = pyaudio.PyAudio()

teste = pyaud.get_sample_size(FORMAT)

try:

stream = pyaud.open(format = pyaudio.paInt16,

channels = 1,

rate = 8000,

input_device_index = int(pyaud.get_default_input_device_info()[“index”]),

input = True)

print “Escrito por Eng Eder de Souza”

print “Dispositivo de Microfone Encontrado pronto para uso”

print””

print””

except:

print “Escrito por Eng Eder de Souza”

print “Falha ao Encontrar Dispositivo”

sys.exit()

while True:

try:

pegaentrada = stream.read(1)

except:

continue

dados = numpy.fromstring(pegaentrada, dtype=numpy.int16)

pwr  = round(10*log10(1e-20+abs(rfft(dados))))

print “%d dB” %int(pwr)

#########CLASSE FIM##########################

Exemplo de como chamar  esta classe AudioPowerClass!

#########PROG INICIO##########################

from AudioPowerClass import AudioPowerClass

Power = AudioPowerClass()

try:

Power.GetPowerWavFromMIC()

except KeyboardInterrupt:

print ‘Eng Eder de Souza bye bye !! …’

#########PROG FIM##########################

Eng Eder de Souza

Categorias:DSP, Programação
  1. Nenhum comentário ainda.
  1. No trackbacks yet.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: