R é multiplataforma e gratuito / de código aberto.
Carregue e carregue as bibliotecas tuneR
e seewave
(instale-as a partir do gerenciador de pacotes, se ainda não estiver instalado).
library(tuneR)
library(seewave)
Em seguida, carregue seu arquivo MP3 ou WAV:
w = readMP3("dog-whistle-0.mp3")
w = readWave("dog-whistle-0.wav")
Agora, vamos traçar o espectro e seus picos:
fpeaks(meanspec(w), nmax=1)
Resultado:
Resultadonumérico:
fpeaks(meanspec(w),nmax=1,plot=FALSE)12.05859
Oacimasófuncionacomdadosnãomusicais.Quandovocêanalisafreqüênciasdemúsica,vocêveráqueasfreqüênciasmaisaltasestarãosempreemtornode12a20kHz,dependendodo(s)instrumento(s)envolvido(s).Noentanto,estafrequênciamaisaltanãolhedaráumaestimativadanotaqueestásendotocada,umavezqueumanotamusical,quandotocadaporuminstrumento,serácompostademúltiplasfreqüências.
Esteéochamado"timbre" de um instrumento, e você verá que um A em 440 Hz por uma flauta incluirá diferentes componentes de freqüência em comparação com um A tocado por uma guitarra elétrica.
Sua melhor aposta é executar uma análise de frequência dominante observando os picos de frequência nas janelas de tempo variável e verificar onde ocorre o mais alto.
Não existe algo como "frequência ao longo do tempo". Você só pode traçar a freqüência média (ou dominante) durante certo tempo de deslizamento janelas . A Seewave oferece algumas funções relacionadas à seleção de janelas de tempo, mas fica bastante complicada.
Você poderia usar
s = specprop(meanspec(w, from=10, to=11))
para obter as propriedades do espectro de 10 a 11 segundos e, em seguida, chamar s$centroid
ou s$mean
para obter o centróide ou as frequências médias dessa janela de tempo específica (embora 1 segundo seja muito grande para análise de áudio). >
Se o seu arquivo Wave usa amostragem de 44,1 kHz, você pode reduzir a amostragem para reduzir o esforço de computação, por exemplo, para 16 kHz.
w = downsample(w, 16000)
Mas lembre-se que, de acordo com o Teorema de Nyquist , a freqüência máxima que pode ser representada agora é de 8 kHz.
Você também pode procurar um software de detecção de pitch. Como este , que exige o MATLAB.