首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何教机器更好地理解人类情感?

如何教机器更好地理解人类情感?

作者头像
AI研习社
发布2019-10-14 16:21:25
6820
发布2019-10-14 16:21:25
举报
文章被收录于专栏:AI研习社AI研习社AI研习社

原标题 | Building a Vocal Emotion Sensor with Deep Learning

作 者 | Alex Muhr

翻 译 | 刁新强、david95、邺调

审 校 | 鸢尾、唐里、Pita

注:敬请点击文末【阅读原文】访问文中相关链接,PC查看体验更佳。

人类的情感表达是多面而且复杂的。比如说,一个说话的人不仅通过他的言语,还有他说话的节奏,语调,脸部表情,和身体语言来表达自己。这就是大家为什么在谈生意时更喜欢面对面,而不是通过电话会议,或者更喜欢通过电话会议而不是通过电子邮件或短信。交流的时候,我们离得越近,沟通传达的信息越多。

声音识别软件在这几年已经很先进了。声音识别技术现在已经能把这个任务做得非常好了:将人的声音识别出来,并将其拼凑到一起,转换成单词和句子。然而,简单地将人讲的话转换成的文字,并不能把讲话者要表达的信息完全覆盖到。姑且不去考虑脸部表情和身体语言,即使和声音比起来,转换出的文字也非常难获取到人的情绪含义。

一开始的时候,我选择了构建一个声音情感感知器,因为做这样一个项目看起来非常好玩。不过,我再思考一下了这个问题,意识到通过声音去感知情绪还可以有一些非常有趣的应用。想象一下,如果你家里的智能设备能根据你的心情去播放歌曲:比如在你伤心的时候,播放充满正能量的歌曲;客户服务部可以通过情绪检测器来培训员工,或者通过它衡量一下顾客在服务之后是否变得愉悦了。

数据

用来构建情感分类器的数据集包含了这三个公开数据集: RAVDESS(需要非常简单地注册才能获取,https://smartlaboratory.org/ravdess), TESS(https://tspace.library.utoronto.ca/handle/1807/24487) 和 SAVEE(http://kahlan.eps.surrey.ac.uk/savee/Download.html)。这些数据集包含了按照情绪分类的音频:中性的,开心的,伤心的,害怕的,厌恶的,惊讶的。 这些数据集合在一起的话,我手头上拥有了160分钟时长的录音:由30个男女演员产生的4500个已经标注了情绪的录音文件。这些录音文件的内容是演员带着某种情绪倾向说出的简短句子。

SAVEE 数据集的演员们

特征提取

接下来,我必须找到可以从音频中提取的有用的特征。最初,我认为使用短时傅立叶变换来提取频率信息。然而,一些研究的主题表明,傅立叶变换是相当有缺陷的,当涉及到语音识别应用。傅立叶变换的原因,虽然是一个极好的声音物理表现,但并不代表人类如何感知声音。

原始音频波形。在这种形式下,分类是无用的。

从音频中提取特征的更好方法是使用MEL频率倒谱系数,或者简称MFCCS。这里提供了如何从音频导出MFCC的一个很好的解释(http://practicalcryptography.com/miscellaneous/machine-learning/guide-mel-frequency-cepstral-coefficients-mfccs/)。MFCCS试图以更好地对准人类感知的方式来表示音频。

从音频导出MFCCS需要决定使用多少个频段,以及时间段的广度。这些决定决定了输出mfcc数据的粒度。语音识别应用的标准实践是在20Hz-20KHz之间应用26个频率箱,并且仅使用前13个进行分类。最有用的信息是在较低的频率范围内,并且包括更高的频率范围常常导致较差的性能。对于时间步长,10到100毫秒之间的值是常见的。我选择用25毫秒。

用于过滤音频内容的Mel滤波器组。

一旦导出的MFCCS可以绘制在热图上并用于可视化音频。这样做不会揭示情感类别之间的任何明显差异。这并不是因为缺乏模式,而是因为人类没有被训练视觉识别这些微妙的情感差异。然而,从这些热图很容易看出男性和女性之间的差异。

快乐男性和女性演讲者的可视化MFCC。女性的声音中往往有更强烈的高频成分,如热图顶部较亮的颜色所示。

卷积神经网络的训练

通过推导mfcs,音频分类问题实质上被转化为图像识别问题。因此,在图像识别领域高效的工具、算法和技术在音频分类方面也非常有效。为了解决情绪分类的问题,我选择了使用卷积神经网络(CNN),因为这些已经被证明是有效的图像和音频识别。

  1. 切断所有的沉默。
  2. 随机选择若干0.4s窗口。
  3. 确定每个窗口的mfcs,生成13 x 16数组。
  4. 将mfcs缩放到0到1的范围。(这一步非常重要!它会阻止模型适应录音的音量。)
  5. 将每个窗口与源文件的情感标签关联。

预处理完成后,我生成了75000个标记为0.4s的窗口用于培训,每个窗口由一个13x16数组表示。然后我对CNN进行了25个时期的数据培训。

模型测试

为了看到模型在测试集上的表现,我用了和创建训练数据类似的处理流程。每个文件的处理过程如下:

  • 1.去掉所有的沉默
  • 2.创建滑动0.4s窗户,每次滑动的步长(step size)是0.1s。(例如 第一个窗口的范围是从0s到0.4s,第二个从0.1s到0.5s,等等)
  • 3.检测确定每个窗口的mfcc,缩放从0到1
  • 4.将每个窗口分类,并输出softmax
  • 5.为每个窗口聚合预测
  • 6.聚合后的最大的类就是最终的结果

将这种处理过程应用到测试集中的所有889个文件中,可以得到一个总体的精确度:83%。我非常怀疑我应该亲自标记这些文件,也能得到83%的精确度。每个具体表情的精确度显示在下面的条形图中:

总结

这篇博客文章可能会让人觉得构建、培训和测试模型是简单而直接的。我可以向你保证,事实并非如此。在达到83%的准确率之前,有许多版本的模型表现得相当糟糕。在一次迭代中,我没有正确地缩放输入,这导致几乎预测测试集中的每个文件都是“惊讶”的。那么我从这次经历中学到了什么呢?

首先,这个项目是一个很好的演示,简单地收集更多的数据可以极大地提高结果。我的第一次成功的模型迭代只使用Ravdess数据集,大约1400个音频文件。仅用这个数据集我就可以达到67%的最佳精度。为了达到83%的准确率,我所做的就是将数据集的大小增加到4500个文件。

第二,我知道音频分类数据预处理是至关重要的。原始音频,甚至短时傅立叶变换,几乎完全没有用。当我学会了艰难的方式,适当的缩放可以使模型或打破模型。未能消除沉默是另一个简单的陷阱。一旦音频被正确地转换为信息特征,建立和训练一个深度学习模型就比较容易了。

为了包装,建立一个分类模型的语音情感检测是一个具有挑战性但有益的经验。在不久的将来,我可能会重温这个项目,以扩大它。我想做的一些事情包括:在更广泛的输入范围内测试模型,使模型适应更大范围的情感,并为云部署一个模型来进行实时情绪检测。

via https://towardsdatascience.com/building-a-vocal-emotion-sensor-with-deep-learning-bedd3de8a4a9

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 AI研习社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数据
  • 特征提取
  • 卷积神经网络的训练
  • 模型测试
  • 总结
相关产品与服务
语音识别
腾讯云语音识别(Automatic Speech Recognition,ASR)是将语音转化成文字的PaaS产品,为企业提供精准而极具性价比的识别服务。被微信、王者荣耀、腾讯视频等大量业务使用,适用于录音质检、会议实时转写、语音输入法等多个场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档