Discussion:
[pyar] frecuencia promedio de fragmento de audio
Esteban Alejandro Chauque
2015-09-25 19:09:09 UTC
Permalink
Buenas tardes, estoy intentando analizar un fragmento de audio.
Basicamente emito un sonido de una frecuencia conocida (440) y grabo lo que
entra por el mic por un periodo de tiempo.
Logro mostrar el grafico en funcion de la frecuencia (fft), pero no logro
calcular la frecuencia media y la verdad que no se como resolverlo.


Saludos
Emiliano Lopez
2015-09-25 19:29:58 UTC
Permalink
Post by Esteban Alejandro Chauque
Buenas tardes, estoy intentando analizar un fragmento de audio.
Basicamente emito un sonido de una frecuencia conocida (440) y grabo lo que
entra por el mic por un periodo de tiempo.
Logro mostrar el grafico en funcion de la frecuencia (fft), pero no logro
calcular la frecuencia media y la verdad que no se como resolverlo.
No estoy seguro de entender lo que preguntás. La fft no te da
referencia del tiempo en que sucede cada frecuencia, sino de la
energía.
Para hacer un análisis temporal necesitás hacer un gráfico
tiempo-frecuencia, ahí ves una imagen, y para cada ventana de tiempo
tenés las frecuencias de mayor energía.

Capaz eso te puede dar una mejor idea de la frecuencia promedio.
_______________________________________________
pyar mailing list ***@python.org.ar
http://listas.python.org.ar/listinfo/pyar

PyAr - Python Argentina - Sitio web: http://www.python.org.ar/

La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar
Antonio Storni
2015-09-25 19:32:55 UTC
Permalink
A qué te referis con frecuencia media?

Si necesitas identificar la frecuencia de un sonido con muchos armónicos,
tenés que identificar el 1er armónico, o armónico fundamental, una FFT te
va a dar un espectro con la intensidad de cada frecuencia.

Para identificar el 1er armónico, podrías intentar encontrar el pico máximo
del resultado de la FFT, aunque esto puede llegar a fallarte si hay otro
armónico con una intensidad superior al fundamental.

También podrías tratar de identificar la nota contando los cruces de 0 del
eje x en el tiempo, aunque también puede andar mal si hay mucho ruido en el
sonido.

FIjate acá que hay explicados varios métodos:
https://gist.github.com/endolith/255291


Saludos
Tony
Post by Esteban Alejandro Chauque
Buenas tardes, estoy intentando analizar un fragmento de audio.
Basicamente emito un sonido de una frecuencia conocida (440) y grabo lo
que entra por el mic por un periodo de tiempo.
Logro mostrar el grafico en funcion de la frecuencia (fft), pero no logro
calcular la frecuencia media y la verdad que no se como resolverlo.
Saludos
_______________________________________________
http://listas.python.org.ar/listinfo/pyar
PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
Argentina - http://www.usla.org.ar
Juan Esteban Carrique
2015-09-26 21:55:23 UTC
Permalink
Es extraño lo q preguntas, cual es el propósito de la medición?

La f media, no necesariamente sería el máximo en la fft, seria la f donde
se equilibra la curva de la fft (en rigor la dft)

:J'u"a.n_ (dde el móvil)
Post by Antonio Storni
A qué te referis con frecuencia media?
Si necesitas identificar la frecuencia de un sonido con muchos armónicos,
tenés que identificar el 1er armónico, o armónico fundamental, una FFT te
va a dar un espectro con la intensidad de cada frecuencia.
Para identificar el 1er armónico, podrías intentar encontrar el pico
máximo del resultado de la FFT, aunque esto puede llegar a fallarte si hay
otro armónico con una intensidad superior al fundamental.
También podrías tratar de identificar la nota contando los cruces de 0 del
eje x en el tiempo, aunque también puede andar mal si hay mucho ruido en el
sonido.
https://gist.github.com/endolith/255291
Saludos
Tony
Post by Esteban Alejandro Chauque
Buenas tardes, estoy intentando analizar un fragmento de audio.
Basicamente emito un sonido de una frecuencia conocida (440) y grabo lo
que entra por el mic por un periodo de tiempo.
Logro mostrar el grafico en funcion de la frecuencia (fft), pero no logro
calcular la frecuencia media y la verdad que no se como resolverlo.
Saludos
_______________________________________________
http://listas.python.org.ar/listinfo/pyar
PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
Argentina - http://www.usla.org.ar
_______________________________________________
http://listas.python.org.ar/listinfo/pyar
PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
Argentina - http://www.usla.org.ar
Octavio A. Bruzzone
2015-09-26 22:31:02 UTC
Permalink
Para identificar el 1er armónico, podrías intentar encontrar el pico
máximo del resultado de la FFT, aunque esto puede llegar a fallarte
si hay otro armónico con una intensidad superior al fundamental.
En todo caso, sería la frecuencia más baja que es superior en
intensidad al ruido (suponiendo ruido blanco, su distribución es pareja
en todo el espectro)
_______________________________________________
pyar mailing list ***@python.org.ar
http://listas.python.org.ar/listinfo/pyar

