【opensmile翻译】2.3提取特征demo-编写opensmile配置文件

  • 文档机翻

openSMILE可以生成配置用于简单场景的模板。
我们将使用此功能生成我们的第一个配置,能够读取波形,计算帧能量,并保存输出到CSV文件。首先,创建一个目录myconfig,它将保存你的配置文件。现在键入以下内容(不带换行符)以生成第一个配置文件:

SMILExtract -cfgFileTemplate -configDflt cWaveSource,cFramer,cEnergy,cCsvSink -l 1 2> myconfig/demo1.conf

-cfgFileTemplate选项指示openSMILE生成配置文件模板,而-configDflt选项用于指定逗号分隔的组件列表,它们是配置的一部分。 -l 1选项将日志级别设置为1
禁止任何消息,这些消息不应该在配置文件中,但当错误级别为日志级别1上的消息,仍然会提示错误,例如通知指定的组件的消息不存在等。模板文本打印到标准错误,我们使用2> 将它转储到myconfig / demo1.conf。如果要在生成的配置文件中添加描述单个选项的注释行,添加-cfgFileDescriptions命令。
生成的demo1.conf文件包含两个部分,第一个部分如下所示,是组件管理器的配置

 ;===== component manager configuration (= list of enabled components!) =====

[componentInstances:cComponentManager]
 // this line configures the default data memory:
instance[dataMemory].type = cDataMemory
instance[waveSource].type = cWaveSource
instance[framer].type = cFramer
instance[energy].type = cEnergy
instance[csvSink].type = cCsvSink
 // Here you can control the amount of detail displayed for the data memory
  // level configuration. 0 is no information at all, 5 is maximum detail.
printLevelStats = 1
 // You can set the number of parallel threads (experimental):
nThreads = 1

第二部分是组件配置部分,每个组件配置以如下形式作为开始

[waveSource:cWaveSource]
...
[framer:cFramer]
...
[energy:cEnergy]
...
[csvSink:cCsvSink]

节标题遵循以下格式:[instanceName:componentType]。模板组件生成配置部分,并将所有可用值设置为其默认值。此功能目前仍处于试验阶段,因为某些值可能会覆盖其他值,或者如果明确指定,则具有不同的含义。因此,你应该仔细检查所有可用选项,并仅列出您需要的配置文件中的选项。即使在在某些情况下,您可以使用默认值(频谱数量等)。
接下来,配置组件连接。通过修改dataReader和dataWriter组件的数据存储的等级reader.dmLevel和writer.dmLevel去连接每个源、接收器或处理器组件。writer.dmLevel的名称可以任意,dataWriter根据该名称在数据存储器中注册并创建writer.dmLevel的级别。然后对所需组件的reader.dmLevel配置与之相应的读取级别连接组件。注意,一个数据存储等级只有一个writer存在,即一个数据等级仅对应一个组件;但一个数据存储等级可被多个组件读取,而且一个组件也可以读取多个数据等级,如reader.dmLevel=energy;loudness,因此,数据以列方式连接。
举例说明,如果cFramer组件读取cWaveSource组件的PCM流,且cFrame创建长度为25ms、步进为10ms的帧
10 ms,然后将这些帧写入我们称之为cEnergy组件的新级别energy中,则将配置文件做如下更改:

[waveSource:cWaveSource]
writer.dmLevel = <>
to
[waveSource:cWaveSource]
writer.dmLevel = wave
===================
[framer:cFramer]
reader.dmLevel = <>
writer.dmLevel = <>
to
[framer:cFramer]
reader.dmLevel = wave
writer.dmLevel = waveframes
====================
[energy:cEnergy]
reader.dmLevel = <>
writer.dmLevel = <>
to
[energy:cEnergy]
reader.dmLevel = waveframes
writer.dmLevel = energy
====================
[csvSink:cCsvSink]
reader.dmLevel = <>
to
[csvSink:cCsvSink]
reader.dmLevel = energy

在[waveSource:cWaveSource]和[csvSink:cCsvSink]可设置输入和输出文件。如

[waveSource:cWaveSource]
filename = input.wav
[csvSink:cCsvSink]
filename = smileoutput.csv

若需要在命令行中制定输入和输出文件,则将上述设置改为

[waveSource:cWaveSource]
filename = \cm[inputfile(I){input.wav}:file name of the input wave file]
[csvSink:cCsvSink]
filename = \cm[outputfile(O){output.csv}:file name of the output CSV file]

你可能感兴趣的:(信号处理,opensmile)