audeering / opensmile

The Munich Open-Source Large-Scale Multimedia Feature Extractor
https://audeering.github.io/opensmile/
Other
553 stars 74 forks source link

Issue with smileMath_csplint_init when migrating from version 2.0 to 3.* #62

Open alonshalita opened 1 year ago

alonshalita commented 1 year ago

I'm trying to migrate a code base that used version 2.0 to version 3.0 or 3.1. The configuration file fails to load with the following errors:

smileMath_csplint_init(): x out of range!
(ERR) [1] instance 'scale': smileMath_csplint_init failed. Output of this component will be invalid!

and then the whole execution segfaults.

A simplified version of the config file looks as follows:

[componentInstances:cComponentManager]
instance[dataMemory].type=cDataMemory
instance[waveIn].type=cWaveSource
instance[frame].type=cFramer
instance[pe2].type=cVectorPreemphasis
instance[win].type=cWindower
instance[fft].type=cTransformFFT
instance[fftmp].type=cFFTmagphase
instance[scale].type=cSpecScale
instance[csvsink].type=cCsvSink
printLevelStats=6

[waveIn:cWaveSource]
writer.dmLevel=wave
filename=\cm[inputfile(I){test.wav}:name of input file]
monoMixdown=1

[frame:cFramer]
reader.dmLevel=wave
writer.dmLevel=outp
frameSize = 0.010
frameStep = 0.010
frameCenterSpecial = left

[pe2:cVectorPreemphasis]
reader.dmLevel=outp
writer.dmLevel=framespe
copyInputName = 1
processArrayFields = 1
k=0.97
de = 0

[win:cWindower]
reader.dmLevel=framespe
writer.dmLevel=win
winFunc=ham
gain=1.0
sigma=0.4

[fft:cTransformFFT]
reader.dmLevel=win
writer.dmLevel=fftc

[fftmp:cFFTmagphase]
reader.dmLevel=fftc
writer.dmLevel=fftmag

[scale:cSpecScale]
reader.dmLevel=fftmag
writer.dmLevel=hps
copyInputName = 1
processArrayFields = 0
scale=octave
sourceScale = lin
interpMethod = spline
minF = 25
maxF = -1
nPointsTarget = 0
specSmooth = 1
specEnhance = 1
auditoryWeighting = 1 

[csvsink:cCsvSink]
reader.dmLevel=hps
filename=\cm[output(O){prosody.csv}:output csv file for pitch data]
append=0

After comparing this conf to examples provided with the opensmile distribution, it seems like if I change the frameSize of the cFramer component to 0.020 or higher, the error is gone. However, for internal data dependencies reasons, I prefer not to make that change.

The original conf was working with no issues with release 2.0. It seems like the call to smileMath_csplint_init in cSpecScale::dataProcessorCustomFinalise (which I believe causes the errors above) was intoruced in release 3.0, and it now expects certain form from the input to the cSpecScale component, but I'm not sure which.

Any idea what's going on? Thanks!