He estado trabajando en una aplicación de Android que toma la entrada del micrófono cuando el usuario lo toca. Estoy usando un análisis de sonido basado en FFT y convirtiendo los valores en frecuencia usando 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 por aquí.
EDITAR: Ahora, realmente no tuve suficiente tiempo para investigar sobre las soluciones proporcionadas. Además, creo que tendré que tomar las fórmulas y crear mis propias clases en JAVA y 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 de mi aplicación es:
Cumpleaños de Appy en Play Store
Me gustaría que los usuarios de Android lo prueben y también me den su opinión.
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 lo contrario: detectar sonidos de soplo de aire, rechazando todos los demás sonidos.
Primero, su método de cruce por cero no será muy útil para esto. El soplado de aire está cerca del ruido rosa en forma de señal, con algo de "tinte" en el espectro según la posición del ventilador, la posición del micrófono, la fabricación del teléfono, etc.
Debido a que dice que ya tiene FFT, ejecutaría cuadros repetidos de 50 ms aproximadamente y buscaría la firma de soplar en el micrófono. Probablemente será una distribución de espectro muy amplio sin picos agudos. Además, tendrá una duración superior a un solo fotograma.
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 similar al ruido rosa. Tenga en cuenta que la salida de la FFT no mantendrá los intervalos de frecuencia en orden creciente, sino en el orden de "mariposa", y cualquier otro valor de datos fuera de la FFT es fase, en lugar de amplitud, y por lo tanto no es interesante para este análisis.
Cuando tenga un sonido de "soplo" y un sonido de "fondo", tendrá un "piso de ruido" del sonido de soplo y picos individuales de los otros sonidos. Debe eliminar los picos y detectar el sonido de golpe en función de cualquier perfil que pueda "subyacer" a su espectro y aún así ajustar el sonido de golpe. Hay varias funciones de ajuste/regresión de curvas que puede usar aquí.
Al final, creo que aún tendrás problemas con este enfoque, ya que diferentes teléfonos tienen diferentes características de sonido. Es posible que deba "entrenar" la aplicación en el teléfono particular que el usuario está usando para obtener mejores resultados.
Esto está más en la línea de un buen consejo, pero hay algunos consejos aquí, así que tenga paciencia.
Voy a atacar esto desde el punto de vista de un vocalista (que supuestamente lo soy). Las frases que comienzan con P, B y T (por ejemplo, siendo P la 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.
Pon tu mano frente a tu boca y di 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 ni las voces reales; simplemente detienen el chorro de aire que golpea el diafragma del micrófono y convierte en una tontería lo que está tratando de grabar.
Otros micrófonos los tienen incrustados en la espuma circular negra en la que la gente canta. No son tan buenos pero funcionan bien para presentaciones en vivo.
Entonces, he establecido que el habla normal en un micrófono puede contener ráfagas de aire y esto hace que sea más complicado 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 su 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 definitivamente habrá un contenido de baja frecuencia (por debajo de 100 Hz) cuando alguien toque un micrófono y recomendaría 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. Registra algunos "golpes" y analiza los resultados. Si puede encontrar algo que reconozca los POP, entonces estoy interesado en lo que encuentre porque no hay filtros de hardware o software que yo sepa que se acerquen al filtro pop mecánico.
Probé algunos e incluso traté de modificar algunos de los filtros para eliminar los pops. Al final, volví a grabar o entré con un cuchillo en el archivo de onda y descuarticé las secciones que estaban saltando porque visualmente (en el archivo de onda) puedes verlas tan claras como el día.
Jim Dearden
Matt_9.0
Jim Dearden
Anindo Ghosh
Matt_9.0
scott seidman
Juan U.