view tests/test_OPMellin.py @ 39:0e70021f251e branch-tests

some tests on OPmellin
author Maria Panteli
date Thu, 14 Sep 2017 16:30:41 +0100
parents
children 9b2beffa5fdd
line wrap: on
line source
# -*- coding: utf-8 -*-
"""
Created on Fri Sep  1 19:11:52 2017

@author: mariapanteli
"""

import pytest

import numpy as np

import scripts.OPMellin as OPMellin


opm = OPMellin.OPMellin()


def test_load_audiofile():
    audiofile = 'data/sample_dataset/Audio/mel_1_2_1.wav'
    opm.load_audiofile(audiofile, segment=False)
    assert opm.y is not None and opm.sr is not None


def test_mel_spectrogram():
    audiofile = 'data/sample_dataset/Audio/mel_1_2_1.wav'
    opm.load_audiofile(audiofile, segment=False)
    opm.mel_spectrogram(y=opm.y, sr=opm.sr)
    # assume 40 mel bands
    assert opm.melspec.shape[0] == 40


def test_post_process_spec():
    audiofile = 'data/sample_dataset/Audio/mel_1_2_1.wav'
    opm.load_audiofile(audiofile, segment=False)
    opm.mel_spectrogram(y=opm.y, sr=opm.sr)
    melspec = opm.melspec
    opm.post_process_spec(melspec=melspec)
    proc_melspec = opm.melspec
    assert melspec.shape == proc_melspec.shape


def test_onset_patterns_n_frames():
    audiofile = 'data/sample_dataset/Audio/mel_1_2_1.wav'
    opm.load_audiofile(audiofile, segment=False)
    opm.mel_spectrogram(y=opm.y, sr=opm.sr)
    opm.onset_patterns(melspec=opm.melspec, melsr=opm.melsr)
    assert opm.op.shape[2] == np.round(((opm.melspec.shape[1] / opm.melsr) - opm.win2sec) * 2.)


def test_onset_patterns_n_bins():
    audiofile = 'data/sample_dataset/Audio/mel_1_2_1.wav'
    opm.load_audiofile(audiofile, segment=False)
    opm.mel_spectrogram(y=opm.y, sr=opm.sr)
    opm.onset_patterns(melspec=opm.melspec, melsr=opm.melsr)
    assert opm.op.shape[0] == 40    


def test_post_process_op():
    audiofile = 'data/sample_dataset/Audio/mel_1_2_1.wav'
    opm.load_audiofile(audiofile, segment=False)
    opm.mel_spectrogram(y=opm.y, sr=opm.sr)
    opm.onset_patterns(melspec=opm.melspec, melsr=opm.melsr)
    op = opm.op
    opm.post_process_op()
    proc_op = opm.op
    assert op.shape == proc_op.shape