librosa

Pythonの楽曲分析ライブラリ。

https://github.com/tyiannak/pyAudioAnalysis/wiki

インストール

sudo apt install -y ffmpeg

pip3 install numpy matplotlib scipy sklearn hmmlearn simplejson eyed3 pydub
git clone https://github.com/tyiannak/pyAudioAnalysis.git
cd pyAudioAnalysis
pip3 install -e .

librosa

https://github.com/librosa/librosa

pip install librosa
pip3 install librosa

# Ubuntu用。mp3デコードに必要
apt-get install ffmpeg

倍音成分と打楽器成分に分解する

filename = librosa.util.example_audio_file()
y: np.ndarray;
y, sr = librosa.load(filename)

# 分解
y_harm, y_perc = librosa.effects.hpss(y)

# ファイル出力
librosa.output.write_wav('harm.wav', y_harm, sr)
librosa.output.write_wav('perc.wav', y_perc, sr)

前後の無音をトリミングする

filename = librosa.util.example_audio_file()

y: np.ndarray;
yt: np.ndarray;

y, sr = librosa.load(filename)
yt, index = librosa.effects.trim(y)

d = librosa.get_duration(y)
dt = librosa.get_duration(yt)
print(d, dt)

サンプリングレートを取得する

librosa.get_samplerateを使う。

filename = librosa.util.example_audio_file()
sample = librosa.get_samplerate(filename)
print(sample) # 44100

曲の長さを取得する

分単位で取得する。

from __future__ import print_function
import librosa
import numpy as np

filename = librosa.util.example_audio_file()
y: np.ndarray
y, sr = librosa.load(filename)

dur = librosa.get_duration(y, sr)
print(dur)

http://np2lkoo.hatenablog.com/entry/2016/09/22/052354

データセット

https://github.com/arXivTimes/arXivTimes/blob/master/datasets/README.md#music

MIDIのデータセット

https://reddit.com/r/WeAreTheMusicMakers/comments/3ajwe4/the_largest_midi_collection_on_the_internet/ https://colinraffel.com/projects/lmd/#get

ライブラリ

Essentia

インストール

pip3 install essentia

sudo apt-get install build-essential libyaml-dev libfftw3-dev libavcodec-dev libavformat-dev libavutil-dev libavresample-dev python-dev libsamplerate0-dev libtag1-dev libchromaprint-dev python-six

sudo apt-get install python3-dev python3-numpy-dev python3-numpy python3-yaml

# グラフ表示に必要
pip3 install matplotlib

magenta/music

https://tensorflow.github.io/magenta-js/music/

参考