• opensmile学习使用


    1. 理论:
      1. 以命令行形式运行,通过配置config文件
      2. 适用于:
        1. 语音识别(前后端特征抽取,关键词定位)
        2. 情感计算领域(情感识别,情感敏感的虚拟助理)
        3. 音乐信息检索(和弦标记,节拍跟踪,开始检测)
      3. opensmile在2.0之后包含了opencv 可以用于视频处理和视频特征提取。
      4. 可以抽取的特征:
        1. 信号处理:
          1. 窗口函数:Rectangular, Hamming, Hann (raised cosine), Gauss, Sine, Triangular
          2. 预加重/去加重:一阶高/低通
          3. 重新采样:FFT(幅值、相位、复数)和逆(快速傅里叶变换–幅度、相和 复fft–及反变换)
          4. 自相关函数(ACF)(通过功率谱的IFFT)(自相关函数)
        2. 数据处理:特征归一化:
          1. 幅度标准化
          2. 均值方差标准化
          3. delta 归回系数和简易的微分
          4. 加权微分
          5. 向量运算
          6. 移动平均滤波器,用于时间平滑轮廓
      5. opensmile可以提取的低级描述符:具体更多可参考https://blog.csdn.net/qq_22237367/article/details/80897271
      6. opensmile的整体数据流架构中数据内存是所有数据源、数据处理器和数据链接组件之间的中心链接。
      7. 默认特征集及其配置文件:对于音乐信息检索和语音处理常见任务,config文件夹中提供了一些示例配置文件。更多可以参考前面的链接。可自定义。例子:

        IS10_paraling.conf文件:

        1. 1582个特征。

        2. 生成的特征被保存在arff格式的文件中(针对weka

        3. 关于opensmile配置文件的说明也可参考上面的链接。

      8. 语音情感计算常用到opensmile进行语音特征的提取。
      9. 关于特征可参考:关于特征参考:https://zhuanlan.zhihu.com/p/42419513
    2. 实践:
      1.  opensmile简单执行:
        1. 需要先切换到SMILExtract.exe目录下
        2. 执行指令:
          1. 抽取特征:(使用命令行提取特征文件:每次只能处理一段音频,生成一个处理文件)
            SMILExtract -C 提取特征的配置文件 -I 数据源 -O 输出的特征文件
          2. 显示openSMILE使用信息并退出: 
            SMILExtract -h
      2. 生成简单场景的配置文件模板:

        1. 示例指令:

          1. SMILExtract -cfgFileTemplate -configDflt cWaveSource,cFramer,cEnergy,cCsvSink -l 1 2>F:\opensmile-3.0.1-win-x64\config\myconfig\myconfig1.conf
          2.     
          3. -cfgFileTemplate:opensmile生成一个配置文件的模板
          4.     -configDflt:用于指定以逗号分隔的组件列表
          5.     -l 1: 将日志级别设置为1,仅可收到如所指定的组件不存在的错误信息等
          6.     2> :将配置转储到文件myconfig1.conf中
          7.     如果要在生成的配置文件中添加描述各个选项行的注释,需要在指令中增加参数:-cfgFileDescriptions
        2. 生成的配置文件解析:

          1. 文件中注释以;或//开头

          2. 第一部分包含的是配置文件的组件:包含组件管理器的配置,该配置确定在调用SMILExtract时实例化哪些组件。总是必须有一个cDataMemory组件,然后是其他组件。在[ ]中给出的名称指定组件实例的名称,该名称在一个配置中必须是唯一的。

          3. 第二部分就是对各组件的配置:[实例名:组件类型]

          4. 配置组件连接:

            1. 通过分配dataReader和dataWriter组件并设置名为数据存储器“levels”实现

            2. 可以为writer level选择任意名称。因为dataWriters会在数据存储区注册并创建您为writer.dmLevel的level。然后通过reader.dmLevel的读取level来连接组件。

            3. 规则:

              1. 对于一个level,只有一个writer可以存在,即只有一个组件可以写入一个level。

              2. 一个组件可以从多个level读取,如果您指定多个level名称用“;”隔开,比如reader.dmLevel = energy;loudness。从energy和loudness level中读取数据。数据将以列的形式串联。

          5. 此种方法生成的配置文件中输入文件名是固定的:filename = input.wav,输出文件名在cscSink组件下
            1. 如果想在cmd命令行中指定输入,输出文件名,则修改配置为:
              1. 输入文件名:filename = \cm[inputfile(I):file name of the input wave file]
              2. 输出文件名:filename = \cm[outputfile(O):file name of the output CSV file]
            2. 修改后的测试指令 :
              SMILExtract -C 配置文件路径  -I 输入文件路径 -O 输出文件路径
      3. 更多关于配置文件:
        1. 查看配置文件的可用选项(即可以通过命令行进行配置的):
          SMILExtract -C F:\opensmile-3.0.1-win-x64\config\is09-13\IS10_paraling.conf -ccmdHelp
        2.  关于配置文件中更多组件:frameModeFunctionalsConf是最重要的选项。它控制着函数组件运作的时间单位 具体使用可参考:https://blog.csdn.net/lccever/article/details/78743632
        3. 一些配置文件的作用:
          1. chroma_ff.conf:从一个短时FFT谱(窗口大小为50ms,速率为10ms,高斯窗口)计算音乐色度特征(12个半色调特征)。该频谱图使用三角滤波器缩放到半音频率轴。
          2. 用于提取韵律特征的示例配置文件:prosodyAcf.conf,prosodyShs.conf。提取基频(F0),发声概率,响度轮廓
          3. 情感识别特征提取:emo IS09.conf:包含对LLDs应用统计函数得到的384个特征。该特征被保存在Arff格式(针对WEKA)
          4. 后缀_sma表示它们是通过窗口长度为3的移动平均滤波器进行平滑。附加到sma的后缀_de表示当前特征是低级描述符平滑后的一阶delta系数(微分)。
      4. 入门级使用可参考:openSMILE语音特征提取工具的使用_BBJG_001的博客-CSDN博客_opensmile音频特征提取​​​​​​
      5. 关于组件的更多使用可查看手册(手册地址:https://audeering.github.io/opensmile/_components/cMfcc.html?highlight=cmfcc)如mfcc组件
        1. 作用:计算mel频率倒谱系数(MFCC),IDCT用于从频谱域到倒谱域的转换
        2. 属性:
          1. firstMfcc:第一个要计算的MFCC
          2. lastMfcc :要计算的最后一个MFCC
          3. nMfcc:指定MFCC的数量
          4. nBands:计算逆MFCC时要创建的mel/bark频带数(必须与执行正向变换的频带数相同)。    

        (注所有执行都需要先跳转到SMILExtract.exe所在路径下打开cmd) 

  • 相关阅读:
    numpy.where
    三、T100应付管理之采购应付-入库应付管理篇
    思科端口安全怎么关闭配置静态地址?
    rk版本编译系统
    匈牙利算法讲解
    B3627 立方根
    《Linux运维总结:内网服务器通过代理访问外网服务器(方法一)》
    001从零开始入门Entity Framework Core——基础知识
    golang实现andflow流程引擎
    go的netpoll学习
  • 原文地址:https://blog.csdn.net/weixin_45647721/article/details/126700240