Pregunta

soy nuevo en este campo - pero tengo que realizar una conversión de WAV a MIDI en Java. ¿Hay una manera de saber cuáles son exactamente los pasos involucrados en la conversión de WAV a MIDI? Tengo una idea muy aproximada al igual que en lo que necesita; muestrear el archivo WAV, filtrarla, el uso de FFT para el análisis espectral, extracción de características y luego escribir las características extraídas a MIDI. Pero no puedo encontrar fuentes sólidas o papeles como en la forma de hacer todo eso? ¿Puede alguien dar pistas de cómo y dónde empezar? ¿Hay alguna API de código abierto disponible para este proceso de conversión de WAV a MIDI?

Advance gracias

¿Fue útil?

Solución

Es un proceso más complicado de lo que cabría imaginar.

Este problema de investigación se refiere a menudo como música transcripción : el acto de convertir una representación de bajo nivel de música (por ejemplo, forma de onda) en una representación de nivel superior tal como MIDI o partituras incluso .

La sofisticación de su solución dependerá de la complejidad de los datos de entrada. Toneladas de transcripción trabajos de investigación dirección de la música de piano solo en monofónico o tambores ... porque son fáciles de transcribir. (Relativamente.) Violín es más difícil. La voz es aún más difícil. Violín además de voz, más piano es mucho más difícil. Una sinfonía es casi imposible. Se obtiene la imagen.

Los elementos básicos de la transcripción música implica ninguna de las siguientes áreas superpuestas:

  1. (multi) de paso de estimación
  2. reconocimiento de instrumentos, timbres de modelado
  3. ritmo detección
  4. inicio nota / Desplazamiento de detección
  5. forma / estructura de modelado

Búsqueda de documentos sobre "la transcripción de música" en Google Académico o de las gestiones ismir: http://www.ismir.net . Si usted está más interesado en uno de los subtemas anteriores, puedo señalar que más allá. Buena suerte.

EDIT: Después de haber dicho, hay soluciones existentes que todos podemos encontrar en la web. No dude en probarlos. Pero a medida que lo hace, ellos evaluar con ojo crítico y el oído. ¿Qué tipos de señales de audio podría causar la transcripción falle?

EDIT 2: Ah, sólo está haciendo esto para piano. De acuerdo, esto es factible. la transcripción de música ha avanzado hasta el punto en que puede transcribir el piano monofónico bastante bien. Un concierto de Rachmaninov se siguen planteando problemas.

Nuestras recomendaciones dependen de su objetivo final. Usted estado " necesidad para llevar a cabo ... en Java ". Así que suena como lo que desea es algo para el trabajo, independientemente de la forma en que te lleva allí. En ese caso, estoy de acuerdo 100% con los demás: el uso algo que existe.

Eso es en realidad una pregunta interesante; todas las bibliotecas del MIR que conozco son normalmente C / C ++ / Python / Matlab. Pero no Java. El Echonest tiene una API de Java, pero no creo que lo hace la transcripción a nivel de nota. http://developer.echonest.com . (Edit: hace transcripción a nivel de nota Los datos devueltos incluye tono, timbre, ritmo, Tatum, y más Pero encuentro la polifonía sigue siendo un problema...)

Oh, Marsias está basado en Java. Bueno. Me pareció que era simplemente C ++. http://marsyas.info/ Recomiendo este. Es desarrollado por George Tzanetakis, profesor en el MIR. Se hace un análisis a nivel de la señal y debe ser una buena opción.

Ahora, si esto es para una divertida experiencia de aprendizaje, creo que se puede usar las utilidades de manipulación de sonido en Java para experimentar con la señal de WAV y ver lo que sale.

EDIT: Esta página describe el software MIR mejor que puedo: las herramientas que utilizamos

En Matlab, que puede estar interesado en el MIR Caja de herramientas

Esta es una buena página de conjuntos de datos comunes: MIR Conjuntos de datos

Otros consejos

Este es un gran compromiso por ser nuevos en el campo, a menos que quiere decir que esté familiarizado con el análisis de la señal y la detección de accidentes en general y desea buscar más específicamente en la transcripción automática.

No hay API para WAV a la conversión MIDI. Vamp es un marco para los plugins de extracción de características, pero para hacer la transcripción automática que tendría que utilizar todos la funcionalidad de los plugins existentes, además de implementar la funcionalidad que existe en ninguna de ellas.

navegar a través de las descripciones de los plugins en la página de descarga empeine , cualquier descripción que haces no entiendo son los temas que debe empezar a investigar si quieres hacer esto.

Si no es necesario para automatizar esta tarea (es decir, de un sitio web donde la gente puede subir MP3 y obtener archivos MIDI), entonces usted debería considerar el uso de una herramienta como Melodyne que ya es bastante bueno en ir esto. Como se señaló Steve, esta es una tarea muy difícil de lograr, e incluso los mejores algoritmos y soluciones presentes en el momento no son 100% fiables.

Así que si usted está haciendo el trabajo de estudio y la necesidad de hacer un par de conversiones, es probable que ahorrar un poco de tiempo (y un montón de dolor de cabeza) para utilizar una herramienta ya diseñado para esta tarea.

Dolphin, siento ser brusco, pero se han subestimado por completo el problema. Lo que se quiere lograr - una transcripción sonido de piano completa participación de todos los parámetros que se utilizaron durante la ejecución, necesitaría una enorme cantidad de investigación con personas que han trabajado en el campo durante muchos años. Incluso un grupo de doctores en el procesamiento de señales tendría que invertir una gran cantidad de trabajo para acercarse siquiera a qué se refiere. la transcripción de música ha necesitado décadas de trabajo al trabajo ni a la mitad fiable. Te sugiero que elija un problema diferente, que puede manejar mejor que esto.

Este es un campo que todavía es muy bajo desarrollo, sin embargo, hay algunos algoritmos (experimentales) disponibles.

Puede instalar anotador de sonido y utilizar algunos enchufes empeine.

Por ejemplo:

./sonic-annotator file.wav -d vamp:qm-vamp-plugins:qm-transcription:transcription -w midi

./sonic-annotator file.wav -d vamp:silvet:silvet:notes -w midi

./sonic-annotator file.wav -d vamp:ua-vamp-plugins:mf0ua:mf0ua -w midi
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top