Páginas

jueves, 27 de marzo de 2014

[INVESTIGACIÓN] Reportaje de resultados experimentales

Estas dos semanas se utilizaron para generar el reporte de resultados de los experimentos.

Para las pruebas de rendimiento se generaron tres cuadros.
  • El primer cuadro describe los resultados de velocidad de procesamiento, tomando en cuenta el sistema operativo y la cantidad de procesos que hay corriendo.
  • el segundo cuadro describe la eficiencia algorítmica, que consiste en analizar los resultados de la generación automática de listas con una lista predeterminada, se toman en cuenta criterios como un umbral de reconocimiento y la cantidad de bandas en la frecuencia.
  • el tercer cuadro solo es una prueba de funcionamiento, se corre todo el programa y se miden criterios del sistema operativo como la memoria o porcentaje de cpu utilizado.
Para las pruebas con usuarios se generaron 3 gráficas circulares. Las evaluaciones son: Muy Bueno, Bueno, Regular, Malo y Muy Malo.
  • La primera gráfica describe el grado de aceptación de los usuarios en cuanto a la generación automática de listas contra su propio criterio.
  • La segunda gráfica describe el nivel de aceptación de los usuarios para los efectos de transición entre pistas.
  • La tercera gráfica describe la facilidad con que los usuarios realizaron sus tareas.
Tanto las gráficas como los cuadros están en archivos independientes, la idea es generar un script que corra estas pruebas y modifique los archivos correspondientes para evitar escribir a mano cada uno.

Avance de proyecto

Durante este tiempo se trabajo en el reconocimiento de patrones al grado de encontrar los instantes de tiempo candidatos entre ambas pistas y la cantidad de coincidencias de patrón en ese instante de tiempo.

  • En la captura se muestra en la primera fila el nombre del archivo a comparar.
  • En las filas siguientes se tiene los instantes de tiempo en que se encuentra un patrón.
    • Las filas están ordenadas de mejor a peor candidato a ser un patrón.
    • Al mismo tiempo en cada fila se ordenan los instantes de tiempo del candidato de mejor a peor.
Para seleccionar un candidato, debo de calcular en cada uno de ellos, un patrón con un instante de tiempo lo suficientemente grande para dar buen tiempo de reproducción al archivo actual pero lo suficientemente amplio para dar la mejor calidad a la hora de hacer la transición entre pistas.

Para las siguientes semanas se trabajará en realizar la selección de candidato y con esto tendré la generación automática de listas. Una vez terminado esto, iniciaré con los efectos de transición.

jueves, 13 de marzo de 2014

[INVESTIGACIÓN] Diseño experimental

En esta semana se trabajó con el siguiente capítulo de tesis llamado diseño experimental. Consiste en describir los procesos de evaluación para el proyecto.

Decidí hacer dos tipos de pruebas: pruebas de rendimiento y pruebas con usuarios.

Las pruebas de rendimiento consisten en correr el programa bajo ciertas circunstancias y analizar su comportamiento, son las siguientes:
  • Velocidad de procesamiento: Se hace una prueba de velocidad de procesamiento mientras se reproduce un archivo.
  • Presición algorítmica: Se evalúa que tan acertado es el programa al generar datos.
  • Eficiencia de ejecución: Se evalúan aspectos de rendimiento en cuanto a la plataforma.
La intención es correr estas pruebas en las plataformas distintas plataformas disponibles en distintas circunstancias de software y hardware.

Por otra parte, las pruebas con usuarios solo son encuestas de retroalimentación, son las siguientes:
  • Generación automática de listas de reproducción: El usuario evalúa presición y calidad.
  • Transición y mezclado entre pistas: El usuario evalúa que tan bueno o malo es el efecto de transición y mezclado de pistas.
  • Interfaz gráfica: El usuario evalúa la usabilidad del software.
Avance de proyecto

Durante esta semana se trabajo en el reconocimiento de patrones y se modificaron cosas menores.

Para la detección de patrones utilizo la información obtenida de las pistas y busco coincidencias numéricas. Una vez encontradas todas las coincidencias se procede a comparar rangos de valores para intentar agrupar patrones.

Para hacer una prueba utilicé esta pista:

120 BPM

La pista de audio es muy constante, aunque las intensidades varían un poco el tiempo entre picos es similar, casi 2 picos por segundo dando un tempo de 120 BPM aproximado.

Al correr el programa de detección de patrones éste es el resultado:

Como se puede observar el resultado es una serie de listas con valores. El primer número fuera de la lista representa la posición temporal, por ahora manejo un índice. Los valores de la lista son los graficados anteriormente.

