¿Hay alguna forma de diferenciar el sonido de soplar aire del sonido normal a través del micrófono del teléfono?

4

He estado trabajando en una aplicación de Android que recibe información del micrófono cuando el usuario la utiliza. Estoy utilizando el análisis de sonido basado en FFT y convirtiendo los valores en frecuencia utilizando un método de cruce por cero.

Todavía estoy insatisfecho con los resultados. Lo que quiero es que solo detecte el "soplo de aire" y genere un valor único, de modo que pueda ignorar todos los demás sonidos. He estado buscando mucho lo mismo en Google pero no pude obtener ninguna respuesta clara. Espero encontrar alguna solución aquí.

EDITAR: Ahora, realmente no tuve suficiente tiempo para investigar sobre las soluciones provistas. Además, creo que tendré que tomar las fórmulas y crear mis propias clases en JAVA y va a llevar tiempo. Pero me gustaría compartir el enlace de la aplicación que publiqué. No es el más eficiente como mencioné en mi pregunta pero funciona. El enlace para mi aplicación es:

Appy Birthday en Play Store

Me gustaría que los usuarios de Android lo intenten y también me envíen comentarios.

    
pregunta Matt_9.0

2 respuestas

2

La mayoría de los comentarios se centran en el problema más común de eliminar / ignorar el ruido para poder extraer el otro sonido. Desea hacer la otra cosa: detectar sonidos de aire, rechazar todos los demás sonidos.

Primero, su método de cruce por cero no será muy útil para esto. El soplo de aire está cerca del ruido rosa en la forma de la señal, con un cierto "tinte" al espectro según la posición del soplador, la posición del micrófono, la fabricación del teléfono, etc.

Ya que dices que ya tienes FFT, ejecutaría repetidos fotogramas de 50 ms o menos, y buscaría la firma de soplar en el micrófono. Probablemente será una distribución de espectro muy amplia sin picos afilados. Además, tendrá una duración mayor que un solo cuadro.

Otras señales a menudo tendrán picos más distintos dentro del espectro. Por lo tanto, podría calcular qué tan bien se compara el espectro que obtiene con una distribución amplia, parecida al ruido rosa. Tenga en cuenta que la salida de la FFT no mantendrá los intervalos de frecuencia en orden creciente, sino el orden "mariposa" y cualquier otro valor de datos fuera de la FFT es la fase, en lugar de la amplitud, y por lo tanto no es interesante para este análisis.

Cuando recibas un sonido de "golpe" y un sonido de "fondo", tendrás un "ruido de fondo" del sonido de golpe y picos individuales de los otros sonidos. Debe eliminar los picos y detectar el sonido del golpe según el perfil que pueda "subyacer" en su espectro y aun así ajustar el sonido del golpe. Hay varias funciones de ajuste / regresión de curvas que puede utilizar aquí.

Al final, creo que todavía tendrás problemas con este enfoque, ya que los diferentes teléfonos tienen diferentes características de sonido. Es posible que tenga que "entrenar" la aplicación en el teléfono particular que el usuario está usando para obtener los mejores resultados.

    
respondido por el Jon Watte
1

Esto está más en la línea de un buen consejo, pero hay algunos consejos aquí, así que ten paciencia.

Voy a atacar esto desde el punto de vista de un vocalista (que supuestamente soy). Las frases que comienzan con P, B y T (por ejemplo, siendo P lo peor) envían una ráfaga de aire desde la boca al micrófono, que es similar a alguien que sopla durante un corto período de tiempo.

Coloque su mano frente a su boca y diga POP. Deberías sentir lo que quiero decir.

¿Por qué estoy diciendo esto? Un requisito estándar para un micrófono de estudio es un filtro POP y esta es una gasa delgada estirada en un marco que evita en gran medida que los estallidos golpeen el micrófono. No atenúan el habla o las voces reales; simplemente detienen el chorro de aire que golpea el diafragma del micrófono y no muestra lo que intentas grabar.

Otros micrófonos los tienen incrustados en la cosa de espuma negra circular que la gente canta. No son tan buenos, pero funcionan bien para actuaciones en vivo.

Por lo tanto, he establecido que el habla normal en un micrófono puede contener ráfagas de aire y esto hace que sea más difícil para ti diseñar algo que pueda diferenciar el habla normal y alguien que sopla.

Habrá un filtro pop en el micrófono de un teléfono Android y esto hará que tu aplicación sea más difícil. Se verá como una pequeña pieza circular de material negro que cubre el micrófono electret.

Lo que puedo decir es que habrá un contenido definido de baja frecuencia (por debajo de 100Hz) cuando alguien toque un micrófono y recomiendo usar su PC, una tarjeta de sonido y un programa que pueda abrir y manipular archivos wav. Yo uso Wavelab pero hay algunos programas gratuitos sobre. Graba algunos "golpes" y analiza los resultados. Si puede encontrar algo que reconozca los POP, entonces me interesa lo que encuentre porque no hay filtros de hardware o software que yo sepa que se acerquen al filtro mecánico.

He intentado algunos e incluso he intentado modificar algunos de los filtros para eliminar los pops. Al final, volví a grabar o ingresé con un cuchillo al archivo de wave y maté las secciones que aparecían porque visualmente (en el archivo de wave) puedes verlas tan claras como el día.

    
respondido por el Andy aka

Lea otras preguntas en las etiquetas