annotate gmm_baseline_experiments/external_libs/librosa/librosa-0.3.1/tests/testLibrosaBeat.py @ 5:b523456082ca tip

Update path to dataset and reflect modified chunk naming convention.
author peterf
date Mon, 01 Feb 2016 21:35:27 +0000
parents cb535b80218a
children
rev   line source
peterf@2 1 #!/usr/bin/env python
peterf@2 2 # CREATED:2013-03-11 18:14:30 by Brian McFee <brm2132@columbia.edu>
peterf@2 3 # unit tests for librosa.beat
peterf@2 4
peterf@2 5 from nose.tools import nottest
peterf@2 6
peterf@2 7 import numpy
peterf@2 8 import librosa
peterf@2 9
peterf@2 10 from testLibrosaCore import files, load
peterf@2 11
peterf@2 12 def test_onset_strength():
peterf@2 13
peterf@2 14 def __test(infile):
peterf@2 15 DATA = load(infile)
peterf@2 16
peterf@2 17 # Compute onset envelope using the same spectrogram
peterf@2 18 onsets = librosa.onset.onset_strength(y=None, sr=8000, S=DATA['D'], centering=False, detrend=True)
peterf@2 19
peterf@2 20 assert numpy.allclose(onsets[1:], DATA['onsetenv'][0])
peterf@2 21
peterf@2 22 pass
peterf@2 23
peterf@2 24 for infile in files('data/beat-onset-*.mat'):
peterf@2 25 yield (__test, infile)
peterf@2 26 pass
peterf@2 27
peterf@2 28 def test_tempo():
peterf@2 29 def __test(infile):
peterf@2 30 DATA = load(infile)
peterf@2 31
peterf@2 32 # Estimate tempo from the given onset envelope
peterf@2 33 tempo = librosa.beat.estimate_tempo( DATA['onsetenv'][0],
peterf@2 34 sr=8000,
peterf@2 35 hop_length=32,
peterf@2 36 start_bpm=120.0)
peterf@2 37
peterf@2 38 assert (numpy.allclose(tempo, DATA['t'][0,0]) or
peterf@2 39 numpy.allclose(tempo, DATA['t'][0,1]))
peterf@2 40 pass
peterf@2 41
peterf@2 42 for infile in files('data/beat-tempo-*.mat'):
peterf@2 43 yield (__test, infile)
peterf@2 44 pass
peterf@2 45
peterf@2 46 # Beat tracking test is no longer enabled due to librosa's various corrections
peterf@2 47 @nottest
peterf@2 48 def test_beat():
peterf@2 49 def __test(infile):
peterf@2 50 DATA = load(infile)
peterf@2 51
peterf@2 52 (bpm, beats) = librosa.beat.beat_track(y=None, sr=8000, hop_length=32,
peterf@2 53 onsets=DATA['onsetenv'][0])
peterf@2 54
peterf@2 55 beat_times = librosa.frames_to_time(beats, sr=8000, hop_length=32)
peterf@2 56 print beat_times
peterf@2 57 print DATA['beats']
peterf@2 58 assert numpy.allclose(beat_times, DATA['beats'])
peterf@2 59 pass
peterf@2 60 for infile in files('data/beat-beat-*.mat'):
peterf@2 61 yield (__test, infile)
peterf@2 62 pass