¿Qué es una huella digital acústica?


Gracias al procesamiento de sonidos y el análisis de audio actualmente podemos contar con aplicaciones en nuestros dispositivos móviles que nos indican el título de una canción, el nombre del artista y hasta la letra de la canción. Algunas de las aplicaciones que pueden hacer tales funciones son SoundHound y Shazam.

Viendo las grandes posibilidades que tenemos actualmente los informáticos, me he dado a la tarea de investigar un poco en cómo trabajan dichas aplicaciones para poder replicar dicha funcionalidad pero ahora aplicándola a otras cosas que no sea la música que tenemos en la computadora. Primeramente veamos a qué le llamamos huella digital ( fingerprint ) y no hay que confundir a dicho término con la imagen visible que deja un dedo sobre una superficie ( huella dactilar ) ya que la huella digital es un mecanismo que permite identificar a un individuo.

De lo anterior podríamos decir que una huella digital acústica es es un pequeño resumen de un archivo de audio, por lo tanto una función f de la huella digital debe coincidir con un archivo de audio x, esto consiste en ir de un gran número de bits a una huella digital de sólo un número limitado de bits.

Actualmente en la UNSIJ estamos trabando en implementar algún algoritmo para crear hullas digitales acústicas de audio para poder almacenarlas en una base de datos, para después poder buscar coincidencias de audios similares.

Existen diversos métodos o técnicas para la identificación de contenido basada en una única y compacta firma ( hash ) derivada de los aspectos relevantes de una grabación de audio. Una función hash es una función que mapea un dato ( posiblemente grande y de tamaño arbitrario ) de un conjunto U a un dato pequeño, usualmente un número entero comprendido entre 0 y M − 1, el cual puede utilizarse como índice en un arreglo, por ejemplo. Al dato a mapear suele llamársele clave, mensaje o cualquier otro nombre dependiendo de la aplicación, mientras que al dato mapeado se le puede llamar valor hash, código hash, o simplemente hash.

hash : U −→ {0, 1, 2, 3, ..., M − 1}

Puesto que las funciones hash pueden mapear elementos de un conjunto más grande a uno más pequeño, es posible que dos o más claves sean mapeadas al mismo valor hash. En este caso se habla de una colisión. Una función hash optima sería aquella que no genere colisiones o que la probabilidad de éstas sea muy baja.

Más adelante intentaremos poner más información al respecto, pero por lo pronto podría servir que se visiten las siguientes ligas:


Por último, me gustaría agradecer a todos los que han visitado Cosmos y Caos haciendo posible las casi 30,000 visitas desde que inició el 16 de Marzo de 2011 ya que eso motiva a que siga publicando la información que podría ser de utilidad para todos ustedes.

Si quieres obtener más información sobre el trabajo de huellas digitales acústicas que estamos haciendo pues no dudes en leer el documento completo.

Instalando Oracle SQL Developer en Ubuntu 12.10

Si no tienes otra opción que trabajar con SQL Developer de Oracle pues te comento que se puede instalar en Ubuntu sin problemas, claro que el proceso de instalación no es automática con ejecutar un archivo que se descarga de Internet pero no es un proceso complicado, iniciemos:

Primeramente tenemos que dirigirnos a la página de descarga y aceptar los términos y condiciones de uso para después seleccionar la descarga que está hasta abajo de la lista ( Other Platforms ).



Tenemos que seleccionar esa opción debido a que Ubuntu trabaja con paquetes .deb que son originarios de la distribución Debian y como Ubuntu es una distribución basada en Debian pues utiliza ese formato de paquetes.

Para poder descargar el archivo sqldeveloper-3.2.20.09.87-no-jre.zip tenemos que tener una cuenta de Oracle Web así que prepárate para rellenar un formulario con tu nombre, correo, puesto, dirección de empresa etc, etc...

Una vez que tengamos el archivo .zip en alguna carpeta donde tengamos los permiso adecuados, debemos proceder a descomprimir el archivo y automáticamente quedarán dentro de un directorio llamado sqldeveloper. Posteriormente debemos ingresar a la carpeta donde se guardaron los archivos y seleccionar el archivo sqldeveloper.sh y con el botón derecho del ratón seleccionar la opción propiedades, con lo que saldrá la ventana que se muestra a continuación y lo que debemos hacer es seleccionar la pestaña llamada Permisos y dar click sobre la opción Permitir ejecutar el archivo como un programa.


Lo anterior es como escribir en una ventana de la terminal el comando:

sudo chmod +x sqldeveloper.sh

Acto seguido debemos ejecutar en la terminal el comando (claro que todos estos comandos debemos ejecutarlos dentro del directorio donde descomprimimos los archivos):

./sqldeveloper.sh


Recuerda que para poder ejecutar SQL Developer debemos tener instalada como mínimo la versión JDK 1.6.0_04 ya que si tenemos instalada la versión 1.7 o posterior podemos obtener el siguiente mensaje:


Yo pasé por alto el mensaje y si pude ejecutar SQL Developer pero aún me faltan hacer más pruebas para ver si no se tienen problemas en el trabajo diario.


Por último, se que a muchos no les gusta la idea de ejecutar el programa desde la terminal entrando hasta el directorio de trabajo y cosas de esas por lo que podríamos crear un lanzador de la aplicación y para ello tenemos que teclear en el Dash ( ALT + F2 ) de Ubuntu la palabra Menú principal y ejecutar el programa, con lo que nos aparecerá la siguiente ventana:


Debemos dar click sobre la opción Elemento nuevo para que podamos crear un lanzador de la aplicación y debemos rellenar los datos como aparece en la imagen anterior.

Espero que sea de ayuda :)

Error al compilar en Android Studio 4.0: CIRCULAR REFERENCE:com.android.tools.r8.a: Invoke-customs are only supported starting with Android O

Resulta que estuviste construyendo tu APP desde Android Studio 4.0 y no te marcó ningún tipo de error de codificación pero al querer compila...