Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 提高语音检测算法的准确性_C#_C# 4.0_Machine Learning_C# 3.0_Voice Recognition - Fatal编程技术网

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

C# 提高语音检测算法的准确性,c#,c#-4.0,machine-learning,c#-3.0,voice-recognition,C#,C# 4.0,Machine Learning,C# 3.0,Voice Recognition,所以我有一个单声道音频文件,其中包含人们说话,说话暂停,然后他们再次说话。当他们说话的时候,当他们不说话的时候,不时会有孩子在背后哭泣,汽车“刹车”的尖叫声,你在外面听到的东西 我的目标是在他们说话时保留这些部分,在他们不说话时删掉这些部分。无需过滤背景噪声 基本上,我的最终目标是有一个这样的名单 Start in seconds, End in seconds 我试过什么 我将所有包含语音的部分组合在一起,手动创建了一个纯语音文件。(10秒) 我通过将所有不包含语音的部分装配在一起,手动创建

所以我有一个单声道音频文件,其中包含人们说话,说话暂停,然后他们再次说话。当他们说话的时候,当他们不说话的时候,不时会有孩子在背后哭泣,汽车“刹车”的尖叫声,你在外面听到的东西

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

基本上,我的最终目标是有一个这样的名单

Start in seconds, End in seconds
我试过什么

  • 我将所有包含语音的部分组合在一起,手动创建了一个纯语音文件。(10秒)
  • 我通过将所有不包含语音的部分装配在一起,手动创建了一个仅含噪波的文件。(50秒)
  • 我通过应用快速傅里叶变换得到了它的频率+振幅
  • 我每100毫秒浏览一次音频文件,并拍摄一张FFT快照
  • 我将一个快照(在我的示例512中)的所有值放入一个列表中,并将其提供给一个结合标签的机器学习算法(numl)(在第一种情况下voice=true,在第二种情况下voice=false)
  • 然后我使用我的主音频文件,做的基本相同,但这次使用我的机器学习模型的结果来确定它是否是语音,并以秒为单位输出实现这一点的时间
  • 我的问题是,我得到了很多假阳性和假阴性。它似乎能在没有声音时识别声音,反之亦然


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

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

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

    有关简单算法的说明,请查看

    如果您正在寻找一个完善的VAD实现,您可以在WebRTC项目中找到,该VAD由Google开发:


    使用PCA分离主扬声器,背景噪音应该会为您提供更好的数据。您是否有c#实现?您可以通过interop插入c#代码,使用c#中的c代码。你几乎不可能在C#中找到一个好的VAD,因为它们大多数都是用C/C++/Matlab实现的。请在一个例子中,通过编辑你的回复让大家看到,来分享如何在C#中使用谷歌提供的这个VAD。@Gewinn你为什么不亲自尝试一下,让我们知道你的发现呢?请分享如何使用这个VAD谷歌在c#中的一个例子就是编辑你的回复,让每个人都能看到。