opensmile python 提取wav文件的IS09特征

  1. 前置知识:
    1. IS09 、eGeMAPS是以整个句子进行提取的,没有进行分帧载提取。
    2. 特征维度:
      1. IS09->384维
      2. eGeMAPS->88维
  2. 直接上代码(根据自己的环境配置路径即可运行):
    """
    使用opensmile提取is09的特征集
    """
    import os
    import csv
    import numpy as np
    # 设置配置文件
    pathConfig = r"F:\opensmile-3.0.1-win-x64\config\is09-13\IS09_emotion.conf"
    # 设置exe的路径:
    pathExcuteFile = r"F:\opensmile-3.0.1-win-x64\bin\SMILExtract.exe"
    # 设置wav的路径:
    pathAudioRoot = r"E:\repository\Reappearance_Multimodality\code\wavs" # wav文件所在文件夹位置
    # 过度文件夹 用于保存csv特征
    file_path = r"E:\repository\code\csnd\corpus"  
    def excuteCMD(excutefile,config,audio,output):
        """
        定义调用cmd执行指令的函数
        """
        cmd=excutefile+" -C "+config+" -I "+audio+" -csvoutput "+output
        print(cmd)
        return cmd
    
    def csvtolist(namefront):
        """
        将csv转为list进行输出查看
        """
        with open(namefront) as f:
            f_csv=csv.reader(f)
            header=next(f_csv) # 取出标题  第一行
            l = []
            for row in f_csv:
                print("原始的:\n", row)
                l = row[0].split(';')[2:]  # 以‘;’进行分割,并去掉前两个元素 得到一条语音的特征  前两个特征是:'unknown';0.000000
                print(np.array(l).shape)
                print("去掉前两个元素并转为列表后:\n", l)
                float_l = list(map(float, l))  # 将字符串型的 元素转为 float 型的 #!!!类型转换的方法
                print("将列表里的字符串转为浮点型:\n", float_l)
                print(len(l))
                print(np.array(l).shape)
        os.remove(namefront)  # 读取完就删除原来的文件
        return float_l
    
    for wav in os.listdir(pathAudioRoot):
        pathaudio=os.path.join(pathAudioRoot,wav)
        print(pathaudio)
        csv_filedir = os.path.join(file_path, wav[0:-4]) + '.csv'  # 保存csv特征文件的路径
        print("保存路径:", csv_filedir)
        os.system(excuteCMD(pathExcuteFile,pathConfig,pathaudio,csv_filedir)) # 使用os.system执行指令
        l=csvtolist(csv_filedir)

    代码中已增加print查看细节。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值