ios - reparar - no me escuchan cuando hablo por mi iphone 7
Detectando ruido a través de un micrófono mientras se reproduce una canción en un iPhone (2)
Solo quieres saber cuánto ruido hay en el entorno y tienes dos señales, la original y la grabada. Entonces tu solución está perfectamente bien. Necesita sincronizar las señales y encontrar algún número, lo que le da similitud. Incluso puede evitar fft y usar la señal original (en una presentación adecuada).
La autocalibración es una buena forma de sincronizar sus señales. Autocorellation-index es un número que le da la similitud.
Por supuesto, si el volumen es más bajo, el ruido es (en relación con la música) más fuerte y tiene una mayor influencia. Como debería poder detectar el volumen, debería poder agregar algunos factores de corrección. Pero dado que este es un problema "natural", creo que cada algoritmo tendrá este problema.
Otra solución sería restar la señal original de la señal grabada y luego debería obtener el ruido como la diferencia de ambas señales. Entonces también tienes el poder del ruido ...
Estoy haciendo una aplicación que debería reproducir una pista de audio simple y avíseme si hay algún ruido en las cercanías mientras se reproduce la pista. Esto se hace haciendo una grabación en vivo desde el micrófono mientras la canción se reproduce en el altavoz del iPhone. Cualquier sonido que no sea parte de la reproducción de música se define como ruido.
¿Cuál sería la forma más sencilla de implementar esta funcionalidad?
Lo he investigado extensamente en línea, pero no he podido encontrar nada que me señale una solución para este problema específico. Aunque puede ser una combinación de diferentes técnicas que leí acerca de eso eventualmente será la solución.
Cosas que ya he implementado
Tocando la canción y grabando audio simultáneamente.
Cosas que he intentado
NOTA: Como estamos invitados a agregar lo que ya hemos intentado, agrego la siguiente parte. Pero de ninguna manera estoy diciendo que esta es la forma correcta de resolver el problema, es solo algo que probé.
Pirateé la aplicación de muestra aurioTouch2: lo que hice fue reproducir la canción una vez y grabar los rápidos valores de transformación de Fourier (a una tasa de muestreo bastante baja para mantener baja la cantidad de datos grabados). Luego, cuando la pista se volvió a tocar, básicamente calcularía (por paso de tiempo) el coeficiente de correlación entre los gráficos de salida que se construyen utilizando los datos fft de reproducción en vivo y los datos fft grabados (por lo tanto, las líneas ''onduladas'' que ves cuando pones el aplicación en modo fft).
Este "tipo de" funciona. El coeficiente de correlación es claramente menor cuando hay exceso de sonido / ruido en la habitación, pero no es muy sensible y también depende del nivel de volumen que se utilizó al grabar los datos de fft. Al final, estoy pensando que este puede no ser el mejor enfoque.
¿Alguien piensa que esto es posible? Si es así, ¿cuál sería el mejor enfoque?
Por favor, pregunte si necesita más aclaraciones.
Al final, decidimos no hacer esto en la aplicación. Obtuve una demostración que funcionaba donde primero hacía una calibración de la canción, recogía un conjunto de las frecuencias más dominantes, hacía lo mismo con el ruido ambiental de la habitación y utilizaba esas frecuencias en el proceso de decisión mientras se reproducía la canción. Funcionó bien, aunque sentí que todavía necesitaba muchos ajustes. Fue lo mejor que pude hacer con mi conocimiento limitado de la programación relacionada con el audio :)