opensmile-python icon indicating copy to clipboard operation
opensmile-python copied to clipboard

How to extract only a subset of features?

Open oscars47 opened this issue 1 year ago • 3 comments

Hello,

My problem is I want to start with, say, the ComParE-2016 features, but instead of actually computing all 6373 of them at once, pass in a list of strings custom_feature_ls which are a subset of the full feature list, and only actually perform the computation of these specific features. I haven't seen any direct support for this in the source code, nor can I quite figure out how to specify a config file to do this. Thanks!

oscars47 avatar Jun 28 '24 19:06 oscars47

The most straightforward way is to simply compute all features and select a subset in the returned DataFrame, e.g., if you want F0 mean and range:

import numpy as np
import opensmile


sampling_rate = 16000
signal = np.sin(np.arange(sampling_rate)*440*2*np.pi/sampling_rate)

smile = opensmile.Smile(
    feature_set=opensmile.FeatureSet.ComParE_2016,
    feature_level=opensmile.FeatureLevel.Functionals,
)

features = smile.process_signal(
    signal,
    sampling_rate
)

custom_feature_ls = ["F0final_sma_amean",
                     "F0final_sma_range",
                     ]

features_selected = features[custom_feature_ls]
print(features_selected)

#                         F0final_sma_amean  F0final_sma_range
# start  end                                                  
# 0 days 0 days 00:00:01         439.721619            0.03595

Adapting the config file is also possible, of course, but much more complex.

maxschmitt avatar Jul 23 '24 10:07 maxschmitt

Hi, thank you Max for getting back to me and including this example. Right of course we can postselect, but is there a way to preselect what components are calculated in the first place from the config file?

oscars47 avatar Jul 24 '24 07:07 oscars47

Yes, you need to go through the config file and remove components/features that are not required. It is not very straightforward as you need to get familiar with the structure of the config file and as they are quite long for this particular feature set.

maxschmitt avatar Jul 24 '24 08:07 maxschmitt