Mercurial > hg > rhythm-melody-feature-evaluation
view extract_features.py @ 7:b7169083b9ea tip
fix typo in variable name
author | Maria Panteli |
---|---|
date | Tue, 01 Jan 2019 15:51:38 +0200 |
parents | c4ef4a02fc19 |
children |
line wrap: on
line source
# -*- coding: utf-8 -*- """ Created on Thu Feb 11 19:51:24 2016 @author: mariapanteli """ """ Extract scale transform and pitch bihistogram descriptors""" import os import numpy import pandas import sys sys.path.append('util') import pitch_bihist as pbh import scale_transform as stf def extract_pitch_bihist(filenames): """ compute pitch bihistogram feature for each audio file in filenames """ melf = [] for filename in filenames: print filename pb = pbh.PitchBihist() pbihist = pb.get_pitchbihist(filename=filename) average_frame = numpy.nanmean(pbihist.T, axis=0, keepdims=True) melf.append(average_frame) melf = numpy.concatenate(melf) return melf def extract_scale_transform(filenames): """ compute scale transform feature for each audio file in filenames """ rhyf = [] for filename in filenames: print filename st = stf.ScaleTransform() stransf = st.get_scale_transform(filename=filename) average_frame = numpy.nanmean(stransf.T, axis=0, keepdims=True) rhyf.append(average_frame) rhyf = numpy.concatenate(rhyf) return rhyf if __name__ == '__main__': # Load metadata to get audio filenames df = pandas.read_csv(os.path.join('data','Metadata.csv')) filenames = df["filename"].get_values() # Specify audio directory and append to audio filenames filenames_mel = [os.path.join('audio','melodies', ff) for ff in filenames] filenames_rhy = [os.path.join('audio','rhythms', ff) for ff in filenames] pitch_bihist = extract_pitch_bihist(filenames_mel) scale_transform = extract_scale_transform(filenames_rhy) # Save .csv where rows = n_files, columns = n_features write_file = False if write_file: numpy.savetxt(os.path.join('data', 'PB.csv'), pitch_bihist, delimiter=',', fmt='%10.12f') numpy.savetxt(os.path.join('data', 'ST.csv'), scale_transform, delimiter=',', fmt='%10.12f')