1

在使用 Windows 版本的 Opensmile 使用 Opensmile 时,我正在从音频文件中提取韵律特征。它运行成功并生成输出 csv。但是当我打开 csv 时,它会显示一些不可读的行。我用这个命令来提取韵律特征:

SMILEXtract  -C \opensmile-3.0-win-x64\config\prosody\prosodyShs.conf -I audio_sample_01.wav -O prosody_sample1.csv

csv 的输出如下所示:

[上述韵律特征的命令的输出1

即使我尝试使用在 opensmile 目录中给出的示例音频文件夹中给出的示例波形文件,输出也是相同的(不可读)。有人可以帮助我确定问题的实际出处吗?我该如何解决?

4

2 回答 2

1

您需要在配置文件中启用 csvSink 组件才能使其工作。您正在使用的文件config\prosody\prosodyShs.conf没有定义此组件,并且始终写入二进制输出。

您可以通过这种方式验证它是否是标准二进制输出:-O从您的命令中省略参数,使其变为SMILEXtract -C \opensmile-3.0-win-x64\config\prosody\prosodyShs.conf -I audio_sample_01.wav并执行它。您将得到一个output.htkprosody_sample1.csv.

怎么输出csv?您可以查看定义组件的示例opensmile-3.0-win-x64\config\demo\demo1_energy.conf配置csvSink

您可以在官方文档中找到更多信息:

于 2021-01-24T14:53:51.563 回答
1

这就是我解决问题的方法。首先,我将 csvSink 组件添加到组件实例列表中。instance[csvSink].type = cCsvSink

接下来,我为此实例添加了配置参数。

[csvSink:cCsvSink]
reader.dmLevel = energy
filename = \cm[outputfile(O){output.csv}:file name of the output CSV 
file]
delimChar = ;
append = 0
timestamp = 1
number = 1
printHeader = 1
\{../shared/standard_data_output_lldonly.conf.inc}`

现在如果你运行这个文件,它会抛出错误,因为reader.dmLevel = energy它依赖于波帧。所以最终的变化是:

[energy:cEnergy]
reader.dmLevel = waveframes
writer.dmLevel = energy

[int:cIntensity]
reader.dmLevel = waveframes

[framer:cFramer]
reader.dmLevel=wave
writer.dmLevel=waveframes

关于如何配置 opensmile 配置文件的进一步参考可以在这里找到

于 2021-07-14T08:43:14.753 回答