PyAr - Python Argentina - Sitio web: http://www.python.org.ar/

La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar
Esteban Alejandro Chauque
2015-09-28 12:45:54 UTC
Permalink
Para no dejar inconcluso el tema paso a detallar:

Lo que estoy buscando es hallar alguna forma de distorsión para un test de
loopback (lo que se emite por el microno sale por el auricular).
Lo que por ahora hice fue hallar el pico maximo de cada muestra y buscar la
correspondiente frecuencia para un periodo de tiempo seteable.
La señal que emito es una frecuencia seteable de 440Hz, 990Hz, etc. De esa
forma estoy suponiendo que el promedio de la frecuencia correspondiente a
cada pico maximo puede darme alguna grado de aceptacion en porcentaje.

Igual me quedo con lo de wavelets para empezar a leer.

saludos
Post by Antonio Storni
Para identificar el 1er armónico, podrías intentar encontrar el pico
máximo del resultado de la FFT, aunque esto puede llegar a fallarte
si hay otro armónico con una intensidad superior al fundamental.
En todo caso, sería la frecuencia más baja que es superior en
intensidad al ruido (suponiendo ruido blanco, su distribución es pareja
en todo el espectro)
_______________________________________________
http://listas.python.org.ar/listinfo/pyar
PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
Argentina - http://www.usla.org.ar
Claudio Freire
2015-09-28 20:46:36 UTC
Permalink
Lo que estoy buscando es hallar alguna forma de distorsión para un test de
loopback (lo que se emite por el microno sale por el auricular).
Lo que por ahora hice fue hallar el pico maximo de cada muestra y buscar la
correspondiente frecuencia para un periodo de tiempo seteable.
La señal que emito es una frecuencia seteable de 440Hz, 990Hz, etc. De esa
forma estoy suponiendo que el promedio de la frecuencia correspondiente a
cada pico maximo puede darme alguna grado de aceptacion en porcentaje.
¿qué significa "hallar una forma de distorsión"?

Hay muchas formas de distorsión y no se inventan, más vale se miden.
_______________________________________________
pyar mailing list ***@python.org.ar
http://listas.python.org.ar/listinfo/pyar

PyAr - Python Argentina - Sitio web: http://www.python.org.ar/

La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar
Esteban Alejandro Chauque
2015-09-28 20:56:26 UTC
Permalink
La idea es que a partir de un tono emitido por el microfono se pueda
detectar en el auricular (loopback) un grado de distorsión suponiendo que
el tono emitido es correcto de 990 hz por ejemplo
Post by Esteban Alejandro Chauque
Lo que estoy buscando es hallar alguna forma de distorsión para un test
de
Post by Esteban Alejandro Chauque
loopback (lo que se emite por el microno sale por el auricular).
Lo que por ahora hice fue hallar el pico maximo de cada muestra y buscar
la
Post by Esteban Alejandro Chauque
correspondiente frecuencia para un periodo de tiempo seteable.
La señal que emito es una frecuencia seteable de 440Hz, 990Hz, etc. De
esa
Post by Esteban Alejandro Chauque
forma estoy suponiendo que el promedio de la frecuencia correspondiente a
cada pico maximo puede darme alguna grado de aceptacion en porcentaje.
¿qué significa "hallar una forma de distorsión"?
Hay muchas formas de distorsión y no se inventan, más vale se miden.
_______________________________________________
http://listas.python.org.ar/listinfo/pyar
PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
Argentina - http://www.usla.org.ar
Claudio Freire
2015-09-28 21:41:30 UTC
Permalink
Post by Esteban Alejandro Chauque
La idea es que a partir de un tono emitido por el microfono se pueda
detectar en el auricular (loopback) un grado de distorsión suponiendo que el
tono emitido es correcto de 990 hz por ejemplo
Probablemente estés buscando algo como el THD+N, o alguna variante del THD:

