openSMILE用户手册2.3章——提取你的第一个语音特征

在提取你的第一个语音特征之前,首先要保证你已经正确的编译了opensmile,我的系统是win10,编译软件是VS2015,opensmile包是opensmile-2.3.0,下面是官方给的编译步骤。

1.在你的系统上任意位置建立一个opensmile的文件夹

2.将你下载好的opensmile release包复制到刚刚建好的opensmile的文件夹里经行解压

3.解压后你在opensmile的文件夹里将得到一个opensmile-2.3.0的文件夹

4.在opensmile文件夹中创建一个名为msvcbuild的文件夹

5.使用Visual Studio打开opensmile\opensmile-2.3.0\ide\vs10下的openSmile.sln

6.在Visual Studio中解决方案配置选择Release

7.在生成菜单栏下选择生产解决方案

8.如果遇到关于缺少库的错误,请重复几次编译过程(请参阅下面的说明)

9.openSMILE二进制文件现在已经在msvcbuild文件夹中创建。主二进制文件是SMILExtract Release.exe,它依赖openSmileLib Release.dll。因此,如果您需要移动文件,必须两个同时移动

在编译过程如果遇到componentManager.obj : error LNK2001

解决方法:

在解决方案资源管理器界面,右键openSmileLib项目->添加->现有项,将src \ examples \ simpleMessageSender.cpp添加到openSmileLib项目,重新编译。

现在你已经下载并且编译好了opensmile,在提取特征之前我们还需要做一个测试看我们能否正常运行MILExtract Release.exe,我们使用SMILExtract -h命令行,查看版本号等信息。

在我的电脑上我在CMD中输入以下命令:

 

 

 

 

如果你看到openSMILE的使用信息和版本号,那么一切都已正确设置。 你将在输出结尾看到一些以(MSG)开头的行,您可以放心地忽略它们。 要检查SMILExtract二进制文件是否支持实时音频录制和播放,请键入:

SMILExtract -H cPortaudio

如果你看到cPortaudio组件的各种配置选项,那么你的二进制文件支持实时音频I / O. 如果只看到包含消息的三行,则表示你没有实时音频支持。 很明显我的就不支持实时音频。(下面所有的命令行执行结果,我都不再粘贴截图了,希望大家自己尝试)要检查你的SMILExtract二进制文件是否通过OpenCV支持视频功能,请键入:SMILExtract -H cOpenCV

现在我们将开始使用SMILExtract从波形文件中提取非常简单的音频功能。 如果你愿意,可以使用自己的波形文件,或使用wav-samples目录中提供的文件。 为了快速入门,我们将使用随openSMILE分发提供的示例配置文件。 在openSMILE包的顶级目录中键入以下命令(如果在不同的目录中启动openSMILE,则必须调整配置文件和波形文件的路径):

SMILExtract -C config/demo/demo1_energy.conf -I wav_samples/speech01.wav O speech01.energy.csv

如果你只获得(MSG)和(WARN)类型的消息,看到处理已完成! 在最后一个输出行中,然后openSMILE成功运行。 如果某些内容失败,你将收到(错误)消息。

现在,如果openSMILE成功运行,请在文本编辑器中打开文件speech01.energy.csv以查看结果。 您还可以使用gnuplot以图形方式绘制结果。 这将在2.8节中讨论。

按照上述的命令我并没有得到结果,首先是因为我们的文件路径和用户手册上的是不一样的。现在我用我的命令行来运行:

SMILExtract_Release.exe SMILExtract -C F:\opensmile\opensmile-2.3.0\config\demo\demo1_energy.conf -I F:\opensmile\opensmile-2.3.0\example-audio\opensmile.wav -O F:\opensmile\opensmile-2.3.0\example-audio\speech01.energy.csv

这样我在目录F:\opensmile\opensmile-2.3.0\example-audio\下得到了speech01.energy.csv这一个文件。

这里说明一下,-C表示提取特征的配置文件,就是后面的conf文件,这里我用的官方给出的demo1_energy.conf,当然这里配置文件可以自己编写,来实现提取需要的特征;-I (这里是大写字母I)表示后面的目录是输入的数据源; -O表示后面的是输出的特征文件的路径。

接下来,我们将自己config文件生成自己的demo1.conf,以了解如何编写openSMILE配置文件。 openSMILE可以为简单场景生成配置文件模板。 我们将使用此功能生成我们的第一个配置文件,它将能够读取波形文件,计算帧能量,并将输出保存为CSV文件。 首先,创建一个目录myconfig,它将保存您的配置文件。 现在键入以下内容(不带换行符)以生成第一个配置文件:

SMILExtract_Release SMILExtract -cfgFileTemplate -configDflt cWaveSource,cFramer,cEnergy, cCsvSink -l 1 2> F:\opensmile\myconfig\demo1.conf

这个-cfgFileTemplate选项是让opensmile生成一个配置文件的模板。而-configDflt选项用于指定一个逗号分隔的组件列表,该列表应该是生成的配置的一部分。这个-l 1 是设置log-leve 为1,来禁止任何不应该出现在配置文件的信息。模板打印到标准错误,因此我们使用2>将其转储到文件myconfig / demo1.conf。 如果要在生成的配置文件中添加描述各个选项行的注释,请将选项-cfgFileDescriptions添加到上述命令行。

新生成的文件由两个逻辑部分组成。 第一部分看起来像这样(请注意,示例中的注释以;或//开头,并且可能只从行的开头开始):

第一部分包含的是配置文件的组件,例如wavesource,framer,energy等等

第二部分就是对组件的配置

模板组件生成时都是以默认设置生成的,我们可以修改这些值。此功能目前仍处于试验阶段,因为某些值可能会覆盖其他值,或者如果明确指定则具有不同的含义。 因此,你应仔细检查所有可用选项,并仅列出你需要的配置文件中的选项。

接下来,您必须配置组件连接。 这可以通过为data.dader和dataWriter组件分配所谓的数据存储器“级别”来完成,这些组件通过修改reader.dmLevel和writer.dmLevel行总是包含在每个源,接收器或处理组件中。

对于我们的示例配置,我们希望cFramer组件从输入PCM流中读取,该输入PCM流由cWaveSource组件提供,每10ms创建25ms长度的帧,并将这些帧写入我们称之为“能量”的新级别,因此我们更改 以下行:

按照自己的需求进行设置,将第一个组件的writer.dmLevel变成第二个组件的reader.dmLever

在这个confg文件中,输入输出的文件名是固定的,输入文件名input.wav,输出文件名smileoutput.csv为如下图所示

所以我们想把他改为在cmd命令行中指定输入,输出文件名,我们将上图所示的两个部分设置为下图:

这样就可以了。

Ok本章到此结束,如果有错误,请大家指正!!!!!!!

 

 

 

 

 

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 15
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值