Un proyecto en el que una inteligencia artificial es capaz de leer una partitura y «tocarla» al piano todo eso usando SUSE Linux Enterprise Server y openSUSE
La empresa SUSE una vez al año, permite a sus ingenieros, que dejen de lado sus obligaciones durante una semana y se dediquen a desarrollar y llevar a cabo un proyecto que tengan en mente.
Es lo que se conoce como Hack Week y en donde en las ediciones que han celebrado, en ocasiones se han desarrollado proyectos que más adelante han tenido entidad propia.
En otros casos los proyectos son retos personales de los ingenieros de SUSE, que quieren explorar otras áreas o unir varias de sus aficiones. Como el caso que veremos a continuación.
Este proyecto del HackWeek de SUSE está desarrollado por Lin Ma un ingeniero que trabaja en Virtualización dentro de SUSE y que en su proyecto ha aunado el espíritu hacker, maker y la música.
Esta es una traducción/adaptación del artículo original escrito en inglés por Chabowski y publicado en el sitio web de SUSE.
Introducción
Lin Ma ha decidido aunar en su proyecto para HackWeek, a la música y»machine learning» basado en SUSE Linux Enterprise Server. Una especie de Internet de las cosas (IoT) basado en productos de SUSE y openSUSE.
El proceso de cómo leer notas en una partitura y cómo tocarlas en un instrumento, puede ser muy complicado y tedioso.
El objetivo de este proyecto, es que «la máquina» pueda «leer» una partitura a partir de una imagen y después automáticamente traducirla y poder tocarla en un instrumento musical físico, en este caso un órgano eléctrico.
Componentes del proyecto
Para llevar a cabo el proyecto se necesitarán los siguientes elementos:
- Un servidor ARM 2280 HUAWEI TaiShan corriendo SUSE Linux Enterprise Server for Arm 15 SP1 y TensorFlow 1.4 (esto será necesario para los pasos 1 y 2)
- Raspberry Pi 3 corriendo openSUSE Tumbleweed for AArch64 7 Python 3 (esto será necesario para el paso 3)
- Un órgano eléctrico con 61 teclas
- Unos solenoides o electroválvulas (model 0730), x 21 (que harán la función de los dedos a la hora de tocar el piano)
- Un chip ULN 2803 driver, x 3
Cada solenoide puede ser activado por un pin GPIO de la Raspberry Pi 3. Sin embargo cada modelo de la solenoide necesita unos 500 miliamperios para poder funcionar. Esto está fuera de las posibilidades de la Raspberry Pi 3, por eso se utilizan los chips ULN 2803 para activar los solenoides.
Pasos a seguir
Estos son los pasos a seguir:
Paso 1: Utilizar la red neuronal para la extracción de características de símbolos musicales de las imágenes de partituras que sirven como entrada.
Paso 2: Utilizar Optical Music Recognition (OMR) para reconocer las notaciones musicales obtenidas de la red neuronal y guardar los resultados en un archivo XML.
Paso 3: Recibir el archivo XML, mediante una red TCP y analizarlo. Y después activar los solenoides adecuados para tocar la partitura al piano.
Limitaciones del proyecto
Es un proyecto de una semana, por lo que no pueden abarcarse y poder tocar todas las notas del piano. Debido a limitaciones de los elementos físicos, el piano solo podrá tocar 3 octavas, y no podrá tocar semitonos (las teclas negras de los pianos)
Tampoco se ha investigado en cómo reducir el ruido que producen los propios solenoides cuando son activados, a la hora de tocar las notas.
Se ha escogido un servidor TaiShan para correr la red neuronal, por ser más rápido en el proceso. Para una misma imagen de partitura, el analizarla en el servidor TaiShan duraba 30 segundos, mientras que hacerlo en una Raspberry Pi 3 duraba 8 minutos.
Resultados
Después de todo, el piano inteligente era capaz de tocar algunas melodías como estas, después de analizar sus respectivas partituras (vídeos con enlaces a YouTube)