Início > DSP, Programação > Frequencia Fundamental

Frequencia Fundamental

Bom Vamos lá, o tópico de hoje é relacionado a processamento de sinais, um complexo emaranhado de técnicas matemáticas, o peso da bagagem teórica sobre o assunto se torna extremamente massante, vamos simplificar tudo isso passando sobre o caminho das pedras.

Existem vários métodos para descobrir a Frequencia Fundamental (F0) http://en.wikipedia.org/wiki/Fundamental_frequency

Os Mais comuns são:

*Achar a Estimativa da Frequencia com o uso da autocorrelação
*Achar a estimativa da Frequencia com o uso da Transformada de Fourrier e Interpolação Quadrática
*Achar a Estimativa da Frequencia com o uso de zero crossings

Mas se você quer construir algo rápido, apenas injetar um sinal de audio via Microfone ou ler um Arquivo .Wav para conseguir a Frequencia do sinal injetado simplefique  tudo utilizando o http://pypi.python.org/pypi/SoundAnalyse, SoundAnalyse é o modulo em python para conseguir isso e muito mais.

Testei o SoundAnalyse em solo Windows para tal instalar os seguintes componentes

Instalar o Python
Download em http://www.python.org/download/

Instalar o MinGW
Download em http://ufpr.dl.sourceforge.net/sourceforge/mingw/MinGW-5.1.4.exe

Instalar o numpy e o pyaudio
Download em http://www.lfd.uci.edu/~gohlke/pythonlibs/

Instalar o SoundAnalyse
Download em http://pypi.python.org/packages/source/S/SoundAnalyse/SoundAnalyse-0.1.1.tar.gz

colocar o compilador MinGW ao Path do Windows
C:\>set PATH=C:\MinGW\bin;%PATH%

Para Instalar o SoundAnalyse de execute

C:\Python26\SoundAnalyse-0.1.1>C:\Python26\python.exe setup.py install

Pronto todos os módulos dependentes instalados Agora vamos ao Source

import sys
import os
import time
import numpy
import pyaudio
import analyse
 
#Eng Eder de Souza – Frequencia Fundamental

pyaud = pyaudio.PyAudio()
Microfone=sys.argv[1]

try:
    stream = pyaud.open(
    format = pyaudio.paInt16,
    channels = 1,
    rate = 44100,
    input_device_index = int(Microfone),
    input = True)
except:
    print “Falha ao Encontrar Dispositivo”
    sys.exit()
Frequencia = “”
while True:
  
    try: 
       pegaentrada = stream.read(1024)
    except:
        print “%.0f Hz” %Frequencia
        os.system(“cls”)
   
    dados = numpy.fromstring(pegaentrada, dtype=numpy.int16)
    if analyse.detect_pitch(dados):
          print “%.0f Hz” %analyse.detect_pitch(dados)
          os.system(“cls”)
          Frequencia = analyse.detect_pitch(dados)
        
    else:
        
         print “%.0f Hz” %Frequencia
         os.system(“cls”)

Para rodar Execute

python.exe mic.py 1

Altere o Valor do Device até encontrar sua entrada de Microfone no meu caso é “1” !!

Tela  de  teste para Identificação de Audio em 100 Hertz


[]’s
Eng Eder de Souza

Categorias:DSP, Programação Tags:
  1. Nenhum comentário ainda.
  1. junho 15, 2011 às 4:57 pm

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: