TimeSide: Framework de traitement audio évolutif et serveur écrit en python
Timeside est un cadre Python permettant une analyse audio, imagerie, transcodage, streaming et étiquetage de bas et de haut niveau. Son API de haut niveau est conçue pour permettre un traitement complexe sur de très grands ensembles de données de tous les actifs audio ou vidéo avec une architecture plug-in et un backend évolutif sécurisé.
Introduction
À mesure que le nombre d'applications audio en ligne et d'ensembles de données augmente, il devient crucial pour les chercheurs et les ingénieurs de pouvoir prototyper et tester leurs propres algorithmes aussi rapidement que possible sur diverses plates-formes et ucases telles que la musique informatique et les services de streaming. De l'autre côté, les fournisseurs de contenu et les producteurs doivent améliorer les expériences des utilisateurs sur leurs plateformes avec plus de métadonnées basées sur l'histoire culturelle mais également les analyses de fonctionnalités audio. La croissance de ces métadonnées de manière synchrone avec la musique publiée sur Internet implique que les systèmes d'analyse et de stockage peuvent être facilement mis à jour, à l'échelle et à déployer.
Timeside a été développé en ce sens pour proposer un service de traitement audio en ligne. Il fournit:
- Un module de base pour Python pour fonctionner à partir d'un shell ou de tout autre programme basé sur Python
- Un serveur Web pour le Web avec une API RESTful construite sur le module de base afin que les développeurs Web puissent ensuite intégrer facilement le service de traitement à distance dans leurs propres applications.
- Un SDK pour JavaScript et basé sur OpenAPI pour développer facilement une application tierce consommant l'API du serveur.
Cas d'utilisation
- Traitement audio asynchrone (filtrage, analyse des fonctionnalités, apprentissage automatique, etc.)
- Provisionnement, traitement et accéder à l'échelle et à l'accès
- Prototypage du plugin audio
- Visualisation audio
- Transcodage et streaming à la demande sur le Web
- Lecteur audio commun amélioré
- Segmentation automatique et étiquetage manuel synchronisé avec des événements audio
Caractéristiques
- Faites un traitement audio asynchrone et rapide avec Python,
- Décoder les cadres audio de tout format de média audio ou vidéo en tableaux Numpy,
- Analyser le contenu audio avec certaines bibliothèques d'extraction de fonctionnalités audio à la pointe de la technologie comme Aubio, Yaafe et Vamp ainsi que certains processeurs Python purs
- Visualisez les sons avec diverses formes d'onde de fantaisie, spectrogrammes et autres graphiques sympas,
- Transcode les données audio dans divers formats multimédias et les diffuser via des applications Web,
- Sérialiser les données d'analyse des fonctionnalités via divers formats portables,
- Fournir des sources audio à partir de plaques comme YouTube ou Deezer
- Fournir une analyse et transcoder sur des pistes fournies ou téléchargées sur le Web via une API REST
- Recherche et interagir à la demande via un joueur extensible HTML5 de haut niveau intelligent,
- Index , TAG et annoter les archives audio avec des métadonnées sémantiques (voir téléméta qui incorporent Timeside).
- Déployez et échec de votre propre moteur de traitement audio via toute infrastructure
Financement et soutien
Pour financer le projet et poursuivre notre processus de développement rapide, nous avons besoin de votre support explicite. Donc, si vous utilisez Timeside dans la production ou même dans une configuration de développement ou expérimental, veuillez nous en informer par:
Merci pour votre aide et votre soutien!
Nouvelles
1.1
- Cœur:
- Utilisez le décodeur Aubio basé sur Libav par défaut (convertisseur audio audio le plus rapide sur la planète!)
- Ajouter un analyseur basé sur VAMP et quelques plugins comme Vampflatness, Vampcrest, VampTempo, Vamptuning, VampspectralCentroid, Vampspectralkurtosis et Vampspectral
- Serveur:
- Corrigez de nombreux problèmes de traitement asynchrones: effectuez maintenant toutes les tâches de prétraitement, de traitement et de post-traitement par le biais du travailleur, y compris la récupération du flux source à partir de YouTube
- Ajouter un moniteur de processus basé sur WebSocket
- La forme d'onde traitée automatiquement sur item.save ()
- Rendre uuid vraiment unique
- Réorganiser les modèles
- Améliorer les tests unitaires
1.0
- Refactorisation du serveur:
- Le processus audio s'exécute sur les éléments (modèle de la piste API REST)
- Plusieurs outils, vues, modèles et sérialiseurs
- Schéma de l'API REST sur les spécifications OpenAPI 3 et la génération automatique Redoc
- Déplacer le noyau et le serveur de Python 2.7 à 3.7
- Mettre à niveau Django à 2.2, Django Rest Framework à 3.11, céleri à 4.4
- Ajouter un décodeur basé sur l'Aubio
- Ajouter le temps d'exécution du versioning et du processus serveur des processeurs de serveur et du serveur
- Reprètez toutes les dépendances sur les exigences PIP supprimant l'utilisation de conda
- Ajouter une classe de fournisseur comme composant API de base et comme modèle API REST
- Ajouter des plugins du fournisseur Deezer-Preview, Deezer-Complete et YouTube
- Améliorer les tests d'unité serveur
- Ajouter une authentification JWT sur l'API REST
- Divers corrections de bogues
- Ajouter la journalisation du noyau, du serveur et des travailleurs
0.9
- Améliorer toutes les dépendances Python
- Ajouter Vamp, Essentia, Yaafe, Librosa, Pytorch, Tensorflow Libs and Wrappers
- Ajoutez quelques plugins d'analyse (Dissonance Essentia, Vamp Constant Q, Vamp Tempo, Vamp General Wrapper, Yaafe General Wrapper)
- Ajouter la gestion des paramètres du processeur
- Ajouter l'héritage du processeur
- Améliorer le lecteur HTML5 avec un streaming de données intelligent
- Améliorer l'API REST et divers sériaux
- Améliorer les tests unitaires
- Divers corrections de bogues
0.8
- Ajoutez une prise en charge de Docker pour l'installation instantanée. Cela permet d'exécuter Timeside maintenant sur n'importe quelle plate-forme OS!
- Ajoutez la prise en charge du cahier Jupyter pour un prototypage facile, l'expérimentation et le partage (voir les exemples du DOC).
- Ajoutez un serveur Web expérimental et une API REST basée sur Django REST Framework, Redis et Celeri. Cela fournit désormais un vrai serveur de traitement audio Web avec des capacités de mise à l'échelle élevées grâce à Docker (clustering) et au céleri (multiprocessement).
- Commencez le développement d'une nouvelle interface de joueur grâce à Angular et WavesJS.
- Énorme nettoyage des fichiers JS. Veuillez maintenant utiliser Bower pour obtenir toutes les dépendances JS comme indiqué dans les paramètres.
- Ajoutez l'exportation de métadonnées vers les fichiers d'annotation Elan.
- Corriger et améliorer certaines structures de données dans les conteneurs de résultats de l'analyseur.
- Beaucoup de divers produits de bug.
0.7.1
- Correction de la version Django à 1.6.10 (Sync avec Telemeta 1.5)
0.7
- Refactoring de code:
- Créez un nouveau module Timeside.plugins et déplacez-y des processeurs: Timeside.plugins.decoder, Analyzer, Timeside.plugins.encoder, Timeside.plugins.fx
- AVERTISSEMENT: Pour gérer correctement la structure des packages d'espace de noms, le module principal Timeside est maintenant TimeSide.
- Timeside.plugins est maintenant un package d'espace de noms permettant aux plugins externes d'être automatiquement branchés sur TimeSide (voir par exemple TimesIde-Diadems). Cela fait maintenant de Timeside un véritable hôte de plugin, ouais!
- Un plugin factice à Timeside sera bientôt fourni pour un démarrage facile de développement.
- Déplacez tous les analyseurs développés par les partenaires du projet Diadems vers un nouveau référentiel: Timeside-Diadems
- De nombreux correctifs pour un meilleur traitement par Travis-Ci
- Ajoutez un fichier DOX pour tester le bâtiment Docker en continu sur diverses distributions
Pour les nouvelles plus anciennes, veuillez visiter: https://github.com/ircam-wam/timeside/blob/master/news.rst
Documentation
- Documentation complète: https://timeside.ircam.fr/docs/
- API REST SERVER: https://timeside.ircam.fr/api/docs/
- Diapositives: https://ircam-wam.github.io/timeside-slides/#1
- Tutoriels de base: https://timeside.ircam.fr/docs/tutorials/
- Quelques cahiers: https://github.com/ircam-wam/timeside/tree/master/docs/ipynb
- Quelques cahiers plus anciens: http://mybinder.org/repo/thomasfillon/timeside-demos
- Publications:
- https://github.com/parisson/telemeta-doc
- https://github.com/ircam-wam/timeside-papers
- Joueur UI V2: https://github.com/ircam-wam/timeside-player
- Guide du joueur UI V1: https://github.com/ircam-wam/timeside/wiki/ui-guide
- Joueur UI V1 Exemple: http://archives.crem-cnrs.fr/archives/items/cnrsmh_e_2004_017_001_01/
Installer
Grâce à Docker, Timeside est désormais entièrement disponible en tant que composition Docker prête à travailler. La composition basée sur Docker regroupe certaines applications puissantes et les frameworks modernes prêts à l'emploi comme: Python, Numpy, Jupyter, Gstreamer, Django, Celier, Postgresql, Redis, Uwsgi, Nginx et plus encore.
Tout d'abord, installez Docker et Docker Compose
Ensuite, clonez le Timeside et démarrez-le:
GIT CLONE - RECURSIVE https://github.com/ircam-wam/timeside.git
CD Timeside
docker composé -d
C'est ça! Maintenant, accédez à la section : REF: «User Interfaces» pour voir comment l'utiliser.
Note
Pour obtenir un support technique, veuillez atteindre l'équipe de développement. Si vous avez besoin d'utiliser Timeside en dehors d'une image Docker, veuillez vous référer aux règles du Dockerfile qui est basée sur un système stable Debian. Nous ne fournirons aucun type de support gratuit dans cette USCase paticulaire en dehors du conteneur Docker d'origine.
Sponsors et partenaires
- Ircam (Paris, France)
- Parisson (Paris, France)
- CNRS: Centre national de recherche scientifique (France)
- HUMA-NUM: Équipement de Big Data pour les sciences humaines numériques (CNRS, France)
- CREM: Centre national français de recherche sur l'éthomusicologie (France)
- Université Pierre et Marie Curie (UPMC Paris, France)
- Anr: Agence Nationale de la Recherche (France)
- MNHN: Musée National d'Histoire Naturelle (Paris, France)
- C4DM: Center for Digital Music, Queen Mary University (Londres, Royaume-Uni)
- NYU Steinhardt: Music and Performing Arts Professions, New York University (New York, USA)
Projets connexes
- Téléméta: plate-forme audio web ouverte
- Archives sonores des CNR, Crem et le "Musée de l'Homme" à Paris, France
- Diadems parrainé par l'ANR.
- Dacaryh, science des données pour l'étude du calypso-rythme à travers l'histoire
- Kamoullox en ligne Unmixing de grandes archives historiques
- NYU + CREM + PARISSON: Analyse de la musique arabe de la base de données CREM complète
- Wasabi: Web audio sémantique agrégé dans le navigateur d'indexation, parrainé par l'ANR
- Timeside-Player v2
- Timeside-Sdk-Js
Références
- Aline Menin, Michel Buffa, Maroua Tikat, Benjamin Molinet, Guillaume Pellerin, Laurent Pottier, Franck Michel et Marco Winckler. (2022, 28 juin). Visualisation incrémentielle et multimodale des discographies: explorer la base de connaissances musicales Wasabi. Web Audio Conference 2022 (WAC 2022), Cannes, France. https://doi.org/10.5281/zenodo.6767530
- Guillaume Pellerin et Paul Brossier. (2022). API TimeSide en tant que service Web de traitement audio [ensemble de données]. Web Audio Conference 2022 (WAC 2022), Cannes, France. Zenodo. https://doi.org/10.5281/zenodo.6769477
- Fillon et G. Pellerin. Une plate-forme Web collaborative pour la gestion et l'analyse des archives sonores. Dans Proceedings of 3rd Web Audio Conference, Londres, page 43. Queen Mary University of London, août 2017.
Droits d'auteur
- Copyright (c) 2019, 2023 IRCAM
- Copyright (C) 2006, 2023 Guillaume Pellerin
- Copyright (C) 2022, 2023 Guillaume Piccarreta
- Copyright (c) 2010, 2022 Paul Brossier
- Copyright (C) 2020, 2021 Romain Herbelleau
- Copyright (c) 2019, 2020 Antoine Grandry
- Copyright (c) 2006, 2019 Parisson Sarl
- Copyright (C) 2013, 2017 Thomas Fillon
- Copyright (C) 2013, 2014 Maxime Lezoz
- Copyright (c) 2013, 2014 David Doukhan
- Copyright (C) 2006, 2010 Olivier Guilyardi
Licence
TimesIde est un logiciel gratuit: vous pouvez le redistribuer et / ou le modifier en vertu des termes de la licence GNU Affero General Public tel que publié par la Free Software Foundation, soit la version 3 de la licence, soit (à votre option) n'importe quelle version ultérieure.
Timeside est distribué dans l'espoir qu'il sera utile, mais sans aucune garantie; Sans même la garantie implicite de qualité marchande ou d'adéquation à un usage particulier. Voir la licence publique générale de GNU Affero pour plus de détails.
Lisez le fichier licence.txt pour plus de détails.