在嘈杂的环境中检测语音

数据挖掘 Python 音频识别
2021-09-23 20:38:06

我正在尝试在嘈杂的环境中检测语音。这是新西兰郊区/灌木丛的音景。我们正在使用低质量的麦克风(但我认为这对我的问题没有影响)来定期录制音景以录制鸟鸣。主要挑战之一是出于隐私原因,我们需要删除所有潜在的人类声音。我被困在如何在嘈杂的环境中检测语音的问题上。

这是一个频谱图示例,其中一个人在距离麦克风 8 步远的地方讲话。录音中有噼啪声(不要相信这有影响)和背景中的鸟鸣声(2000hz 左右的活动)。您可以从 8 秒到 13 秒看到 256-1024 赫兹的声音。从 15 到 22 秒的 128hz 附近的活动是车辆。

声音,8 步之遥

我正在尝试找到一种识别语音活动(高精度)的方法,就像在这个文件中一样。

我相信,由于语音和这些声音文件的可变性,使用机器学习算法将取得最大的成功。(我也一直在研究基于每个样本的语音频率范围中的能量比例的数学方法,但这似乎不适用于声音文件的可变性)

我们只有大约 10 分钟的语音记录,就像上面的频谱图一样。然后我们可能有大约 24 小时的非语音记录。

Q1:这些数据是否足够,如果没有,是否建议使用来自 freesound.org 的数据?

Q2:什么类型的算法效果最好?- 处理时间不用担心,数据包含来自多种来源(车辆、动物、人、天气)的噪音,我没有太多的声音可以使用(但我希望我可以只使用来自 freesound 的语音文件。 org),我想达到 100% 的精度,而不用担心召回。

Q3:有没有人知道在我的类似空间中的任何项目,我可以看到他们做了什么?(已经在语音检测 [VAD] 方面做了一些工作,但从一些实验来看,它并不适合像我这样嘈杂的环境,即这个

Q4:最后一个问题,有没有人知道任何有效的技术来标记连续音频数据中的离散事件以用于 Python 中的 ML 算法?(目前我希望我会在 Audacity 上收听文件并通过电子表格记录语音开始和停止的位置)

否则,任何其他建议都会很棒!

(仅供参考,我已经完成了有关 ML 回归、神经网络和 SVM/tree 的课程,但不会称自己为“精通 ML”)

另外,还有其他地方可以问这些问题吗?我意识到 DSP.stack 更适合解决 dsp 领域的小问题,但我不知道在哪里可以问这个!

1个回答

这实际上是一个非常适合机器学习的问题,并且已经在过去进行了探索,并在此处发布。它通常被称为鸡尾酒会问题,因为我们人类的大脑可以专注于一个非常特殊的声音模式,尽管我们周围无数其他声音淹没了它。

我可以想到解决这个问题的两种方法,第一种是将频谱图转换为只让鸟儿叽叽喳喳。第二,从样本中提取语音模式,然后从原始样本中减去提取的语音。第二种方法不会消除卡车的噪音。

我会使用前一种技术。我会听到几千段鸟鸣声。然后在其中引入一些其他的声音。混合样本将是我的输入X 和目标 将是干净的鸟类样本。这是您可以模拟许多实例。但是,您将需要足够的鸟鸣数据来涵盖鸟类发出噪音的广泛分布。

第一季度

为了使其正常工作,您将需要大量数据。是的,您绝对应该尝试从任何可能的地方获取尽可能多的样本。然后,您可以使用鸟类剪辑随机引入这些人声,以获得脏信号,然后使用这些来训练您的模型。

第二季度

使用现有的机器学习方法很可能无法达到 100% 的准确率。但是,如果你接近 90%,那已经是一个奇迹,而且真的很棒。如果您使用频谱图,我会首先尝试卷积神经网络 (CNN)这些已被证明在这里产生了非常好的结果。然后,同一篇论文提出了一种自动编码器来清理频谱图。我认为这很有可能奏效,但会给频谱图带来平滑,这可能会扭曲鸟儿的鸣叫。最后,我建议使用生成对抗网络(GAN)

第三季度

我会调查鸡尾酒会的问题您还可以通过查看在 MRI 光谱 (MRSI) 中的光谱图上所做的大量工作来了解使用哪些技术。

第四季度

就像我上面说的,我建议从 n×n 包含混合声音的样本 n×n只有鸟鸣的样品。我认为这种策略是您可以找到最现有文献的策略,并且许多团体已经证明它是有效的。