【问题标题】:Emotion detection through voice/speech solution for Mobile and web [closed]通过移动和网络的语音/语音解决方案进行情绪检测[关闭]
【发布时间】:2023-03-19 19:55:01
【问题描述】:

我一直在寻找通过移动 (iOS) 和网络上的 voice/speech 解决方案的情绪检测。

我找到了Moodies-iOSVokaturi 解决方案,但它们不是免费的。

我找不到任何可用于集成到我的应用中并测试解决方案的开源或付费版本软件。

如果你有这方面的任何信息,有人可以分享一下。

是否有任何适用于 iOS 的 OPEN SOURCE 用于通过语音/语音进行情绪分析和检测,请告诉我。

【问题讨论】:

  • 我在这里找到了 openEAR iOS 的东西,politepix.com/openears/tutorial 这对从语音中寻找情感有用吗?
  • 是否有任何 OPEN SOURCE for iOS 用于通过语音/语音进行情绪分析和检测,请告诉我。

标签: ios objective-c machine-learning speech-recognition


【解决方案1】:

作为情感计算领域的前研究人员,我非常怀疑您能否找到一个现成的 iOS 开源解决方案,用于从语音中识别情感。主要原因是这是一项非常艰巨的任务,需要大量研究和大量适当的数据来训练模型。这就是为什么 BeyondVerbal 和 Vokaturi 等公司不与他人分享他们的模型的原因。因此,如果您能在开源中找到任何东西,您将非常幸运,我什至不是在谈论 iOS 解决方案。

我知道您可以使用一些工具包来完成此任务(即 openEAR 工具包),但要使用它构建一些东西,您需要该领域的专业知识和数据来训练模型。可以在此处找到完整的数据库列表:http://emotion-research.net/wiki/Databases。其中很多是免费提供的。

【讨论】:

    【解决方案2】:

    正如 Dmytro Prylipko 所说,是否存在任何用于语音情感识别的开源库是非常值得怀疑的。

    您可以编写自己的解决方案。这并不难。问题是,如前所述,适当的培训和/或垃圾处理需要大量的时间和精力。

    我会给你一个简短的理论,你应该如何开始编写算法,但是训练等等都是你的事。

    第一个大问题是不同的人用不同的方式传达他们的情绪。 例如:一个震惊的人会对他们的震惊做出过度惊呼的反应,而另一个人会“冻结”,他们的反应听起来很平淡(几乎像机器人一样)。 因此,您将需要大量模板来学习如何根据情绪对输入的语音进行分类。

    您可以通过使用上下文识别和语音韵律来消除一些困难。 我建议你这样做。

    首先制作一个算法,该算法将使用语音识别文本将其放入情感上下文中。例如。您可以使用人们在表达不同情绪时使用的特定单词和短语。

    这很容易做到。您可以使用神经网络或简单的分支等。

    因此,通过结合上下文识别和韵律中的情绪,您将能够同时识别一个人是否感恩和惊讶。

    现在,要从韵律中识别情感,您必须获取韵律参数和其他一些参数。

    例如,可以通过查看句子中特定单词的持续时间来识别某些情绪。

    所以你有句子和那个句子的文本。你知道正常说话的速度大约是每分钟200字。知道这个和句子中的单词数量,你就可以看出某人说话的速度有多快。然后你测量每个单词的持续时间并得到它的速度。通过了解语音的速度和单词的长度,您可以获得可用于分类的标准化比率,以确定最接近的情绪猜测。

    例如,当某人收到他/她非常喜欢的礼物时,“谢谢”会听起来很长。它的音调也会比那个人平时讲话的音调高。

    所以下一步是获取每个单词的平均音高,以查看它们之间的关系。因此,您将能够看到句子韵律是如何变化的。从低到高,反之亦然。

    此外,句子中的短语内韵律如何变化。

    您可以通过直接比较已知情绪的曲线来解决此问题,也可以使用近似法从韵律曲线向量中获取系数。平方函数适用于正常的语音韵律(没有特定的情绪)。所以应该做一些高阶多项式。所以,你可以得到多项式的系数,并用它们来得到整个句子或短语应该传递什么样的情绪。

    句子中的单个单词也是如此。你得到每个音素或音节的音高,或者只是音高曲线,例如每 20 毫秒的单词。然后你要么计算几个系数来近似你认为对你来说足够好的多项式,要么你取整条曲线并将其归一化为例如30 分即可用于识别。

    要直接比较曲线,您可以使用 Oleg Dopertchouk 的手势识别算法:

    http://www.gamedev.net/reference/articles/article2039.asp

    我在旋律的音高曲线上试过了,效果很好。

    问题是,您需要一个包含上下文和情感的语音数据库,以及清晰的手动分类,以便为您的算法提供一些可比较的东西。

    如果您使用多项式而不是整条曲线,您可以通过对系数使用阈值来进行一些识别,但结果会有点不稳定。使用 coeffs 的唯一真正借口是您不需要知道所讨论的单词有多长。 IE。同一个多项式应该适用于一个有 2 个音素的单词和一个有 5 个音素的单词。(应该可以)

    你看,一个理论既好又简单。使用语音识别,测量每个单词的语速和持续时间,使用 FFT 构建整个短语的音高曲线和每个单词的音高曲线,在准备好的数据库和输入之间做一些比较。和沃拉,情感得到了认可。

    但是你在哪里可以找到带有情绪标记的单词曲线的数据库。 例如,对于每种情绪,对于具有不同音素数量的单词,您需要至少一个音高曲线。至少一个,因为这个词是以元音开头还是以一个结尾,或者只是某人以不同的方式传递相同的情感,即使曲线代表同一个词,这一点很重要。

    好的,所以你可以说你可以制作一个。你会在哪里找到记录的样本来制作你的曲线或计算系数?嗯,也许是一些戏剧的录音。不错的主意,但表现出来的情绪与自然的情绪不一样。

    教一台机器这样的事情是一项艰巨的工作。

    哦,是的,我差点忘记了,情绪不仅,有时甚至完全通过音调变化来转移,有时只是单词的发音方式。

    因此,在某些情况下,您可能需要 LPC 或其他一些系数来显示有关单词中音素发音的更多信息。或者您需要考虑 FFT 中的其他谐波,而不仅仅是代表励磁列车音高的谐波。

    在不遵循我的提示并开发自己的算法的情况下,您可以做的最好的事情是使用 NLTK(自然语言工具包)来开发统计语音(情感丰富)模型并使用那里的算法(可能有点修改)来试着理解有问题的情绪。

    但我担心这会比从零开始更重要。据我所知,NLTK 不支持情绪。只是正常的语音韵律。

    您可以尝试将我写的一些东西集成到 Sphinx 中,以开发基于情感的语音模型并将情感识别直接引入 sphinxes VR 算法中。

    如果你真的需要这个,我建议你学习足够的 DSP 来编写自己的算法,然后花钱请人从有声读物、广播剧和类似的东西中创建你的初始数据库(使用你提供的工具)。

    在您的算法开始正常运行后,通过为用户提供纠正算法错误猜测的选项来实施自动学习。一段时间后,您将获得 90% 可靠的算法来识别语音中的情绪。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-10
      • 2011-10-26
      • 2010-10-01
      • 1970-01-01
      • 2017-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多