基于音频特征的情感识别 2024-07-02 作者 C3P00 MELD这篇论文将介绍如何使用音频特征进行情感识别。我们将以 MELD 数据集为例,使用 Python 代码演示如何提取音频特征并将其用于情感分类。 数据集介绍 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 文件中。最后,我们讨论了可以使用哪些机器学习算法进行情感分类。 参考文献 MELD: A Multimodal Multi-Party Dataset for Emotion Recognition in Conversations Librosa: Audio and Music Analysis in Python
MELD这篇论文将介绍如何使用音频特征进行情感识别。我们将以 MELD 数据集为例,使用 Python 代码演示如何提取音频特征并将其用于情感分类。
数据集介绍
MELD (Multimodal EmotionLines Dataset) 是一个多模态情感数据集,包含 Friends 电视剧中的对话片段。每个片段都标注了说话人的情感和语句的情感倾向。
上述代码展示了如何使用 pandas 库读取 MELD 数据集中的训练集、验证集和测试集。
音频特征提取
为了从音频数据中提取特征,我们使用 Librosa 库。Librosa 是一个强大的音频处理库,提供了许多用于特征提取的函数。
首先,我们定义一些特征提取的参数:
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
函数提取。librosa.feature.mfcc
函数提取 40 个 MFCC 特征。我们将所有提取的特征取平均值,并将它们与对应的情感标签一起保存到 CSV 文件中。
情感分类
提取音频特征后,我们可以使用各种机器学习算法进行情感分类。常用的算法包括:
我们可以使用训练集数据训练模型,并使用验证集数据评估模型性能。最后,我们可以使用测试集数据测试模型的泛化能力。
总结
本文介绍了如何使用音频特征进行情感识别。我们以 MELD 数据集为例,使用 Librosa 库提取了音频特征,并将它们保存到 CSV 文件中。最后,我们讨论了可以使用哪些机器学习算法进行情感分类。
参考文献