Unsupported features for 16-bit PCM WAV
Using opensmile to process a wavfile saved as 16-bit PCM at 16000 sampling rate, I'm getting some features as 0.0 (mainly fundamental frequency / F0), which of course cascades to 0.0 for jitter and shimmer as well. Does opensmile not support 16-bit PCM? This problem appears to vanish if I convert the speech signal array to 32-bit floating point before running it through "smile.process_signal()". This has happened for all feature sets for both Functionals and LLDs.
opensmile expects 32-bit float as input. You can use process_file(file) to directly process 16-bit PCM, though.
If 32-bit float input is a requirement, I guess we should validate that the input format matches and throw an exception if not. Otherwise the chance that you get bogus results without noticing is high. Or we could convert implicitly to 32-bit float before writing to openSMILE, or have openSMILE do the conversion by correctly setting the format settings of cExternalAudioInput.
I checked and actually we forward int16 to opensmile, so we need to bypass the following line:
https://github.com/audeering/opensmile-python/blob/43042a8f00d85304c5c3c50e644083dadc29a4ed/opensmile/core/smile.py#L272