Timesside: Skalierbares Audio -Verarbeitungs -Framework und Server in Python geschrieben
Timesside ist ein Python -Framework, das eine niedrige und hohe Audioanalyse, Bildgebung, Transkodierung, Streaming und Kennzeichnung ermöglicht. Die hochrangige API wurde entwickelt, um eine komplexe Verarbeitung auf sehr großen Datensätzen von Audio- oder Video-Assets mit einer Plug-in-Architektur und einem gesicherten skalierbaren Backend zu ermöglichen.
Einführung
Mit zunehmender Anzahl von Online -Audioanwendungen und Datensätzen wird es für Forscher und Ingenieure von entscheidender Bedeutung, ihre eigenen Algorithmen auf verschiedenen Plattformen und Usecasen wie Computer Musicology und Streaming -Diensten so schnell wie möglich zu prototypisieren und zu testen. Auf der anderen Seite müssen Inhaltsanbieter und -produzenten Benutzererlebnisse auf ihren Plattformen mit mehr Metadaten verbessern, die auf kultureller Geschichte, aber auch auf Audio -Funktionsanalysen basieren. Das Anbau dieser Metadaten synchron mit der im Internet veröffentlichten Musik impliziert, dass die Analyse- und Speichersysteme einfach aktualisiert, skaliert und bereitgestellt werden können.
Timesside wurde in diesem Sinne entwickelt, um einen Online -Audio -Verarbeitungsdienst vorzuschlagen. Es bietet:
- Ein Kernmodul für Python, um aus einer Hülle oder einem anderen Python -basierten Programm zu arbeiten
- Ein Webserver für das Web mit einer erholsamen API, die oben im Kernmodul aufgebaut ist, damit Webentwickler den Remote -Verarbeitungsdienst dann einfach in ihre eigenen Anwendungen einbetten können.
- Ein SDK für JavaScript und basierend auf OpenAPI, um eine Anwendung von Drittanbietern auf problemlos zu entwickeln, die die Server -API verbraucht.
Anwendungsfälle
- Asynchrone Audioverarbeitung (Filterung, Merkmalsanalyse, maschinelles Lernen usw.)
- Skalierte und gesicherte Datenbereitstellung, Verarbeitung und Zugriff
- Audio -Plugin -Prototyping
- Audiovisualisierung
- On-Demand-Transcodierung und Streaming über das Web
- Verbesserter gemeinsamer Audio -Player
- Automatische Segmentierung und manuelle Kennzeichnung mit Audioereignissen synchronisiert
Merkmale
- Asynchrone und schnelle Audioverarbeitung mit Python durchführen ,
- Dekodieren Sie Audiorahmen aus jedem Audio- oder Video -Medienformat in Numpy -Arrays,
- Analysieren Sie Audioinhalte mit einigen hochmodernen Audio-Feature-Extraktionsbibliotheken wie Aubio, YAAFE und VAMP sowie einigen reinen Python-Prozessoren
- Visualisieren Sie Sounds mit verschiedenen ausgefallenen Wellenformen, Spektrogrammen und anderen coolen Graphen.
- Transcode Audiodaten in verschiedenen Medienformaten und streamen Sie diese über Web -Apps.
- Serialisieren Sie die Merkmalsanalysedaten über verschiedene tragbare Formate,
- Stellen Sie Audioquellen von Plateform wie YouTube oder Deezer an
- Liefern Sie eine Analyse und transkodieren auf bereitgestellten oder hochgeladenen Tracks über das Web über eine REST -API
- Wiedergabe und Interaktion auf Demand durch einen intelligenten hochrangigen HTML5 Extensible Player,
- Index- , Tag- und Annotate -Audio -Archive mit semantischen Metadaten (siehe Telemeta, die die Zeit einbettet).
- Bereitstellen und skalieren Sie Ihre eigene Audio -Verarbeitungs -Engine über jede Infrastruktur
Finanzierung und Unterstützung
Um das Projekt zu finanzieren und unseren schnellen Entwicklungsprozess fortzusetzen, benötigen wir Ihre explizite Unterstützung. Wenn Sie also Timesside in der Produktion oder sogar in einem Entwicklungs- oder experimentellen Setup verwenden, teilen Sie uns dies bitte mit:
- das Projekt auf GitHub anstarren oder gaben
- Abgeben uns eine E -Mail unter <[email protected]>
Vielen Dank für Ihre Hilfe und Unterstützung!
Nachricht
1.1
- Kern:
- Verwenden Sie standardmäßig den Libav -basierten Aubio -Decoder (schnellster Audio zum Numpy Array Converter auf dem Planeten!)
- Fügen Sie einen VAMP -basierten Analysator und ein paar Plugins wie Vampflatness, Vampcrest, Vamptempo, Vamptuning, VampspectralCentroid, Vampspectralkurtosis und VampspectralLope hinzu
- Server:
- Beheben Sie viele asynchrone Verarbeitungsprobleme
- Fügen Sie einen Prozessmonitor hinzu, der auf WebSocket basiert
- Wellenform automatisch auf item.save () verarbeitet
- Machen Sie Uuid wirklich einzigartig
- Modelle neu bestellen
- Unit -Tests verbessern
1.0
- Server Refactoring:
- Audioprozess auf Elementen ausgeführt (REST -API -Track -Modell)
- Mehrere Werkzeuge, Ansichten, Modelle und Serialisierer
- Das Schema von REST -API zur OpenAPI 3 -Spezifikation und der automatischen Redoc -Erzeugung
- Bewegen Sie Kern und Server von Python 2.7 auf 3.7
- Aktualisieren Sie Django auf 2,2, Django Rest Framework auf 3.11, Sellerie auf 4.4
- Fügen Sie einen Aubio -basierten Decoder hinzu
- Fügen Sie Kern- und Serverprozessoren -Versions- und Serverprozess -Prozess -Laufzeit hinzu
- Gruppieren Sie alle Abhängigkeiten von den PIP
- Fügen Sie die Anbieterklasse als Kern -API -Komponente und als REST -API -Modell hinzu
- Fügen Sie Provider Plugins Deezer-Preview, Deezer-Complete und YouTube hinzu
- Verbesserung der Server -Unit -Tests
- Fügen Sie die JWT -Authentifizierung auf REST -API hinzu
- Verschiedene Fehlerbehebungen
- Fügen Sie Kern-, Server- und Arbeiter -Protokollierung hinzu
0,9
- Aktualisieren Sie alle Python -Abhängigkeiten
- Fügen Sie Vamp, Essentia, Yaafe, Librosa, Pytorch, Tensorflow Libs and Wrappers hinzu
- Fügen Sie ein paar Analyse -Plugins hinzu (Essentia Dissonance, VAMP Constant Q, Vamp Tempo, Vamp General Wrapper, Yaafe General Wrapper)
- Prozessorparametermanagement hinzufügen
- Fügen Sie die Vererbung des Prozessors hinzu
- Verbessern Sie den HTML5 -Player mit cleverem Datenstroming
- Verbessern Sie die REST -API und verschiedene Serienzus
- Unit -Tests verbessern
- Verschiedene Fehlerbehebungen
0,8
- Fügen Sie den Docker -Support für die sofortige Installation hinzu. Dies ermöglicht es, Timesside jetzt auf jeder OS -Plattform auszuführen!
- Fügen Sie Jupyter Notebook -Unterstützung für einfache Prototypen, Experimentieren und Teilen hinzu (siehe Beispiele im DOC).
- Fügen Sie einen experimentellen Webserver und eine REST -API hinzu, die auf Django Rest Framework, Redis und Sellerie basiert. Dies bietet nun einen echten Web -Audio -Verarbeitungsserver mit hohen Skalierungsfunktionen dank Docker (Clustering) und Sellerie (Multiprocessing).
- Beginnen Sie dank Angular und WavesJs mit der Entwicklung einer neuen Player -Schnittstelle.
- Riesige Aufräumarbeiten von JS -Dateien. Bitte verwenden Sie jetzt Bower, um alle JS -Abhängigkeiten wie in Einstellungen aufgeführt zu erhalten.
- Fügen Sie Metadaten Export zu ELAN -Annotationsdateien hinzu.
- Fixen und verbessern Sie einige Datenstrukturen in den Analysator -Ergebniscontainern.
- Viele verschiedene Bugfixes.
0,7,1
- Fix Django -Version auf 1.6.10 (Synchronisierung mit Telemeta 1.5)
0,7
- Code Refactoring:
- Erstellen Sie ein neues Modul Timesside.plugins und Bewegungsprozessoren darin: Timesside.plugins.decoder, Analyzer, Timesside.plugins.Coder, Timesside.plugins.fx
- WARNUNG: Um die Struktur der Namespace -Pakete ordnungsgemäß zu verwalten, ist das Hauptmodul Timesside jetzt Timesside.core und Code sollten jetzt mit Import Timesside initialisiert werden.core
- Timesside.plugins ist jetzt ein Namespace-Paket, mit dem externe Plugins automatisch an die Zeit angeschlossen werden können (siehe z. Das macht Timesside jetzt zu einem echten Plugin -Host, ja!
- Ein Dummy Timesside -Plugin wird in Kürze für einen einfachen Entwicklungsstart bereitgestellt.
- Verschieben Sie alle von den Partnern des Diadems-Projekts entwickelten Analysatoren in ein neues Repository: Timesside-Diadems
- Viele Korrekturen für eine bessere Verarbeitung durch Travis-Ci
- Fügen Sie eine DOX -Datei hinzu, um das Docker -Gebäude kontinuierlich auf verschiedenen Verteilungen zu testen
Für ältere Nachrichten besuchen Sie bitte: https://github.com/ircam-wam/timeside/blob/master/news.rst
Dokumentation
- Vollständige Dokumentation: https://timeside.ircam.fr/docs/
- Server -REST -API: https://timeside.ircam.fr/api/docs/
- Folien: https://cam-wam.github.io/timeside-slides/#1
- Kerntutorials: https://timeside.ircam.fr/docs/tutorials/
- Einige Notizbücher: https://github.com/cam-wam/timeside/tree/master/docs/ipynb
- Einige ältere Notizbücher: http://mybinder.org/repo/thomasfillon/timeside-demos
- Veröffentlichungen:
- https://github.com/parisson/telemeta-doc
- https://github.com/cam-wam/timesidepapers
- Spieler UI V2: https://github.com/ircam-wam/timeside-player
- Spieler UI V1-Handbuch: https://github.com/ircam-wam/timeside/wiki/ui-guide
- Spieler UI V1 Beispiel: http://archives.crem-cnrs.fr/archives/items/cnrsmh_e_2004_017_001_01/
Installieren
Dank Docker ist Timesside jetzt vollständig als Docker -Komposition erhältlich. Die Docker-basierte Komposition bündelt einige leistungsstarke Anwendungen und moderne Frameworks außerhalb des Boxs wie: Python, Numpy, Jupyter, Gstreamer, Django, Sellerie, Postgresql, Redis, UWSGI, Nginx und mehr.
Installieren Sie zuerst Docker und Docker Compose
Dann klone Timesside und starten Sie sie:
Git Clone-Recursive https://github.com/cam-wam/timeside.git
CD -Zeiten
Docker komponieren -d -d
Das war's! Gehen Sie nun bitte zum Abschnitt : Ref: `User Interfaces`, um zu sehen, wie Sie ihn verwenden.
Notiz
Um technischen Unterstützung zu erhalten, erreichen Sie bitte das Entwicklungsteam. Wenn Sie Timesside außerhalb eines Docker -Images verwenden müssen Wir werden in dieser patikulären Verwendung außerhalb des ursprünglichen Docker -Containers keine kostenlose Unterstützung bieten.
Sponsoren und Partner
- Ircam (Paris, Frankreich)
- Parisson (Paris, Frankreich)
- CNRS: Nationales Zentrum für Wissenschaftsforschung (Frankreich)
- Huma-Num: Big Data-Geräte für digitale Geisteswissenschaften (CNRS, Frankreich)
- Crem: Französisches Nationales Zentrum für Ethomusikologieforschung (Frankreich)
- Universität Pierre et Marie Curie (UPMC Paris, Frankreich)
- ANR: Agence Nationale de la Recherme (Frankreich)
- MNHN: Museum National D'Histoire Naturelle (Paris, Frankreich)
- C4DM: Zentrum für digitale Musik, Queen Mary University (London, Großbritannien)
- NYU Steinhardt: Musik- und Performance -Künsteberufe, New York University (New York, USA)
Verwandte Projekte
- Telemeta: Öffnen Sie die Web -Audio -Plattform
- Soundarchive der CNRs, Crem und der "Musée de l'Homme" in Paris, Frankreich
- Diadems, die vom ANR gesponsert werden.
- Dacaryh, Data Science für die Untersuchung von Calypso-Rhythmus durch Geschichte
- Kamoulox Online -Entmischung großer historischer Archive
- NYU+Crem+Parisson: Arabische Musikanalyse aus der vollständigen Crem -Datenbank
- Wasabi: Web Audio Semantic im Browser zur Indexierung, gesponsert vom ANR
- Times-Player V2
- Timesside-SDK-JS
Referenzen
- Aline Menin, Michel Buffa, Maroua Tikat, Benjamin Molinet, Guillaume Pellerin, Laurent Pottier, Franck Michel und Marco Winckler. (2022, 28. Juni). Inkrementelle und multimodale Visualisierung von Discographien: Erforschung der Wasabi -Musik -Wissensbasis. Web Audio Conference 2022 (WAC 2022), Cannes, Frankreich. https://doi.org/10.5281/zenodo.6767530
- Guillaume Pellerin & Paul Brossier. (2022). Timesside API als Audio -Verarbeitungs -Webdienst [Datensatz]. Web Audio Conference 2022 (WAC 2022), Cannes, Frankreich. Zenodo. https://doi.org/10.5281/zenodo.6769477
- Fillon und G. Pellerin. Eine kollaborative Webplattform für das Management und Analyse von Soundarchiven. In Proceedings of 3. Web Audio Conference, London, Seite 43. Queen Mary University of London, August 2017.
Urheberrechte
- 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 Lecoz
- Copyright (C) 2013, 2014 David Doukhan
- Copyright (C) 2006, 2010 Olivier Guilyardi
Lizenz
Timesside ist kostenlose Software: Sie können sie neu verteilt und/oder unter den Bedingungen der GNU Affero Allgemeinen öffentliche Lizenz wie von der Free Software Foundation veröffentlicht, entweder Version 3 der Lizenz oder (nach Ihrer Option) jede spätere Version.
Timesside wird in der Hoffnung verteilt, dass sie nützlich sein wird, jedoch ohne Garantie; Ohne die implizite Garantie für Handelsfähigkeit oder Eignung für einen bestimmten Zweck. Weitere Informationen finden Sie in der GNU Affero General Public Lizenz.
Lesen Sie die lizenz.txt -Datei für weitere Details.