openSMILE语音特征提取工具的使用

索引

  • openSMILE语音特征提取工具的使用
    • 一、openSMILE简介
    • 二、openSMILE工作机制
    • 三、openSMILE Windows安装
    • 四、 特征提取实现
    • 五、 使用python编程批量提取语音特征

openSMILE语音特征提取工具的使用

参考文献
https://zhuanlan.zhihu.com/p/69170521

一、openSMILE简介

openSMILE是一个语音特征提取的工具,在语音识别(特征提取前端、关键字识别等.),情感计算(情感识别、敏感虚拟代理等),音乐信息检索(和弦标注、节拍跟踪、起跳检测等)等领域有着较为广泛的应用。
官网 https://www.audeering.com/
该工具官网称该工具可以计算多达6000个音频特征,并可以识别情感的细微差别,以匹配他们与具体的情感。
openSMILE可以处理的视频文件格式包括:

•RIFF-WAVE (PCM) (MP3, MP4, OGG等需要使用转换器)
•逗号分隔值(CSV)
•HTK参数les
•WEKA的ARFF格式
•通过openCV的视频流

openSMILE可以提取一下音频特征

• Frame Energy
• Frame Intensity / Loudness (approximation)
• Critical Band spectra (Mel/Bark/Octave, triangular masking lters)
• Mel-/Bark-Frequency-Cepstral Coecients (MFCC)
• Auditory Spectra
• Loudness approximated from auditory spectra.
• Perceptual Linear Predictive (PLP) Coecients
• Perceptual Linear Predictive Cepstral Coecients (PLP-CC)
• Linear Predictive Coecients (LPC)
• Line Spectral Pairs (LSP, aka. LSF)
• Fundamental Frequency (via ACF/Cepstrum method and via Subharmonic-Summation (SHS))
• Probability of Voicing from ACF and SHS spectrum peak
• Voice-Quality: Jitter and Shimmer
• Formant frequencies and bandwidths
• Zero- and Mean-Crossing rate
• Spectral features (arbitrary band energies, roll-o points, centroid, entropy, maxpos, minpos, variance (=spread), skewness, kurtosis, slope)
• Psychoacoustic sharpness, spectral harmonicity
• CHROMA (octave warped semitone spectra) and CENS features (energy normalised and smoothed CHROMA)
• CHROMA-derived Features for Chord and Key recognition
• F0 Harmonics ratios

基于openCV的库,openSMILE可以提取以下视频特征

• HSV colour histograms
• Local binary patterns (LBP)
• LBP histograms
• Optical fow and optical fow histograms
• Face detection: all these features can be extracted from an automatically detected facial region, or from the full image.

二、openSMILE工作机制

openSMILE工具自带多种语音特征提取的配置文件,通过调用配置文件,可以按配置文件的预设提取响应的语音特征。openSMILE中包含以下的配置文件供使用者选择。

• Chroma features for key and chord recognition
• MFCC for speech recognition
• PLP for speech recognition
• Prosody (Pitch and loudness)
• The INTERSPEECH 2009 Emotion Challenge feature set
• The INTERSPEECH 2010 Paralinguistic Challenge feature set
• The INTERSPEECH 2011 Speaker State Challenge feature set
• The INTERSPEECH 2012 Speaker Trait Challenge feature set
• The INTERSPEECH 2013 ComParE feature set
• The MediaEval 2012 TUM feature set for violent scenes detection.
• Three reference sets of features for emotion recognition (older sets, obsoleted by the new INTERSPEECH challenge sets)
• Audio-visual features based on INTERSPEECH 2010 Paralinguistic Challenge audio features.

三、openSMILE Windows安装

可以从 https://www.audeering.com/opensmile/ 下载到openSMILE的压缩包文件,Linux的安装文件也可以在该网址下get到,不过笔者没有实践过如何安装。Windows下解压压缩包即可使用,比较不人性化的一点是,该工具需要调用命令行来完成相应的功能。没有配置人机交互界面。

四、 特征提取实现

openSMILE语音特征提取的命令如下

SMILExtract_Release -C 配置文件路径 -I “要处理的音频路径” -O “要保存特征向量的路径及文件名”

首先需要调出cmd命令行界面,接着再切换到处理文件SMILExtract.exe所在的目录下 ,执行特征提取命令即可在指定位置生成提取的特征文件,这里以2009年情感挑战赛特征集的配置文件为例举例实现。
openSMILE语音特征提取工具的使用_第1张图片
生成的处理文件如下所示
openSMILE语音特征提取工具的使用_第2张图片
生成的特征文件包括两部分,第一部分是关于各个维度特征的说明,如上图缩水。
openSMILE语音特征提取工具的使用_第3张图片
第二部分是生成的特征向量,如上图所示。
使用命令行提取特征文件比较不方便的一点是,每次只能处理一段音频,生成一个处理文件。

五、 使用python编程批量提取语音特征

参考文献
https://blog.csdn.net/cg896406166/article/details/81066791

  1. 读取指定文件中所有的语音文件,依次处理,将生成的特征文件保存到另一个指定文件中,代码如下
import os
audio_path = 'C:/Users/Administrator/Desktop/download/wav'  # 音频文件所在目录
output_path='C:/Users/Administrator/Desktop/download/rebuild'   # 特征文件输出目录
audio_list=os.listdir(audio_path)   # 生成所有音频文件文件名的列表
features_list=[]
for audio in audio_list:    # 遍历指定文件夹下的所有文件
    if audio[-4:]=='.wav':
        this_path_input=os.path.join(audio_path, audio)  # 打开一个具体的文件,audio_path+audio
        this_path_output=os.path.join(output_path,audio[:-4]+'.txt')
        # &&连续执行;C: 进入C盘内;进入opensmile中要执行的文件的目录下;执行文件 -C 配置文件 -I 语音文件 -O 输出到指定文件
        cmd = 'C: && cd C:/Program/opensmile-2.3.0/bin/Win32 && SMILExtract_Release -C C:/Program/opensmile-2.3.0/config/IS09_emotion.conf -I ' + this_path_input + ' -O ' + this_path_output
    os.system(cmd)
print('over~')
  1. 批量处理生成特征的文本文件,提取组合出可以用来学习处理的矩阵文件。代码如下
import os
import pandas as pd

txt_path = 'C:/Users/Administrator/Desktop/download/rebuild'    # 特征文本文件所在目录
txt_list = os.listdir(txt_path)
features_list = []
for file in txt_list:    # 遍历指定文件夹下的所有文件
    if file[-4:] == '.txt':
        file_path = os.path.join(txt_path, file)
        # 打开输出文件
        f = open(file_path)
        # 最后一行是特征向量,取最后一行
        last_line = f.readlines()[-1]
        f.close()
        features = last_line.split(',')
        # 最后一行特征行的第一个元素为‘unknown’,最后一个为‘?’,都不是对应的特征,要去掉
        features = features[1:-1]
        features_list.append(features)
data_m = pd.DataFrame(features_list)
data_m.to_csv(os.path.join('C:/Users/Administrator/Desktop/download', 'test_data.csv'), sep = ',', header=False, index=False)
print('over')

这样特征文件就生成完成了,生成的特征文件如下图所示
openSMILE语音特征提取工具的使用_第4张图片

你可能感兴趣的:(情感识别,Python)