• opensmile python 提取wav文件的IS09特征


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

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

  • 相关阅读:
    SCAU 编译原理 实验1 词法分析实验
    Tomcat中GET和POST请求时乱码解决
    2020-RKT
    用MES系统预警监控
    软件测试|MySQL BETWEEN AND:范围查询详解
    防水出色的骨传导耳机,更适合户外运动,南卡Runner Pro 4S体验
    设计模式 21 状态模式
    c++标准库的错误代码
    I/O系统:I/O设备,I/O接口,I/O端口的编址,I/O指令、通道指令,I/O控制方式 ,补充:中断
    【自学开发之旅】基于Flask的web开发(一)
  • 原文地址:https://blog.csdn.net/weixin_45647721/article/details/127117070