基于音频特征的情感识别

MELD这篇论文将介绍如何使用音频特征进行情感识别。我们将以 MELD 数据集为例,使用 Python 代码演示如何提取音频特征并将其用于情感分类。


友情链接:ACEJoy


 

数据集介绍

MELD (Multimodal EmotionLines Dataset) 是一个多模态情感数据集,包含 Friends 电视剧中的对话片段。每个片段都标注了说话人的情感和语句的情感倾向。

train_data=pd.read_csv('/content/MELD/data/MELD/train_sent_emo.csv')
valid_data=pd.read_csv('/content/MELD/data/MELD/dev_sent_emo.csv')
test_data=pd.read_csv('/content/MELD/data/MELD/test_sent_emo.csv')

上述代码展示了如何使用 pandas 库读取 MELD 数据集中的训练集、验证集和测试集。

音频特征提取

为了从音频数据中提取特征,我们使用 Librosa 库。Librosa 是一个强大的音频处理库,提供了许多用于特征提取的函数。

首先,我们定义一些特征提取的参数:

num_mfcc=40
sr=22050
hop_length=512
n_fft=2048
  • num_mfcc:MFCC 特征的数量,这里设置为 40。
  • sr:音频采样率,这里设置为 22050 Hz。
  • hop_length:帧移长度,这里设置为 512 个样本点。
  • n_fft:傅里叶变换的窗口大小,这里设置为 2048 个样本点。

接下来,我们遍历测试集中的所有音频文件,并提取以下特征:

  • 色度频率: 使用 librosa.feature.chroma_stft 函数提取。
  • 均方根能量: 使用 librosa.feature.rmse 函数提取。
  • 谱心: 使用 librosa.feature.spectral_centroid 函数提取。
  • 谱带宽: 使用 librosa.feature.spectral_bandwidth 函数提取。
  • 谱衰减点: 使用 librosa.feature.spectral_rolloff 函数提取。
  • 过零率: 使用 librosa.feature.zero_crossing_rate 函数提取。
  • MFCC: 使用 librosa.feature.mfcc 函数提取 40 个 MFCC 特征。
for audio_file in os.listdir('/content/drive/My Drive/MELD/test'):
  # ...
  y, sr = librosa.load(audio, mono=True)
  chroma_stft = librosa.feature.chroma_stft(y=y, sr=sr)
  rmse = librosa.feature.rmse(y=y)
  spec_cent = librosa.feature.spectral_centroid(y=y, sr=sr)
  spec_bw = librosa.feature.spectral_bandwidth(y=y, sr=sr)
  rolloff = librosa.feature.spectral_rolloff(y=y, sr=sr)
  zcr = librosa.feature.zero_crossing_rate(y)
  mfcc = librosa.feature.mfcc(y=y, sr=sr,n_mfcc=40)
  # ...

我们将所有提取的特征取平均值,并将它们与对应的情感标签一起保存到 CSV 文件中。

  to_append = f'{audio_file} {np.mean(chroma_stft)} {np.mean(rmse)} {np.mean(spec_cent)} {np.mean(spec_bw)} {np.mean(rolloff)} {np.mean(zcr)}'
  # ...
  to_append += f' {senti}'
  # ...
  with file:
    writer = csv.writer(file)
    writer.writerow(to_append.split())

情感分类

提取音频特征后,我们可以使用各种机器学习算法进行情感分类。常用的算法包括:

  • 支持向量机 (SVM)
  • 随机森林 (Random Forest)
  • 深度神经网络 (DNN)

我们可以使用训练集数据训练模型,并使用验证集数据评估模型性能。最后,我们可以使用测试集数据测试模型的泛化能力。

总结

本文介绍了如何使用音频特征进行情感识别。我们以 MELD 数据集为例,使用 Librosa 库提取了音频特征,并将它们保存到 CSV 文件中。最后,我们讨论了可以使用哪些机器学习算法进行情感分类。

参考文献

发表评论