2011-03-24 17 views
10

estoy trabajando en un proyecto en el que tengo que extraer el sonido humano a partir de un archivo .wav de audio utilizando Java.extraer el sonido humano a partir de un archivo WAV utilizando Java

El archivo .wav de audio puede tener de 3 a 4 sonidos como perro, gato, música y humano. Tendré que identificar el sonido humano y luego extraer esa parte del archivo de audio .wav.

estoy usando FFT.java y Complex.java.

Ahora me han escrito una clase AudioFileReader que lee el archivo audio.wav desde el disco duro y luego convertir esto en bytes matriz. Luego usé los FFT.java y Complex.java antes mencionados para aplicar FFT.fft (bytesArray), lo que me da una matriz compleja a cambio;

Ahora el problema es cómo extraer el patrón de bytes de sonido humano desde el complejo conjunto devuelto ... ¿alguien sabe cómo podría ser capaz de lograr esto?


Editar: Asumimos un archivo audio.wav muy simple. Por ejemplo, sonido de gato, silencio, sonido humano, silencio, sonido de perro, silencio, etc. Sin mezcla de voces.

+2

¿Tiene una pregunta? –

+0

Estoy luchando con el proyecto para terminar, pero aún no hay éxito. Necesito ayuda para extraer el sonido humano del archivo wav usando java pero atascado hasta ahora. –

+3

Tengo curiosidad si también podrás extraer el sonido de un humano que imita a un gato.¿Y un loro que imita a un humano imitando a un gato? – Curd

Respuesta

1

Esto se puede lograr con AI (y poco menos de eso). Puede investigar las API para el reconocimiento de voz, pero dudo de su capacidad para admitir señales con ruido en el fondo.

POR EJEMPLO

  • ¿Es ese un gato, o alguien que dice 'miau'?
  • ¿Es esa música, o alguien cantando 'do, re, mi ..'?
  • ¿Quién dijo 'Polly quiere a la galleta', el humana o el loro?
+0

Estamos asumiendo un archivo audio.wav muy simple. Por ejemplo, sonido de gato, silencio, sonido humano, silencio, sonido de perro, silencio, etc. Sin mezcla de voces. –

0

Bueno, eso es un problema IA clásica (reconocimiento de la formación/patrón de la máquina) Tener un vistazo a the Wikipedia article

Pero, básicamente, que necesita los datos ya clasificadas que se introduce en el algoritmo de modo que pueda aprender para clasificar nuevos datos. Pero cuidado, el 100% de exactitud es algo que es ilusorio para casi cualquier cosa en este campo, aunque para su problema simple podría ser posible (depende de su definición exacta del problema)

2

Creo que la forma estándar de manejar problemas como este deben convertir las señales de entrada en una representación Cepstrum o Mel-Cepstrum y luego usar los coeficientes para el espacio de características para la entrada en un clasificador. Hay muchos trabajos de investigación que tratan sobre las soluciones a este tipo de problemas basados ​​en este enfoque básico, por ejemplo:

http://www.ics.forth.gr/netlab/data/J17.pdf

Un posible método abreviado que puede intentar sería poner las señales de entrada a través de una baja tasa de bits vocoder como AMBE, luego decodificar y comparar la calidad de la señal original con la señal codificada/decodificada. Estos vocoders están diseñados para comprimir altamente el habla humana con buena calidad a expensas de no poder representar adecuadamente los sonidos que no son de voz.

+0

Estoy de acuerdo. He visto una implementación tal que incluso fue capaz de distinguir entre voz hablada y música. Así que supongo que ese es el camino a seguir. – zerm

Cuestiones relacionadas