https://en.wikipedia.org/wiki/Total_harmonic_distortion

Con numpy, implementar el THD+N no debería ser complicado.
_______________________________________________
pyar mailing list ***@python.org.ar
http://listas.python.org.ar/listinfo/pyar

PyAr - Python Argentina - Sitio web: http://www.python.org.ar/

La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar
Claudio Freire
2015-09-28 21:42:24 UTC
Permalink
Post by Claudio Freire
Post by Esteban Alejandro Chauque
La idea es que a partir de un tono emitido por el microfono se pueda
detectar en el auricular (loopback) un grado de distorsión suponiendo que el
tono emitido es correcto de 990 hz por ejemplo
https://en.wikipedia.org/wiki/Total_harmonic_distortion
Con numpy, implementar el THD+N no debería ser complicado.
De hecho, primer resultado en google:

https://gist.github.com/endolith/246092
_______________________________________________
pyar mailing list ***@python.org.ar
http://listas.python.org.ar/listinfo/pyar

PyAr - Python Argentina - Sitio web: http://www.python.org.ar/

La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar
Esteban Alejandro Chauque
2015-09-28 23:24:03 UTC
Permalink
Muchas gracias por la desaznada!!! Estoy leyendo sobre el tema THD+N a ver
como lo implemento.


saludos
Post by Esteban Alejandro Chauque
Post by Esteban Alejandro Chauque
La idea es que a partir de un tono emitido por el microfono se pueda
detectar en el auricular (loopback) un grado de distorsión suponiendo
que el
Post by Esteban Alejandro Chauque
tono emitido es correcto de 990 hz por ejemplo
Probablemente estés buscando algo como el THD+N, o alguna variante del
https://en.wikipedia.org/wiki/Total_harmonic_distortion
Con numpy, implementar el THD+N no debería ser complicado.
https://gist.github.com/endolith/246092
_______________________________________________
http://listas.python.org.ar/listinfo/pyar
PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
Argentina - http://www.usla.org.ar
Octavio A. Bruzzone
2015-09-26 22:27:14 UTC
Permalink
El promedio no es un valor que tenga mucho sentido en el dominio de las
frecuencias. Si haces la media ponderada de la frecuencia por la
intensidad de la fft ... obtendrías una verdadera porquería. Lo que
debes hacer es buscar la frecuencia fundamental (es decir la frecuencia
no-armónica más baja), y calcular su error.

Ojo que la resolución de frecuencia de la fft es dependiente de la
longitud de la serie.

Otra posibilidad es si buscas un análisis de tiempo-frecuencia, usar
wavelets. En python están disponibles en el módulo signal y en otros
más. En ese caso, debes usar la transformada contínua de wavelets.

El Fri, 25 Sep 2015 16:09:09 -0300
Post by Esteban Alejandro Chauque
Buenas tardes, estoy intentando analizar un fragmento de audio.
Basicamente emito un sonido de una frecuencia conocida (440) y grabo
lo que entra por el mic por un periodo de tiempo.
Logro mostrar el grafico en funcion de la frecuencia (fft), pero no
logro calcular la frecuencia media y la verdad que no se como
resolverlo.
Saludos
--
--
Octavio A. Bruzzone
Investigador Adjunto (CONICET).
INTA EEA Bariloche.
_______________________________________________
pyar mailing list ***@python.org.ar
http://listas.python.org.ar/listinfo/pyar

PyAr - Python Argentina - Sitio web: http://www.python.org.ar/

La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de Argentina - http://www.usla.org.ar
Loading...