La primera fila contiene todos los valores graficados en orden. La cual es útil para analizar el orden de los patrones.

El resto de filas se organizan por patrones basados en similitudes.

Los siguientes datos describen un patrón con los valores [14070, 120]:

1 [14070, 120]
3 [14070, 120]
5 [14070, 120, 18760, 120]
9 [14070, 120]
11 [14070, 120, 28140, 120, 18760, 120]
17 [14070, 120, 18760, 120]
21 [14070, 120]
23 [14070, 120]
25 [14070, 120]
27 [14070, 120]
29 [14070, 120, 18760, 120]
33 [14070, 120, 18760, 120]
37 [14070, 120]
39 [14070, 120]
41 [14070, 120]
43 [14070, 120, 11260, 120, 18760, 120]
49 [14070, 120, 18760, 120, 28140, 120, 18760, 120, 18760, 120, 18760]

Por otra parte los datos valores describen un patron invertido:

2 [120, 14070]
4 [120, 14070]
6 [120, 18760]
8 [120, 14070]
10 [120, 14070]
12 [120, 28140]
14 [120, 18760]
16 [120, 14070]
18 [120, 18760]
20 [120, 14070]
22 [120, 14070]
24 [120, 14070]
26 [120, 14070]
28 [120, 14070]
30 [120, 18760]
32 [120, 14070]
34 [120, 18760]
36 [120, 14070]
38 [120, 14070]
40 [120, 14070]
42 [120, 14070]
44 [120, 11260]
46 [120, 18760]
48 [120, 14070]
50 [120, 18760]
52 [120, 28140]
54 [120, 18760]
56 [120, 18760]
58 [120, 18760]

El resto de datos también describen patrones con valores variados pero para muchos de esos valores ya se describió un patron que incluye al menos una vez su posición temporal.

Con la posición temporal y los datos obtenidos es posible calcular el inicio y final de una pista, los cuales son útiles para generar una transición entre pistas.

Para las siguientes semanas se trabajará en mejorar el algoritmo y se iniciará con las primeras pruebas en la generación de pistas de reproducción basadas en simples comparaciones de datos y el tiempo de separación entre picos.

jueves, 6 de marzo de 2014

[INVESTIGACIÓN] Implementación de la solución propuesta

Durante esta semana se continuó con la redacción de la solución propuesta.

En el capitulo se tienen 4 secciones:
  • Diseño e implementación: Se habla del diseño de interfaz y del funcionamiento del software.
  • Obtencion de información relevante: Se habla de la información obtenida de las pistas y del analisis que se realiza con esta.
  • Generación de listas de reproducción: Describe los algoritmos utilizados para generar listas de forma automática.
  • Transición inteligente entre pistas: Describe la forma en que se hace la transición entre pistas y como funciona.
Se agregaron figuras temporales que representan ejemplos gráficos de la implementación y diagramas de funcionamiento.

Avance de proyecto

En ésta semana no hubo mucho avance en cuanto a código pues sigo experimentando con métodos que me permitan comparar la información de forma eficiente y buscar una lógica de comparación entre los datos.

Por otra parte ahora se toma en cuenta otro parámetro para la obtención de información. Ahora se toman en cuenta rangos mayores y menores a una variable dada, dependiendo del rango son los datos que se obtienen.

En uno de los sonidos del post anterior este era el resultado de sus datos:

Ahora los resultados son así:

Aparentemente ahora la gráfica muestra cambios con respecto al ritmo más parecidos a los de la pista.

miércoles, 26 de febrero de 2014

[INVESTIGACIÓN] Diseño de la solución propuesta

Durante la semana se trabajó en diseñar la estructura del capítulo de solución propuesta. En un inicio se tenía un capítulo tentativamente exclusivo para la solución propuesta, pero dado a la cantidad de información que se describe, he decidido dividir en dos capítulos, uno donde se muestra la metodología y otro donde se muestra la implementación final.

Para el capítulo de metodología decidí abarcar conceptos básicos como:
  • La mención de las herramientas utilizadas para el proyecto, en este caso introducir el lenguaje de programación utilizado y describir módulos y librerías que utilizaré para lograr el objetivo.
  • Hablar de las fases que habrá en el proyecto: 
    • Fase de procesamiento, la cual es donde se lleva a cabo la extracción de información de las pistas de audio.
    • Fase de clasificación de datos, donde la información procesada es clasificada en relación a las pistas de audio.
Para el capítulo de implementación, llamado "Solución propuesta", es en donde en realidad se describen aspectos de diseño e implementación de software:
  • Ya definidas las fases en el capitulo de metodología, se procede a mencionar su implementación describiendo los algoritmos utilizados.
  • Adicionalmente se agrega una sección donde se describen los datos que se procesan y el porqué se optó en guardarlos en ese formato, además de mencionar la forma en que se realiza la comparación y clasificación de los mismos.
