所以我有这个Mono音频文件,其中包含人们说话,说话暂停,然后他们再次说话。当他们说话的时候,他们不说话的时候,有些孩子不时在后台哭泣,汽车突然发出尖叫声,你在外面时听到的声音。
我的目标是在谈话时保留这些部分,并在他们不说话时剪掉这些部分。没有必要过滤背景噪音。
基本上我的最终目标是拥有这样的剪切列表
Start in seconds, End in seconds
我尝试了什么?
我的问题是我得到了很多误报和漏报。它似乎在没有声音时识别声音,反之亦然。
这可能是一个训练有素的模型(我使用决策树)或我是否需要采取其他措施来获得更好的结果?
答案 0 :(得分:0)
关于语音的常见误解是它被视为不相关的数据帧序列。语音的核心属性是它是一个连续的过程,而不仅仅是一组数据点。
任何合理的VAD都应该考虑到这一点,并使用像HMM这样的面向时间的分类器。在您的情况下,任何需要时间考虑的分类器都会是一个简单的基于能量的语音活动检测,它可以监控背景级别,或者基于GMM-HMM的VAD会比任何静态分类器更好。
有关简单算法的说明,您可以查看Wikipedia。
如果您正在寻找一个优秀的VAD实现,您可以在WebRTC项目中找到一个,这个VAD是由Google开发的:
https://code.google.com/p/webrtc/source/browse/trunk/webrtc/common_audio/vad/