Esempio n. 1
0
import common
from dbispipeline.evaluators import FixedSplitEvaluator
from dbispipeline.evaluators import ModelCallbackWrapper
import dbispipeline.result_handlers as result_handlers
from dbispipeline.utils import prefix_path
from loaders.melspectrograms import MelSpectrogramsLoader
from models.crnn import CRNNModel
from sklearn.pipeline import Pipeline

WINDOW_SIZE = 1366

dataloader = MelSpectrogramsLoader(
    data_path=prefix_path("melspec_data", common.DEFAULT_PATH),
    training_path=prefix_path("autotagging_moodtheme-train.tsv",
                              common.DEFAULT_PATH),
    test_path=prefix_path("autotagging_moodtheme-test.tsv",
                          common.DEFAULT_PATH),
    validate_path=prefix_path("autotagging_moodtheme-validation.tsv",
                              common.DEFAULT_PATH),
    window_size=WINDOW_SIZE,
    window='random',
    num_windows=5,
)

pipeline = Pipeline([
    ("model", CRNNModel(epochs=32, dataloader=dataloader, attention=True)),
])

evaluator = ModelCallbackWrapper(
    FixedSplitEvaluator(**common.fixed_split_params()),
    lambda model: common.store_prediction(model, dataloader),
Esempio n. 2
0
import common
from dbispipeline.evaluators import FixedSplitEvaluator
from dbispipeline.evaluators import ModelCallbackWrapper
import dbispipeline.result_handlers as result_handlers
from dbispipeline.utils import prefix_path
from loaders.combined import CombinedLoader
from models.crnn import CRNNPlusModel
from sklearn.pipeline import Pipeline

dataloader = CombinedLoader(
    mel_data_path=prefix_path("melspec_data", common.DEFAULT_PATH),
    mel_training_path=prefix_path("autotagging_moodtheme-train.tsv",
                                  common.DEFAULT_PATH),
    mel_test_path=prefix_path("autotagging_moodtheme-test.tsv",
                              common.DEFAULT_PATH),
    mel_validate_path=prefix_path("autotagging_moodtheme-validation.tsv",
                                  common.DEFAULT_PATH),
    ess_training_path=prefix_path("accousticbrainz-train.pickle",
                                  common.DEFAULT_PATH),
    ess_test_path=prefix_path("accousticbrainz-test.pickle",
                              common.DEFAULT_PATH),
    ess_validate_path=prefix_path("accousticbrainz-validation.pickle",
                                  common.DEFAULT_PATH),
    window='random',
    num_windows=5,
)

pipeline = Pipeline([
    ("model", CRNNPlusModel(epochs=48, dataloader=dataloader, attention=True)),
])
Esempio n. 3
0
import common
from dbispipeline.evaluators import FixedSplitGridEvaluator
import dbispipeline.result_handlers as result_handlers
from dbispipeline.utils import prefix_path
from loaders.librosa_features import LibRosaLoader
from sklearn.neighbors import KNeighborsClassifier
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler

dataloader = LibRosaLoader(
    prefix_path("autotagging_moodtheme-train-librosa.pickle",
                common.DEFAULT_PATH),
    prefix_path("autotagging_moodtheme-test-librosa.pickle",
                common.DEFAULT_PATH),
)

pipeline = Pipeline([("scaler", StandardScaler()),
                     ("model", KNeighborsClassifier())])

evaluator = FixedSplitGridEvaluator(
    params={
        "model__n_neighbors": [1, 3, 5, 10],
    },
    grid_params=common.grid_params(),
)

result_handlers = [
    result_handlers.print_gridsearch_results,
]
Esempio n. 4
0
        'tonal.chords_key',
        'tonal.chords_scale',
        'tonal.key_scale',
        'tonal.key_key',
    ]
    for c in string_columns:
        dummies = pd.get_dummies(df[c], prefix=c, drop_first=False)
        df = pd.concat([df.drop(c, axis=1), dummies], axis=1)

    # Save dataframe.
    pickle.dump(df, open(target_file, "wb"))


if __name__ == "__main__":
    create_dataset(
        prefix_path("autotagging_moodtheme-train.tsv", common.DEFAULT_PATH),
        prefix_path("acousticbrainz_data", common.DEFAULT_PATH),
        prefix_path("accousticbrainz-train.pickle", common.DEFAULT_PATH),
    )
    create_dataset(
        prefix_path("autotagging_moodtheme-test.tsv", common.DEFAULT_PATH),
        prefix_path("acousticbrainz_data", common.DEFAULT_PATH),
        prefix_path("accousticbrainz-test.pickle", common.DEFAULT_PATH),
    )
    create_dataset(
        prefix_path("autotagging_moodtheme-validation.tsv",
                    common.DEFAULT_PATH),
        prefix_path("acousticbrainz_data", common.DEFAULT_PATH),
        prefix_path("accousticbrainz-validation.pickle", common.DEFAULT_PATH),
    )
Esempio n. 5
0
import common
from dbispipeline.evaluators import FixedSplitGridEvaluator
import dbispipeline.result_handlers as result_handlers
from dbispipeline.utils import prefix_path
from loaders.acousticbrainz import AcousticBrainzLoader
from sklearn.multioutput import MultiOutputClassifier
from sklearn.pipeline import Pipeline
from sklearn.preprocessing import StandardScaler
from sklearn.svm import SVC

dataloader = AcousticBrainzLoader(
    training_path=prefix_path("accousticbrainz-train.pickle",
                              common.DEFAULT_PATH),
    test_path=prefix_path("accousticbrainz-test.pickle", common.DEFAULT_PATH),
    validation_path=prefix_path("accousticbrainz-validation.pickle",
                                common.DEFAULT_PATH),
)

pipeline = Pipeline([
    ("scaler", StandardScaler()),
    ("model", MultiOutputClassifier(SVC(probability=True))),
])

evaluator = FixedSplitGridEvaluator(
    params={"model__estimator__C": [0.1, 1.0, 10.0]},
    grid_params=common.grid_params(),
)

result_handlers = [
    result_handlers.print_gridsearch_results,
]
# Create a data set using features extracted by librosa.
import multiprocessing
from os import path
import pickle

import common
from dbispipeline.utils import prefix_path
import librosa
import numpy as np
import pandas as pd

DATA_PATH = prefix_path("audio_data", common.DEFAULT_PATH)


def extract_features(song_path):
    # Load song.
    song, sr = librosa.load(song_path)

    # Extract BPM.
    bpm, _ = librosa.beat.beat_track(y=song, sr=sr)

    # Extract zero-crossing rate.
    zcr = sum(librosa.zero_crossings(y=song)) / len(song)

    # Extract spectral centroid.
    spec_centroid = np.mean(
        librosa.feature.spectral_centroid(y=song, sr=sr)[0])
    spec_centroid_stddev = np.std(
        librosa.feature.spectral_centroid(y=song, sr=sr)[0])

    # Extract spectral rolloff.