Avance de proyecto

En esta semana se trabajo en la modificación de la interfaz y acoplarla para la lectura de múltiples archivos. Además de una versión inicial de lo que en un futuro será un mezclador inteligente y un generador de listas de reproducción.

Por ahora todo funciona en forma aleatoria, pues la parte de clasificación aún no está del todo desarrollada, sin embargo ya es posible obtener los datos de la pista a ser clasificados.

Para la prueba de esta semana se utilizaron seis archivos de sonido en formato WAV, a continuación se muestran junto con sus datos de procesamiento.







Estos datos de procesamiento son casi constantes a su sonido, con pequeñas diferencias entre reproducciones.

La idea es modelar algún algorítmo que tome los datos actuales de una pista y calcule cual de las pistas restantes es la mejor opción de acuerdo con el ritmo.

Una aproximación de lo que podría suceder con este algoritmo sería algo como lo siguiente:


El objetivo para la siguiente semana es lograr desarrollar algúna rutina que analice los datos de los archivos y logre regresar la mejor opción de pista a reproducir. Con lo que se podría tener un prototipo del generador de listas de reproducción.

jueves, 20 de febrero de 2014

[INVESTIGACIÓN] Resumen de trabajos relacionados relevantes

Para esta semana se realizó un cuadro comparativo de los trabajos relacionados seleccionados la semana pasada y se resumió en pocas palabras como se relacionan con el proyecto de tesis.

Para ello se seleccionó de los trabajos aquellos que pudieran representar una alternativa, no a la aplicación de lo que se investiga sino al área de investigación que se estudia.

Para el cuadro comparativo se tomaron en cuenta 7 criterios:
  • Procesamiento de señales: Indica si realiza alguna clase de manipulación a una señal de audio.
  • Detección rítmica: Indica si detecta alguna forma de rítmo para su funcionamiento.
  • Clasificador de patrones: Indica si es posible clasificar los datos analizados.
  • Procesamiento en tiempo real: Indica si es posible realizar esto mientras se reproduce el contenido.
  • Datos preprocesados: Indica si es necesario leer algún archivo o base de datos para su funcionamiento.
  • Mezcla inteligente de audio: Indica si el proyecto está pensado para generar mezclas de sonido. En este caso esta también es una de las intenciones del proyecto de tesis.
  • Listas de reproducción autogeneradas: Indica si el proyecto está pensado para autogenerar listas en base a algúna circunstancia. Ésta es una de las intenciones del proyecto.

Avance de proyecto

Durante esta semana se siguió trabajando en la detección de tempo pero ahora de forma analítica.

Decidí analizar la información tal y como la obtenía anteriormente con unas pequeñas modificaciones de tiempo para mejorar la presición.

Los datos observados no son el tempo tal cual se defíne, pero igualmente pueden ser funcionales para mis objetivos.

Esta gráficas muestran la cantidad de BPM contra el tiempo de duración de la pista en segundos.


Como se puede observar, estas gráficas muestran valores algo constantes, se puede ver a simple vista que los valores rondan los 450, 600 o cerca de los 1000 BPM, siendo los de 600 predominantes.

Las pistas utilizadas fueron "Queen of Apology" y "Mine for Life" del grupo The Sounds, canciones que son del género New Wave y comparten ciertas cualidades en los datos que se analizaron.

La siguiente gráfica es de los datos obtenidos al analizar una versión Dubstep de la canción "Rock You"

Se puede observar que presenta valores aproximados a los 400 y 900 BPM, algo distintos a los valores de las gráficas anteriores.

Por ahora todo apunta a que es hora de proceder a la segunda etapa que consiste en tratar de comparar pistas de sonido y tratar de acomodarlas en un orden basado en estos datos. Igualmente continuaré mejorando la presición con que se toman.

jueves, 13 de febrero de 2014

[INVESTIGACIÓN] Búsqueda y clasificación de trabajos relacionados


En esta semana se realizó una búsqueda de artículos y trabajos relacionados al tema de la tesis.

Los trabajos encontrados son descritos en la siguente tabla junto a la base de datos a la que pertenecen y las palabras clave utilizadas para encontrarlos.

