通过移动和网络的语音/语音解决方案进行情感检测

时间:2016-12-21 06:48:58

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

我一直在通过移动设备(iOS)和网络上的语音/语音解决方案搜索情感检测。

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

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

如果您有关于此相关的任何信息,有人可以分享。

是否有任何OPEN SOURCE for iOS for Emotion分析和通过语音/语音检测,请告诉我。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

正如Dmytro Prylipko所说,非常怀疑是否存在任何来自言语的情感识别的开源库。

您可以编写自己的解决方案。这并不难。麻烦的是,如前所述,适当的训练和/或排卵需要花费大量的时间和精力。

我会给你一个简短的理论,你应该如何开始编写算法,但培训等等就在你身上。

第一个大麻烦是不同的人不同地表达他们的情绪。 举例来说:一个震惊的人会因过度苛刻的判决而感到震惊,而另一个人会冻结"冻结"他们的反应听起来很平坦(几乎像机器人一样)。 因此,您需要大量的模板来学习如何按情感对输入语音进行分类。

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

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

这很容易做到。您可以使用神经网络或简单分支或其他任何方式。

通过结合情境识别和韵律的情感,你将能够同时认识到人是否感恩和惊讶。

现在,要识别韵律中的情绪,你必须得到韵律参数和其他一些参数。

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

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

例如,当有人收到他/她非常喜欢的礼物时,"谢谢你"听起来很长。它的音高也会高于那个人常用的演讲。

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

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

您可以通过直接比较已知情绪的曲线来解决这个问题,或者您可以使用近似来从韵律曲线向量中获取系数。平方函数对正常的语音韵律有好处(没有特别的情感)。所以一些高阶多项式应该这样做。因此,您可以获得多项式的系数,并使用它们来获得整个句子或短语中继的情感。

句子中的单个词也是如此。您可以获得每个音素或音节的音高,或者仅获得音高曲线的音高。每20毫秒这个词。然后你要么计算几个系数以使你认为对你足够好的多项式近似,或者你取整条曲线并将其标准化为例如30点使用它与识别。

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

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

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

麻烦的是,你需要一个带有背景和情感的语音数据库,并且需要清晰的手动分类,以便你的算法可以比较。

如果使用多项式而不是整条曲线,可以使用系数阈值进行一些识别,但结果会有点不稳定。使用coeffs的真正借口是你不需要知道有问题的单词有多长。即同一个多项式应该用于一个带有2个音素的单词和一个带有5个的单词。(应该可以工作)

你知道,理论很简单。使用语音识别,测量语速和每个单词的持续时间,使用FFT为每个单词构建整个短语和音高曲线的音高曲线,对现成数据库和输入进行一些比较。而沃拉,情感得到认可。

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

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

教这样的机器是一件很重要的事。

哦,是的,我几乎忘记了,情感不仅仅是,或者有时根据音调变化而转移,有时它只是发音这个词的方式。

因此,对于某些情况,您可能需要LPC或其他一些系数来显示关于单词中音素如何发声的更多信息。或者您需要从FFT中查看其他谐波,而不仅仅是表示激励序列间距的谐波。

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

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

您可以尝试将我写的一些内容整合到Sphinx中,开发基于情感的语音模型,并将情感识别直接引入到狮身人面像VR算法中。

如果你确实需要这个,我建议你学习足够的DSP来编写自己的算法,然后付钱给某人用有声读物,广播剧和类似的东西(使用你提供的工具)制作初始数据库。

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