Autor/Mantenedor: Ignacio Heredia (CSIC)
Proyecto: Este trabajo es parte del proyecto DEEP Hybrid-DataCloud que ha recibido financiación del programa de investigación e innovación Horizonte 2020 de la Unión Europea en virtud del acuerdo de subvención nº 777435.
Esta es una herramienta plug-and-play para realizar clasificación de audio con Deep Learning. Permite al usuario clasificar sus muestras de audio y también entrenar su propio clasificador para un problema personalizado. Actualmente, el clasificador está previamente entrenado en las 527 clases de alto nivel del conjunto de datos AudioSet.
Puede encontrar más información al respecto en DEEP Marketplace.
Tabla de contenido
Requisitos
Este proyecto ha sido probado en Ubuntu 18.04 con Python 3.6.5. Otros requisitos del paquete se describen en el archivo
requirements.txt
.
- Para admitir una amplia gama de formatos de audio, necesitamos utilizar la biblioteca FFMPEG. Para instalarlo en Linux, ejecute:
apt-get install ffmpeg libavcodec-extra- Es requisito tener instalado Tensorflow>=1.14.0 (ya sea en modo gpu o cpu). Esto no figura en el archivo
requirements.txt
ya que interrumpe la compatibilidad con GPU.
Para comenzar a usar este marco, clone el repositorio y descargue los pesos predeterminados:
git clone https://github.com/deephdc/audio-classification-tf
cd audio-classification-tf
pip install -e .
curl -o ./models/default.tar.gz https://api.cloud.ifca.es:8080/swift/v1/audio-classification-tf/default.tar.gz
cd models && tar -zxvf default.tar.gz && rm default.tar.gz
ahora ejecute DEEPaaS:
deepaas-run --listen-ip 0.0.0.0
y abre http://0.0.0.0:5000/ui y busca los métodos pertenecientes al módulo audioclas
.
También hemos preparado un contenedor Docker listo para usar para ejecutar este módulo. Para ejecutarlo:
docker search deephdc
docker run -ti -p 5000:5000 -p 6006:6006 -p 8888:8888 deephdc/deep-oc-audio-classification-tf
Ahora abra http://0.0.0.0:5000/ui y busque los métodos que pertenecen al módulo audioclas
.
Puede entrenar su propio clasificador de audio con su conjunto de datos personalizado. Para eso tienes que:
Coloque sus imágenes en la carpeta ./data/audios
. Si tiene sus datos en otro lugar, puede usar esa ubicación configurando el parámetro dataset_directory
en los argumentos de entrenamiento. Utilice un formato de audio estándar (como .mp3
o .wav
).
Nota El clasificador funciona con muestras de decenas. Entonces, si un archivo de audio tiene una longitud mayor o menor que 10 segundos, se concatenará en bucle para que dure un múltiplo de 10 segundos. Entonces, un archivo de audio de 22 segundos creará 3 incrustaciones:
*-0.npy
,*-1.npy
y*-2.npy
.
Primero necesita agregar al directorio ./data/dataset_files
los siguientes archivos:
Archivos obligatorios | Archivos opcionales |
---|---|
classes.txt , train.txt | val.txt , test.txt , info.txt |
Los archivos train.txt
, val.txt
y test.txt
asocian un nombre de audio (o ruta relativa) a un número de etiqueta (que debe comenzar en cero ). El classes.txt
traduce esos números de etiquetas en nombres de etiquetas. Finalmente, info.txt
le permite proporcionar información (como la cantidad de archivos de audio en la base de datos) sobre cada clase.
Si está utilizando la opción compute_embeddings=False
, entonces la ruta del archivo debe apuntar a la ruta .npy
de la incrustación en lugar del archivo de audio original y el parámetro dataset_directory
debe apuntar a la carpeta que contiene las incrustaciones.
Puede encontrar ejemplos de estos archivos en ./data/demo-dataset_files
.
Vaya a http://0.0.0.0:5000/ui y busque el método TRAIN
POST. Haga clic en "Pruébelo", cambie los argumentos de entrenamiento que desee y haga clic en "Ejecutar". Se lanzará el entrenamiento y podrás seguir su estado ejecutando el método TRAIN
GET que también te dará un historial de todos los entrenamientos ejecutados anteriormente.
Si el módulo tiene configurado algún tipo de seguimiento de entrenamiento (como Tensorboard), podrás seguirlo en http://0.0.0.0:6006.
Vaya a http://0.0.0.0:5000/ui y busque el método PREDICT
POST. Haga clic en "Pruébelo", cambie los argumentos de prueba que desee y haga clic en "Ejecutar". Puede proporcionar:
data
con una ruta que apunta a un archivo de audio o un archivo comprimido (por ejemplo, zip, tar, ...) que contiene archivos de audio.O
url
con una URL que apunta a un archivo de audio o un archivo comprimido (por ejemplo, zip, tar, ...) que contiene archivos de audio. A continuación se muestra un ejemplo de una URL que puede utilizar con fines de prueba. El código de este proyecto se basa en el repositorio original de IBM e implementa el artículo 'Modelo de atención multinivel para clasificación de audio débilmente supervisada' de Yu et al.
Los principales cambios con respecto al repositorio original son que:
Si considera que este proyecto es útil, considere citar el proyecto DEEP Hybrid DataCloud:
García, Álvaro López, et al. Un marco basado en la nube para cargas de trabajo y aplicaciones de aprendizaje automático. Acceso IEEE 8 (2020): 18681-18692.
junto con cualquiera de las referencias siguientes:
- Jort F. Gemmeke, et al., Conjunto de audio: una ontología y un conjunto de datos etiquetados por humanos para eventos de audio, IEEE ICASSP, 2017.
- Qiuqiang Kong, et al., Clasificación de conjuntos de audio con modelo de atención: una perspectiva probabilística. Preimpresión de arXiv arXiv:1711.00927 (2017).
- Changsong Yu, et al., Modelo de atención multinivel para clasificación de audio débilmente supervisada. Preimpresión de arXiv arXiv:1803.02353 (2018).
- S. Hershey, et al., Arquitecturas CNN para clasificación de audio a gran escala, preimpresión de arXiv arXiv:1609.09430, 2016.