gpt4 book ai didi

c# - 提高语音检测算法的准确性

转载 作者:行者123 更新时间:2023-11-30 09:23:47 24 4
gpt4 key购买 nike

所以我有这个单声道音频文件,其中包含人们说话、说话暂停然后他们再次说话。当他们说话或不说话时,背景中时不时会有 children 的哭声、汽车刹车的尖叫声,这些都是你在外面时听到的声音。

我的目标是在他们说话时保留这些部分,在他们不说话时剪掉这些部分。无需过滤背景噪音。

基本上我的最终目标是拥有这样的剪辑列表

Start in seconds, End in seconds

我尝试了什么?

  1. 我通过将所有包含语音的部分组合在一起,手动创建了一个纯语音文件。(10 秒)
  2. 我通过将所有不包含语音的部分组合在一起,手动创建了一个仅包含噪音的文件。(50 秒)
  3. 我通过应用快速傅立叶变换获得了频率+振幅
  4. 我每 100 毫秒浏览一次音频文件并拍摄 FFT 快照
  5. 我将一个快照(在我的例子中为 512)的所有值放入列表中,并将其与标签结合起来提供给机器学习算法(numl)(在第一种情况下 voice = true,在第二种情况下 voice = false )
  6. 然后我使用我的主音频文件,执行基本相同的操作,但这次使用我的机器学习模型的结果来确定它是否是语音,并输出它实现这一点的时间(以秒为单位)。

我的问题是我得到了很多误报和漏报。当没有声音时,它似乎可以识别声音,反之亦然。

造成这种情况的原因可能是模型训练不当(我使用决策树)还是我需要采取其他措施才能获得更好的结果?

最佳答案

关于语音的常见误解是,它被视为不相关的数据帧序列。语音的核心属性是它是一个连续的时间过程,而不仅仅是一组数据点。

任何合理的 VAD 都应该考虑到这一点并使用面向时间的分类器,例如 HMM。在您的情况下,任何考虑时间的分类器是否是一个简单的基于能量的语音事件检测(用于监控背景级别)或基于 GMM-HMM 的 VAD 都会比任何静态分类器做得更好。

有关简单算法的描述,您可以查看 Wikipedia .

如果您正在寻找一个好的、复杂的 VAD 实现,您可以在 WebRTC 项目中找到一个,该 VAD 是由 Google 开发的:

https://code.google.com/p/webrtc/source/browse/trunk/webrtc/common_audio/vad/

关于c# - 提高语音检测算法的准确性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20197748/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com