All Projects → dodiku → Audioowl

dodiku / Audioowl

Licence: mit
Fast and simple music and audio analysis using RNN in Python 🕵️‍♀️ 🥁

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Audioowl

MixingBear
Package for automatic beat-mixing of music files in Python 🐻🎚
Stars: ✭ 73 (-51.66%)
Mutual labels:  analysis, ml, pip, feature-extraction, music-information-retrieval
Essentia
C++ library for audio and music analysis, description and synthesis, including Python bindings
Stars: ✭ 1,985 (+1214.57%)
Mutual labels:  music-information-retrieval, audio, music
Gist
A C++ Library for Audio Analysis
Stars: ✭ 244 (+61.59%)
Mutual labels:  music-information-retrieval, audio, music
Awesome Deep Learning Music
List of articles related to deep learning applied to music
Stars: ✭ 2,195 (+1353.64%)
Mutual labels:  music-information-retrieval, audio, music
Aubio
a library for audio and music analysis
Stars: ✭ 2,601 (+1622.52%)
Mutual labels:  analysis, audio, music
Codesearchnet
Datasets, tools, and benchmarks for representation learning of code.
Stars: ✭ 1,378 (+812.58%)
Mutual labels:  data, ml, rnn
Muspy
A toolkit for symbolic music generation
Stars: ✭ 151 (+0%)
Mutual labels:  music-information-retrieval, audio, music
Edsp
A cross-platform DSP library written in C++ 11/14. This library harnesses the power of C++ templates to implement a complete set of DSP algorithms.
Stars: ✭ 116 (-23.18%)
Mutual labels:  audio, music
Msmbuilder
🏗 Statistical models for biomolecular dynamics 🏗
Stars: ✭ 118 (-21.85%)
Mutual labels:  analysis, feature-extraction
Amplipi
Whole House Audio System 🔊
Stars: ✭ 125 (-17.22%)
Mutual labels:  audio, music
Jhtalib
Technical Analysis Library Time-Series
Stars: ✭ 131 (-13.25%)
Mutual labels:  analysis, data
Sonos Web
Web interface for Sonos audio systems
Stars: ✭ 114 (-24.5%)
Mutual labels:  audio, music
Simple Sdl2 Audio
A simple SDL2 audio library without SDL_Mixer for playing music and multiple sounds natively in SDL2
Stars: ✭ 111 (-26.49%)
Mutual labels:  audio, music
Xsound
Web Audio API Library for Synthesizer, Effects, Visualization, Multi-Track Recording, Audio Streaming, Visual Audio Sprite ...
Stars: ✭ 123 (-18.54%)
Mutual labels:  audio, music
Sbplayerclient
支持全格式的mac版视频播放器
Stars: ✭ 110 (-27.15%)
Mutual labels:  audio, music
Reddit Detective
Play detective on Reddit: Discover political disinformation campaigns, secret influencers and more
Stars: ✭ 129 (-14.57%)
Mutual labels:  analysis, data
Spotspot
A Spotify mini-player for macOS
Stars: ✭ 110 (-27.15%)
Mutual labels:  audio, music
Wxconn
统计你的微信连接多少人,包括好友、群聊人数,并提供去重后的长图结果
Stars: ✭ 128 (-15.23%)
Mutual labels:  analysis, data
Yt Audio
A simple, configurable youtube-dl wrapper to download and manage youtube audio
Stars: ✭ 132 (-12.58%)
Mutual labels:  audio, music
Airsonic
📡 ☁️ 🎶Airsonic, a Free and Open Source community driven media server (fork of Subsonic and Libresonic)
Stars: ✭ 1,876 (+1142.38%)
Mutual labels:  audio, music

GitHub license PRs Welcome

AudioOwl

AudioOwl is using librosa and RNN models to run fast analysis of music files 🎸.

Jump to:

Mix your music automatically with MixingBear - Automatic beat-mixing of music files 🎚

AudioOwl

Quickstart

Analyze a WAV audio file -

import audioowl
data = audioowl.analyze_file(path='my_music_file.wav', sr=22050)

print (data)
==> {'sample_rate': 22050,
    'duration': 36.096009070294784,
    'beat_samples': [12794, 40148, 66179, 93092, ...,
    'notes': [2,2,2,2,3,3,3,1,1,...]
    ...}

or an MP3 file -

data = audioowl.analyze_file(path='my_music_file.mp3', sr=22050)

Get beat times in samples (data['beat_samples']) -

import matplotlib.pyplot as plt

waveform = audioowl.get_waveform('drums.mp3', sr=22050)
data = audioowl.analyze_file('drums.mp3', sr=22050)

plt.figure()
plt.vlines(data['beat_samples'], -1.0, 1.0)
plt.plot(waveform)
plt.show()

plotting beats

Installation

Tested on Python 3.6 or later

⚠️ AudioOwl needs ffmpeg to be installed on your machine. The easiest way to install ffmpeg (at least on a Mac) is using homebrew. See instructions here.

The latest stable release is available on PyPI.
Install it using the following command -

$ pip install audioowl

Usage

Given an audio file, AudioOwl generates an objects with many useful information about your file 💪.

audioowl.get_waveform()

Returns a numpy array that contains that audio file time series.

Supported keyword arguments for audioowl.get_waveform():

  • path - Local path to the audio file.
  • sr [optional] - Requested sample rate for the analyzed file. This does not have to be the actual sample rate of the file, but the sample rate that will be used for the analysis. default = 22050.

audioowl.analyze_file()

Returns an object (dictionary) with the analysis results.

The audioowl.analyze_file() function allows you to use the path to the audio file.

Supported keyword arguments for audioowl.analyze_file():

  • path - Local path to the audio file.
  • sr [optional] - Requested sample rate for the analyzed file. This does not have to be the actual sample rate of the file, but the sample rate that will be used for the analysis. default = 22050.

audioowl.analyze_samples()

Returns a numpy array that contains that audio file time series.

The audioowl.analyze_samples() function allows you to use an audio time series (as numpy array).

Example -

import audioowl

time_series = audioowl.get_waveform('my_music_file.wav')
data = audioowl.analyze_samples(y=time_series, sr=44100)

Supported keyword arguments for audioowl.analyze_samples():

  • y - Time series. Must be a numpy array, with shape (1,) for mono, and (2,) for stereo.
  • sr - Requested sample rate for the analyzed file. This does not have to be the actual sample rate of the file, but the sample rate that will be used for the analysis.

Output data explained

The return value of all function is a an object (dictionary) with the analysis results. In case where the return value is stored in data:

import audioowl
data = audioowl.analyze_file(path='my_music_file.wav', sr=22050)

The data object will include the following properties:

  data['sample_rate'] # [int] sample rate

  data['duration'] # [float] file duration

  data['beat_samples'] # [list] beat location in samples

  data['number_of_beats'] # [list] number of detected beats

  data['tempo_float'] # [float] detected tempo as a float

  data['tempo_int'] # [int] detected tempo as an int

  data['zero_crossing'] # [list] detected zero level crossing, in samples detected

  data['noisiness_median'] # [float] nosiness value as a median, across the file

  data['noisiness_sum'] # [float] nosiness value as a sum, across the file

  data['notes'] # [list] notes across the file, based on chromagram of hop_length=512 samples.
  # notes legend:
  # 0   c
  # 1   c#
  # 2   d
  # 3   d#
  # 4   e
  # 5   f
  # 6   f#
  # 7   g
  # 8   g#
  # 9   a
  # 10  a#
  # 11  b

  data['dominant_note'] # [int] most dominant (frequent) note across the file

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].