TituloBase de datosPalabras clave
Estimating tempo, swing and beat locations in audio recordingsIEEE Xplore Digital Librarymusic bpm detection
Large-scale cover song recognition using hashed chroma landmarksIEEE Xplore Digital Librarymusic player pattern
Towards a Class-Based Representation of Perceptual Tempo for Music RetrievalIEEE Xplore Digital Librarytempo
Music tempo estimation and beat tracking by applying source separation and metrical relationsIEEE Xplore Digital Librarytempo
Real-time perceptual tempo estimation for music signal based on envelope autocorrelationIEEE Xplore Digital Librarytempo
A system for the automatic segmentation and classification of chord sequencesACM Digital Librarypattern recognition sounds
Automatic and instant ring tone generation based on music structure analysisACM Digital Librarypattern recognition sounds
Tempo induction algorithm in MP3 compressed domainACM Digital Librarybpm detection music
A tempo-sensitive music search engine with multimodal inputsACM Digital Librarybpm detection music
SVR-based music mood classification and context-based music recommendationACM Digital Librarybpm detection music
Using quadratic programming to estimate feature relevance in structural analyses of musicACM Digital Librarybpm detection music
Rhythm pattern representations for tempo detection in musicACM Digital Librarybpm detection music
Toward segmentation of popular musicACM Digital Libraryrhythm detection audio
Automatic Recognition and Matching of Tempo and Phase of Pieces of Music, and an Interactive Music PlayerGoogle Patentsmusic bpm recognition
System and method of bpm determinationGoogle Patentsmusic bpm

Avance de proyecto

Durante etstas semanas he estado analizando las frecuencias provenientes de un archivo wav. Esta vez decidí utilizar la parte real de la transformada rápida de Fourier pues es la que denota una mayor intensidad visualmente en la gráfica a la hora de detectar el ritmo.

He decidido dividir la gráfica generada en segmentos de 16 bloques que facilitan un poco la tarea visual de ver una relación entre el ritmo que percibo y la gráfica.


Se agregó el tiempo restante de la pista solo para motivos informativos.

Para ayudar un poco más se agregó una escala temporal para cada bloque que consiste en los valores de cada uno imprimidos en la terminal con un color que determina su intensidad siendo azul de baja intensidad y rojo de alta intensidad, pasando por verde y amarillo.

También se trató de analizar (sin mucho éxito) el ritmo medido en BPMs (beats per minute) o pulsos por minuto mediante el procesamiento de las frecuencias. El ritmo obtenido se puede ver en la esquina inferior derecha del video. En un principio se obtenían los pulsos en un segundo y se multiplicaban por 60 para dar un aproximado. Despues lo que se trató de hacer fue calcular el tiempo entre pulsos y calcular directamente una aproximación. De ambas formas el cálculo aveces es bueno pero la mayor parte de las veces falla.

Las metas son obtener un ritmo aproximado de mayor presición, en base a eso obtener una predicción de pulsos para facilitar el análisis y finalmente comparar ritmos entre canciones y analizar similitudes.

jueves, 6 de febrero de 2014

[INVESTIGACIÓN] Identificación y estructuración de antecedentes

Durante esta semana se encargó buscar antecedentes con respecto a nuestro tema de tesis.

Para ello me puse a investigar sobre cómo son y cual es la forma en que se redactan los antecedentes.

En pocas palabras, los antecedentes se forman con la literatura existente y trabajos relacionados que hablan de conceptos clave en mi tema. Los cuales se remarcan para dar énfasis a lo que se quiere poner atención.

En mi caso, mi tema habla sobre manipulación de sonido y reconocimiento de patrones en señales por lo que he decidido dividir mis antecedentes en dos subtemas principales:
  • Procesamiento de señales: Explico lo básico sobre la forma en que se codifica una señal y agrego subtemas donde explico el significado de algunos conceptos clave relevantes.
  • Reconocimiento de patrones: Explico en forma resumida que es y en que consiste el reconocimiento de patrones y algunos métodos.

A demás de un subtema llamado Conceptos generales, donde explico detalles muy básicos sobre los archivos de sonido y su funcionamiento.

Al principio del tema agregué una breve descripción a modo de introducción hablando sobre la forma en que el humano percibe las ondas de sonido.

Con esos conceptos se pretende abarcar lo más importante que se verá a lo largo del tema.

Avance de proyecto

En esta semana realicé cambios al programa, esta vez ademas de analizar las ondas de sonido tambien analizo frecuencia contra poder.

El programa tiene cuatro gráficas, la primera es la misma de la vez pasada, en las otras tres se analiza la frecuencia contra el poder mediante el uso de la transformada rápida de Fourier, un algoritmo muy utilizado en el tratamiento digital de señales, proporcionado por la librería numpy.

En la segunda gráfica se analiza la parte real de la transformada, en la tercera se analiza la parte imaginaria y en la cuarta es la suma de ambas.

A continuación se muestra un video del programa corriendo: