Timeside: estrutura de processamento de áudio escalável e servidor escrito em Python
O Timeside é uma estrutura Python que permite análise de áudio de baixo e alto nível, imagem, transcodificação, streaming e rotulagem. Sua API de alto nível foi projetada para permitir processamento complexo em conjuntos de dados muito grandes de qualquer ativo de áudio ou vídeo com uma arquitetura plug-in e um back-end escalável seguro.
Introdução
À medida que o número de aplicativos e conjuntos de dados on -line de áudio aumenta, torna -se crucial que pesquisadores e engenheiros possam prototipar e testar seus próprios algoritmos o mais rápido possível em várias plataformas e escolas, como serviços de musicologia computacional e streaming. Por outro lado, os provedores de conteúdo e os produtores precisam aprimorar as experiências do usuário em suas plataformas com mais metadados com base na história cultural, mas também em análises de recursos de áudio. O cultivo desses metadados de maneira síncrona com a música publicada na Internet implica que os sistemas de análise e armazenamento podem ser facilmente atualizados, dimensionados e implantados.
O Timeside foi desenvolvido nesse sentido para propor um serviço de processamento de áudio on -line. Ele fornece:
- Um módulo principal para Python trabalhar em uma concha ou qualquer outro programa baseado em Python
- Um servidor da Web para a Web com uma API RESTful, construída sobre o módulo principal, para que os desenvolvedores da Web possam incorporar facilmente o serviço de processamento remoto em seus próprios aplicativos.
- Um SDK para JavaScript e baseado no OpenAPI para desenvolver facilmente um aplicativo de terceiros consumindo a API do servidor.
Casos de uso
- Processamento de áudio assíncrono (filtragem, análise de recursos, aprendizado de máquina etc.)
- Provisionamento de dados em escala e garantido, processamento e acesso
- Prototipagem de plug -in de áudio
- Visualização de áudio
- Transcodificação sob demanda e streaming pela web
- Player de áudio compartilhado aprimorado
- Segmentação automática e rotulagem manual sincronizadas com eventos de áudio
Características
- Faça processamento de áudio assíncrono e rápido com Python,
- Decode quadros de áudio de qualquer formato de mídia de áudio ou vídeo em matrizes numpy,
- Analise o conteúdo de áudio com algumas bibliotecas de extração de recursos de áudio de última geração, como Aubio, Yaafe e Vamp, bem como alguns processadores Python puros
- Visualize sons com várias formas de onda sofisticadas, espectrogramas e outros grafers legais,
- Transcode dados de áudio em vários formatos de mídia e transmiti -los através de aplicativos da web,
- Serialize os dados de análise de recursos através de vários formatos portáteis,
- Forneça fontes de áudio da placa como o YouTube ou Deezer
- Entregue análises e transcode nas faixas fornecidas ou enviadas pela Web através de uma API REST
- Reprodução e interagir sob demanda através de um jogador extensível de alto nível inteligente de alto nível,
- Arquivos de índice , tag e anote em áudio com metadados semânticos (consulte Telemeta que incorpore o Timeside).
- Implante e escala seu próprio mecanismo de processamento de áudio por meio de qualquer infraestrutura
Financiamento e apoio
Para financiar o projeto e continuar nosso processo de desenvolvimento rápido, precisamos do seu apoio explícito. Portanto, se você usar o Timeside na produção ou mesmo em uma configuração experimental ou de desenvolvimento, informe -nos por:
- olhando ou branqueando o projeto no Github
- Coloque um e -mail para <[email protected]>
Obrigado pela sua ajuda e apoio!
Notícias
1.1
- Essencial:
- Use o decodificador Aubio baseado em Libav por padrão (conversor de matriz de áudio mais rápido para Numpy no planeta!)
- Adicione um analisador baseado em vamp e alguns plugins como vampflatness, vampcrest, vampempo, vampning, vampspectralcentroid, vampectralkurtose e vampectraalslope
- Servidor:
- Corrija muitos problemas de processamento assíncrono: agora faça todas as tarefas de pré-processamento, processamento e pós-processamento por meio do trabalhador, incluindo a busca de fluxos de origem no YouTube
- Adicione um monitor de processo com base no WebSocket
- Formulário de onda processado automaticamente no item.Save ()
- Torne Uuid realmente único
- Reordenando modelos
- Melhorar os testes de unidade
1.0
- Refatoração do servidor:
- Processo de áudio executado em itens (modelo de Rest Api Track)
- várias ferramentas, vistas, modelos e serializadores
- Esquema da API REST no OpenAPI 3 Especificação e geração automática Redoc
- Mova o núcleo e o servidor do Python 2.7 para 3.7
- Atualize o Django para 2.2, Django Rest Framework para 3.11, aipo para 4.4
- Adicione um decodificador baseado em Aubio
- Adicione o tempo de versão do Core and Server Processors 'Versioning' Run Ofn Time
- Reagrupar todas as dependências dos requisitos de PIP removendo o uso do CONDA
- Adicione a classe do provedor como um componente da API do núcleo e como um modelo de API REST
- Adicionar plug-ins de provedor Deezer-Preview, Deezer-complete e YouTube
- Melhorar o teste de unidade de servidor
- Adicione a autenticação JWT na API REST
- Várias correções de bug
- Adicionar registro de núcleo, servidor e trabalhadores
0,9
- Atualize todas as dependências do Python
- Adicione vamp, Essentia, Yaafe, Librosa, Pytorch, Libs Tensorflow e Wrappers
- Adicione alguns plug -ins de análise (Dissonance de Essentia, Vamp Constant Q, Vamp Tempo, Wrapper Geral Vamp, Wrapper General Yaafe)
- Adicionar gerenciamento de parâmetros do processador
- Adicionar herança do processador
- Melhore o player html5 com transmissão de dados inteligente
- Melhore a API REST e vários Serialzers
- Melhorar o teste de unidade
- Várias correções de bug
0,8
- Adicione o suporte do Docker para instalação instantânea. Isso permite executar o Timeside agora em qualquer plataforma do sistema operacional!
- Adicione o suporte ao notebook Jupyter para facilitar a prototipagem, experimentar e compartilhar (consulte os exemplos no documento).
- Adicione uma API Experimental Web e REST com base na estrutura de REST DJANGO, REDIS e CELYY. Agora, isso fornece um servidor de processamento de áudio da Web real com recursos de alta escala, graças ao Docker (Clustering) e ao aipo (multiprocessamento).
- Inicie o desenvolvimento de uma nova interface de jogador graças ao Angular e WavesJs.
- Enorme limpeza de arquivos JS. Agora use o Bower para obter todas as dependências do JS, conforme listado nas configurações.
- Adicionar exportação de metadados aos arquivos de anotação Elan.
- Corrija e melhore algumas estruturas de dados nos contêineres do resultado do analisador.
- Muitas bugs de várias correntes.
0.7.1
- Corrija a versão Django para 1.6.10 (sincronize com Telemeta 1.5)
0,7
- Refatoração de código:
- Crie um novo módulo timeside.plugins e mova os processadores: timeside.plugins.decoder, analisador, timeside.plugins.encoder, timeside.plugins.fx
- Aviso: Para gerenciar corretamente a estrutura de pacotes de espaço para nome, o módulo principal do Times é agora o Times.
- O Timeside.Plugins agora é um pacote de namespace que permite que os plug-ins externos sejam automaticamente conectados ao Timeside (veja, por exemplo, Timeside-Diadems). Isso agora faz do Timeside um verdadeiro host plug -in, sim!
- Em breve, um plug -in dummy times será fornecido para fácil iniciar o desenvolvimento.
- Mova todos os analisadores desenvolvidos pelos parceiros do projeto Diadems para um novo repositório: Timeside-Diadems
- Muitas correções para um melhor processamento de Travis-Ci
- Adicione um arquivo DOX para testar o Docker Building continuamente em várias distribuições
Para notícias mais antigas, visite: https://github.com/ircam-wam/timeside/blob/master/news.rst
Documentação
- Documentação completa: https://timeside.ircam.fr/docs/
- API REST do servidor: https://timeside.ircam.fr/api/docs/
- Slides: https://ircam-wam.github.io/timeside-slides/#1
- Tutoriais principais: https://timeside.ircam.fr/docs/tutorials/
- Alguns notebooks: https://github.com/ircam-wam/timeside/tree/master/docs/ipynb
- Alguns cadernos mais antigos: http://mybinder.org/repo/thomasfillon/timeside-dmos
- Publicações:
- https://github.com/parisson/telemeta-doc
- https://github.com/ircam-wam/timeside-papers
- UI do jogador V2: https://github.com/ircam-wam/timeside-player
- Guia do UI V1 do jogador: https://github.com/ircam-wam/timeside/wiki/ui-guide
- Exemplo de interface do usuário do jogador V1: http://archives.crem-cnrs.fr/archives/items/cnrsmh_e_2004_017_001_01/
Instalar
Graças ao Docker, o Timeside agora está totalmente disponível como uma composição do Docker pronta para trabalhar. A composição baseada no Docker inclui algumas aplicações poderosas e estruturas modernas prontas para uso: Python, Numpy, Jupyter, Gstreamer, Django, Cely, PostgreSQL, Redis, Uwsgi, Nginx e muito mais.
Primeiro, instale o docker e o docker compor
Em seguida, clone o Timeside e comece:
Clone Git-Recursivo https://github.com/ircam-wam/timeside.git
CD Timeside
Docker compõe -d
É isso! Agora, vá para a seção : Ref: `User Interfaces` para ver como usá -la.
Observação
Para obter suporte técnico, chegue à equipe de desenvolvimento. Se você precisar usar o Times à parte fora de uma imagem do Docker, consulte as regras do DockerFile, que é baseado em um sistema estável do Debian. Não forneceremos nenhum tipo de suporte gratuito nesta USECASE paticular fora do recipiente original do Docker.
Patrocinadores e parceiros
- Ircam (Paris, França)
- Parisson (Paris, França)
- CNRS: Centro Nacional de Pesquisa em Ciência (França)
- Huma-Num: Equipamento de Big Data para Humanidades Digitais (CNRS, França)
- Crem: Centro Nacional Francês de Pesquisa em Etomusicologia (França)
- Université Pierre et Marie Curie (UPMC Paris, França)
- ANR: Agence Nationale de la Recherche (França)
- MNHN: Museum National d'Histoire Naturelle (Paris, França)
- C4DM: Center for Digital Music, Queen Mary University (Londres, Reino Unido)
- NYU Steinhardt: Profissões de Música e Artes, Universidade de Nova York (Nova York, EUA)
Projetos relacionados
- Telemeta: Aberta da plataforma de áudio da web
- Arquivos de som dos CNRs, Crem e o "Musée de L'Homme" em Paris, França
- Diadema patrocinados pelo ANR.
- Dacaryh, ciência de dados para o estudo do ritmo de Calypso através da história
- Kamoulox online sem mistura de grandes arquivos históricos
- NYU+Crem+Parisson: Análise musical árabe do banco de dados completo do Crem
- Wasabi: Web Audio semântico agregado no navegador para indexação, patrocinado pelo ANR
- Timeside-Player V2
- timeside-sdk-js
Referências
- Aline Menin, Michel Buffa, Maroua Tikat, Benjamin Molinet, Guillaume Pellerin, Laurent Pottier, Franck Michel e Marco Winckler. (2022, 28 de junho). Visualização incremental e multimodal de discografias: explorando a base de conhecimento musical de Wasabi. Web Audio Conference 2022 (WAC 2022), Cannes, França. https://doi.org/10.5281/zenodo.6767530
- Guillaume Pellerin e Paul Brossier. (2022). API Timeside como um serviço da Web de processamento de áudio [conjunto de dados]. Web Audio Conference 2022 (WAC 2022), Cannes, França. Zenodo. https://doi.org/10.5281/zenodo.6769477
- Fillon e G. Pellerin. Uma plataforma web colaborativa para gerenciamento e análise de arquivos de som. Em Anais da 3ª Conferência de Áudio da Web, Londres, página 43. Queen Mary University of London, agosto de 2017.
Direitos autorais
- 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 Guililyardi
Licença
O Timeside é um software livre: você pode redistribuí -lo e/ou modificá -lo nos termos da licença pública geral do GNU Affero, conforme publicado pela Free Software Foundation, versão 3 da licença ou (por sua opção) qualquer versão posterior.
O Timeside é distribuído na esperança de que seja útil, mas sem garantia; sem a garantia implícita de comercialização ou aptidão para uma finalidade específica. Veja a licença pública geral do GNU Affero para obter mais detalhes.
Leia o arquivo License.txt para obter mais detalhes.