我的一个周末项目使我进入了信号处理的深水领域。与我所有需要一些重型数学的代码项目一样,尽管缺乏理论基础,但我很乐于尝试解决方案,但是在这种情况下,我没有任何建议,并且希望就我的问题提供一些建议,即:我正试图弄清楚电视观众在现场观众何时笑。
我花了很多时间阅读用于检测笑声的机器学习方法,但意识到这与检测单个笑声有关。一次有200个笑声的人会有不同的声音特性,我的直觉是,应该通过比神经网络更粗略的技术来区分他们。不过,我可能完全错了!希望能对此事有想法。
到目前为止,这是我一直在尝试的方法:我将最近一集的《星期六夜现场》(Saturday Night Live)中的一小段节录切成两秒的片段。然后,我将这些标记为“笑”或“不笑”。然后,我使用Librosa的MFCC特征提取器对数据运行了K-Means聚类,并获得了良好的结果-两个聚类非常整齐地映射到我的标签上。但是,当我尝试遍历较长的文件时,预测并没有成立。
我现在要尝试的是:创建这些笑声片段时,我将更加精确。我将不进行盲目拆分和排序,而是手动提取它们,以便没有对话会污染信号。然后,我将它们分成四分之一秒剪辑,计算其中的MFCC,然后使用它们来训练SVM。
我现在的问题是:
这有道理吗?
统计资料对您有帮助吗?我一直在Audacity的频谱图查看模式中滚动浏览,我可以很清楚地看到发生笑声的地方。在对数功率谱图中,语音具有非常独特的“皱纹”外观。相反,笑声则相当均匀地覆盖了很广的频率范围,几乎就像是正态分布一样。甚至可以通过掌声所代表的频率范围更有限的方式在视觉上将掌声与笑声区分开。这让我想到了标准偏差。我看到有一个叫做Kolmogorov–Smirnov的测试,在这里可能有用吗? (您可以在上图中看到笑声,因为橙色的墙壁撞到了其中的45%。)
线性声谱图似乎表明笑声在较低频率下更具活力,并在较高频率下逐渐消失-这是否意味着它相当于粉红噪声?如果是这样,那可以成为这个问题的立足点吗?
如果我误用了任何行话,我深表歉意。我已经在Wikipedia上花了很多时间,如果碰到一些混乱也不会感到惊讶。