Identificando pajaritos con Python

Angie K. Reyes

Mayo 2018

AGENDA

Introducción

- ¿Quién soy?

- Temas de interes

Antecedentes

- LifeClef Challenge

- Motivación

Contenido

- ¿Cómo identificar especies de aves usando Python?

Ingeniera de sistemas y computación

25 años de edad

Chica TIC 2016

Estudiante del doctorado en Ciencia Aplicada - UAN

Desarrollador Back-End

Temáticas

Por qué Python?

"Desarrolle una pasión por el aprendizaje.

Si lo hace, usted nunca dejará de crecer."

Anthony J.D' Angelo.

BACKGROUND

Motivación

- Se necesitan Ornitologos expertos

- Los pajaros tienen acentos distintos dependientes de la región

- Indentificar la migración de audios

- Pajaros no identificados o en peligro de extinción

- Colombia es el segundo país con mayor biodiversidad

- En 2013 Colombia, la cantidad de especies de aves ascendio a 1.903

Life Cleft Challenge

El objetivo de la tarea es identificar todas las especies de aves a partir de un conjunto de audios.

Acerca del aprendizaje de máquina

Support Vector Machine

Clustering

¿Cómo identificar especies de aves usando Python?

Dataset

Xeno Canto (https://www.xeno-canto.org)

34.496 grabaciones de audio

1.500 tipos de especies

---------------------------------------------------------------------

7.860 grabaciones de audio Colombianas

789 tipos de especies

---------------------------------------------------------------------

3.440 grabaciones de audio

100 tipos de especies

Paso 1: Procesamiento de datos

Paso 2: Procesamiento de señal

Paso 3: Clasificación

Ahora sí .... lo Divertido!!!

(El Código)

In [1]:
import os

import json

import speechpy

import numpy as np

import IPython.display as ipd

import scipy.io.wavfile as wav

import xml.etree.ElementTree as ET

from urllib.request import urlopen

Ejemplo de archivo XML

In [2]:
cwd = os.getcwd()

xml_path = "LIFECLEF2015_BIRDAMAZON_XC_WAV_RN15568.xml"
xml_dict = {}
tree = ET.parse(xml_path)
root = tree.getroot()    
for child in root:
    xml_dict[child.tag] = root.find(child.tag).text
In [3]:
for key in xml_dict:
    print(key, ":", xml_dict[key])
MediaId : 15568
FileName : LIFECLEF2015_BIRDAMAZON_XC_WAV_RN15568.wav
ClassId : ssmptq
Date : 2000-06-01
Time : ?
Locality : Humedal de Tibanica, Bosa, Bogotá D.C.
Latitude : 4.6030444444
Longitude : -74.2044555556
Elevation : 2546
Author : Paula Caycedo Rosales (Colección de Sonidos Ambientales - Instituto Humboldt)
AuthorID : XMFDPACYJN
Content : song
Comments : BSA 7557To obtain a wav file of the original recording, please contact [email protected]:no
Quality : 1
Year : BirdCLEF2015
BackgroundSpecies : None
Order : Passeriformes
Family : Troglodytidae
Genus : Cistothorus
Species : apolinari
Sub-species : apolinari
VernacularNames : Apolinar's Wren

Ejemplo de archivo de Audio

In [4]:
audio_path = "LIFECLEF2015_BIRDAMAZON_XC_WAV_RN15568.wav"

ipd.Audio(audio_path)
Out[4]: