pyAudioAnalysis训练arousal和valence

1、安装pyAudioAnalysis(安装pyAudioAnalysis时需要的安装包

2、分析音频和预测

from pyAudioAnalysis import audioTrainTest as aT

# 根据音频特征生成model(svmEmotion_00)
# ["wavs/LJ", "wavs/SP251"]为两个说话人的音频列表
aT.extract_features_and_train(["wavs/LJ", "wavs/SP251"], 1.0, 1.0, aT.shortTermWindow, aT.shortTermStep, "svm", "data/svmEmotion_00", False)

# 根据已有的model(svmEmotion_00)预测音频属于哪个说话人
info = aT.file_classification("wavs/SP25111371.wav", "data/svmEmotion_00","svm")
print('result:{}'.format(info))

这里有必要说一下,通过extract_features_and_train方法得到的model不能对file_regression进行音频分析(因为model没有参数对应的特征值),哎,file_regression方法里面用的也是model_name,但是就是这么坑,其实不是你想的那个model_name(准确说应该是regression_model_name,嗯,就是下面要训练的这个)

3、根据已有的音频和对应的特征值训练model,然后测试音频的arousal和valence值

# 通过自回归训练预测情感特征(
# arousal:情感的强度(平静→兴奋),
# valence:情感的愉悦程度,
# emotion:情感类型{"fru": 0, "sad": 1, "exc": 2, "neu": 3, "xxx": 4, "ang": 5, "hap": 6, "fea": 7, "dis": 8, "sur": 9, "oth": 10})
aT.feature_extraction_train_regression("wavs/session", 1, 1, aT.shortTermWindow, aT.shortTermStep, "svm", "data/svmSpeechEmotion02", False)
	
# 预测音频的arousal和valence值
R, regressionNames = aT.file_regression("wavs/test01.wav", "data/svmSpeechEmotion02", "svm")
for i in range(len(R)):
    print("{0:s}\t{1:.3f}".format(regressionNames[i], R[i]))
    

说明:要训练的音频文件和.csv文件都要放在同一个"wavs/session"文件侠下,不同的特征值放不同的.csv文件中(格式为“有后缀的音频文件名,特征值”,并不是pyAudioAnalysis作者说的不需要后缀,不然会报异常,当然你可以自己改源码)

感觉效果还可以接受,如果你能接受它长时间训练的话……
我自己训练的regression_model提取码:eb54
可能是训练的音频少(150个左右),得到的emotion值都差不多

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值