工具学习——使用OpenSmile提取音频特征

OpenSmile介绍

  • openSMILE(open-source Speech and Music Interpretation by Large-space Extraction)是一个开源工具包,用于语音和音乐信号的音频特征提取和分类。openSMILE广泛应用于情感计算的自动情感识别。openSMILE完全免费用于研究目的。

下载和安装

  • 在下述网页下载opensmile的安装包,链接
  • 然后进入“/home/public/gl/MultiDetection/alzheimers-dementia-master/opensmile-master/”
    在这里插入图片描述
  • 输入如下指令
bash build.sh
  • 运行结果如下
    在这里插入图片描述
  • 将这个二进制执行文件在环境路径中添加。
export PATH="/home/public/gl/MultiDetection/alzheimers-dementia-master/opensmile-master/build/progsrc/smilextract:$PATH"

在这里插入图片描述

  • 使用如下指令进行设置测试,输出如下
SMILExtract -h

在这里插入图片描述

提取特征

格式转换

  • 我需要处理的是mp3文件,而opensmile仅仅支持处理wav文件,所以这里需要将wav文件转为mp3文件
  • 这里需要调用ffmpeg进行格式转换,对应的脚本如下
#!/bin/bash

# 定义搜索和转换的根目录
SEARCH_DIR="/home/public/gl/Dataset/ADDReSS-M/"

# 使用 find 命令查找所有的 .mp3 文件
# 然后使用 while 循环和 read 命令逐一处理它们
find "$SEARCH_DIR" -type f -name "*.mp3" | while IFS= read -r mp3file; do
    # 使用参数替换来生成新的 .wav 文件名
    wavfile="${mp3file%.mp3}.wav"

    # 检查MP3文件是否存在
    if [ ! -f "$mp3file" ]; then
        echo "The file $mp3file does not exist, skipping."
        continue
    fi

    # 调用 ffmpeg 进行转换
    ffmpeg -i "$mp3file" "$wavfile" < /dev/null && echo "Converted $mp3file to $wavfile"

    # 如果不需要保留原MP3文件,取消下面一行的注释
    # rm "$mp3file"
done

echo "All MP3 files have been converted to WAV format."
  • 输出效果如下

在这里插入图片描述

特征提取

尝试一
  • 这里直接运行了下述脚本,遍历所有的wav文件,并将特征进行保存,脚本代码如下
#!/bin/bash

# openSMILE的配置文件路径
SMILE_CONFIG="/home/public/gl/MultiDetection/alzheimers-dementia-master/opensmile-master/config/is09-13/IS13_ComParE.conf"
# 原始数据集的根目录
SOURCE_DIR="/home/public/gl/Dataset/ADDReSS-M/"
# 特征文件保存的根目录
FEATURE_DIR="./ADDReSS-M_features"

# 创建特征文件的保存目录
mkdir -p "$FEATURE_DIR"

# 递归地查找所有的WAV文件
find "$SOURCE_DIR" -type f -name "*.wav" | while read -r wavfile; do
  # 计算相对路径
  relative_path="${wavfile#$SOURCE_DIR}"
  # 获取不带扩展名的文件名
  base_name="$(basename "$relative_path" .wav)"
  # 获取不带文件名的目录路径
  dir_path="$(dirname "$relative_path")"

  # 在特征文件目录中创建相同的目录结构
  mkdir -p "$FEATURE_DIR/$dir_path"

  # 设置输出文件的完整路径
  output_file="$FEATURE_DIR/${dir_path}/${base_name}.csv"

  # 使用openSMILE处理WAV文件
  SMILExtract -C "$SMILE_CONFIG" -I "$wavfile" -O "$output_file"
  echo "Features extracted for $wavfile and saved to $output_file"
done

echo "Feature extraction complete for all WAV files."
  • 输出结果如下
    在这里插入图片描述
  • 比较害怕及格diable对结果有什么影响,这里仔细地搜索相关资料进行学习
    • 这个东西是用来设置输出文件样式的,如果我只需要csv的数据并不需要使用
      在这里插入图片描述
正常使用手段
  • 需要指定提取音频特征的配置文件、输入文件和输出文件,具体使用样例如下
SMILExtract -C config/demo/demo1_energy.conf(配置文件) -I example-audio/opensmile.wav(输入文件) -O opensmile.energy.csv(输出文件)
  • 运行结果如下
    • 仅仅收到了MSG,运行成功
    • 收到ERROR表示提取失败

在这里插入图片描述

创建自己的配置文件

  • 我们将使用此函数生成我们的第一个配置文件,该文件将能够读取波形文件、计算帧能量并将输出保存到 CSV 文件
  • 具体指令如下
SMILExtract -cfgFileTemplate -cfgFileDescriptions -configDflt cWaveSource,cFramer,cEnergy,cCsvSink -l 1 2> myconfig/demo1_descriptions.conf

在这里插入图片描述

配置文件分析

  • 第一部分是基本的配置
    在这里插入图片描述
  • 第二部分是当前配置文件所对应的不同的组件信息
    • 可以在这里修改不同组件的参数,比如说每一帧的长度等 在这里插入图片描述
常见的特征
  • Chroma features for key and chord recognition
    用于键和和弦识别的色度功能

  • MFCC for speech recognition
    用于语音识别的 MFCC

  • PLP for speech recognition
    用于语音识别的 PLP

  • Prosody (Pitch and loudness)
    韵律(音高和响度)

  • The INTERSPEECH 2009 Emotion Challenge feature set
    INTERSPEECH 2009 情感挑战赛功能集

  • The INTERSPEECH 2010 Paralinguistic Challenge feature set
    INTERSPEECH 2010 副语言挑战赛功能集

  • The INTERSPEECH 2011 Speaker State Challenge feature set
    INTERSPEECH 2011 Speaker State Challenge 功能集

  • The INTERSPEECH 2012 Speaker Trait Challenge feature set
    INTERSPEECH 2012 Speaker Trait Challenge 功能集

  • The INTERSPEECH 2013 ComParE feature set
    INTERSPEECH 2013 ComParE 功能集

  • The MediaEval 2012 TUM feature set for violent scenes detection.
    用于暴力场景检测的 MediaEval 2012 TUM 功能集。

  • Three reference sets of features for emotion recognition (older sets, obsoleted by the new INTERSPEECH challenge sets)
    用于情感识别的三个参考功能集(较旧的功能集,已被新的 INTERSPEECH 挑战集淘汰)

  • Audio-visual features based on INTERSPEECH 2010 Paralinguistic Challenge audio features.
    基于INTERSPEECH 2010副语言挑战赛音频特征的视听特征。

  • 这里不同特征需要自己去了解,相关说明文档链接\

使用Gnuplot可视化特征

安装

  • 为了使用 gnuplot 可视化特征轮廓,您必须安装 gnuplot 4.6 或更高版本。在 Linux 上,gnuplot 既可以通过发行版的包管理器安装(在 Ubuntu 上:), sudo apt-get install gnuplot-nox 也可以从源代码编译(http://www.gnuplot.info)。对于 Windows,gnuplot 二进制文件可从项目网页获得。

使用

  • 这里需要写对应的plt脚本,然后调用gnuplot进行执行。具体就给了三个样例,分别是色度、频谱图还有响度曲线等,具体看官网就行。如果要自己画图,还是需要自己写的。
    在这里插入图片描述

总结

  • 关于音频特征,使用opensmile进行提取,还是挺快的,而且使用cpu就行,不需要使用gpu,下面就是尝试不同的音频特征就行。
  • 16
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值