什么时候笑轨道踢?


14

我的一个周末项目使我进入了信号处理的深水领域。与我所有需要一些重型数学的代码项目一样,尽管缺乏理论基础,但我很乐于尝试解决方案,但是在这种情况下,我没有任何建议,并且希望就我的问题提供一些建议,即:我正试图弄清楚电视观众在现场观众何时笑。

我花了很多时间阅读用于检测笑声的机器学习方法,但意识到这与检测单个笑声有关。一次有200个笑声的人会有不同的声音特性,我的直觉是,应该通过比神经网络更粗略的技术来区分他们。不过,我可能完全错了!希望能对此事有想法。

到目前为止,这是我一直在尝试的方法:我将最近一集的《星期六夜现场》(Saturday Night Live)中的一小段节录切成两秒的片段。然后,我将这些标记为“笑”或“不笑”。然后,我使用Librosa的MFCC特征提取器对数据运行了K-Means聚类,并获得了良好的结果-两个聚类非常整齐地映射到我的标签上。但是,当我尝试遍历较长的文件时,预测并没有成立。

我现在要尝试的是:创建这些笑声片段时,我将更加精确。我将不进行盲目拆分和排序,而是手动提取它们,以便没有对话会污染信号。然后,我将它们分成四分之一秒剪辑,计算其中的MFCC,然后使用它们来训练SVM。

我现在的问题是:

  1. 这有道理吗?

  2. 统计资料对您有帮助吗?我一直在Audacity的频谱图查看模式中滚动浏览,我可以很清楚地看到发生笑声的地方。在对数功率谱图中,语音具有非常独特的“皱纹”外观。相反,笑声则相当均匀地覆盖了很广的频率范围,几乎就像是正态分布一样。甚至可以通过掌声所代表的频率范围更有限的方式在视觉上将掌声与笑声区分开。这让我想到了标准偏差。我看到有一个叫做Kolmogorov–Smirnov的测试,在这里可能有用吗? 对数功率谱图 (您可以在上图中看到笑声,因为橙色的墙壁撞到了其中的45%。)

  3. 线性声谱图似乎表明笑声在较低频率下更具活力,并在较高频率下逐渐消失-这是否意味着它相当于粉红噪声?如果是这样,那可以成为这个问题的立足点吗? 频谱图

如果我误用了任何行话,我深表歉意。我已经在Wikipedia上花了很多时间,如果碰到一些混乱也不会感到惊讶。


1
我同意“不需要神经网络来获得可靠的笑声检测器”。考虑到如果您是对的,并且笑声轨迹是iid笑声的(加权)总和,我也同意您向信号发出Kolmogorov的信号,那么您应该会获得某种正常的功能。也许您仍然想提高频率分辨率。顺便说一句,对于那些“不喜欢” DSP的人,您的行话是很好的:)可悲的是,我不是音频专家,所以我可能不是很有帮助。
MarcusMüller17年

我很乐意提供帮助。您有任何训练数据吗?最重要的事情之一是数据标记。垃圾进垃圾出。一种最简单,最有效的方法是训练一个框架袋GMM并评估可能性。
jojek

您可能需要先检查一下,是否可以通过在给定时间检查信号的功率/幅度来将笑声与静默分开。让您有可能限制发生“事情”的时刻。然后,您可以尝试查看频率的分布。例如,语音可能有一些独特的尖峰(不必关心这些峰到底在哪里,只要它们存在),而笑声却如您所说是一致的。跟踪此值可能会产生一个值,以决定是否发笑。(您需要音量信息,以确保您没有统一的沉默)
user6522399

Answers:


0

根据您的观察,可以充分区分信号的频谱,可以将其用作对笑声进行分类的功能。

您可以通过多种方式查看问题。

方法1

在一种情况下,您只能查看MFCC的向量。并应用它可以将任何分类。由于您在频域中有很多系数,因此您可能希望借助基于此的增强算法(例如Adaboost)查看Cascade分类器的结构,因此可以在语音课和笑课之间进行比较。

方法#2

您意识到语音基本上是随时间变化的信号。因此,一种有效的方法是查看信号本身的时间变化。为此,您可以将信号分成几批样本,然后查看该时间段的频谱。现在,您可能会意识到,在规定的持续时间内,笑声可能会具有更多重复的模式,因为语音固有地具有更多的信息,因此频谱变化会更大。您可以将其应用于HMM类型的模型,以查看您是否在某些频谱上始终保持在同一状态或是否不断变化。在这里,即使偶尔说话的频谱类似于笑声,也会有更多的时间变化。

方法3

强制对信号应用LPC / CELP类型的编码,并观察残留物。CELP编码为语音生成提供了非常准确的模型。

从此处参考:密码编码理论

在语音信号的短期预测和长期预测之后,语音信号中的冗余几乎被去除,并且残差几乎没有相关性。然后搜索合成语音的激励,并从固定码本中搜索码本索引和增益。最佳码本索引选择准则是基于本地合成语音和原始语音信号之间的MMSE。

简而言之,在除去分析仪预测的所有语音之后,剩下的就是残留的残渣,这些残渣被传输以重建精确的波形。

这对您的问题有什么帮助?基本上,如果您使用CELP编码,则信号中的语音大部分会被去除,剩下的就是残留。在笑声的情况下,可能会保留大部分信号,因为CELP无法通过声道建模来预测这种信号,因为单个语音的残留量很小。您还可以在频域中分析此残留物,以查看它是笑声还是语音。


0

大多数语音识别器不仅使用MFCC系数,而且使用MFCC级别的一阶和二阶导数。我猜想这种情况在这种情况下非常有用,可以帮助您区分笑声和其他声音。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.