使用libxtract或其他小型C,C ++库来实现VAD功能

时间:2013-09-11 09:24:03

标签: voice mfcc

我尝试在Android上创建说话人识别系统。目前我正在使用libxtract来计算帧中的MFCC向量,并使用libsvm进行分类。

您是否知道如何使用libxtract或其他可在NDK下编译的小型C,C ++库来检测帧中的语音(VAD语音活动检测)?

3 个答案:

答案 0 :(得分:1)

强大的VAD是一个非常重要的问题,而且有many approaches

您采取的方法取决于以下因素:

  • 应用程序上下文的具体内容以及应用程序的使用方式
  • 您可以对要处理的音频做出什么样的假设(您可以期待什么类型的背景噪音或非语音音频)
  • 您的系统是否需要实时操作

一个简单的方法可能涉及采取一系列功能" (例如f0,噪声,前10个部分的幅度)每个音频帧的噪声降低,并且训练机器学习算法(SVM就足够了)具有多种语音和非语音范例。

然而,最好不要将VAD视为一个简单的逐帧音频分类问题,而是将时间变化的音频方面考虑在内。这将使您更好地估计语音段开始和结束的位置。为此,您可以使用envelope followerspectral flux。您可以在这些包络值上设置高阈值和低阈值,并使用这些(例如)控制音频流上的门。

答案 1 :(得分:1)

使用Jamie描述的一些技术,Voicebox工具包具有良好的VAD实现。您可以在vadsohn.m中找到它,它实现"基于统计模型的语音活动检测" (1999) - 由Sohn等人。

您还可以在github上找到一些实现,比如G729编解码器VAD(用于VOIP应用程序)。例如masters thesis

这些实现在MATLAB / Octave中,但可以通过一些工作移植到C / C ++。 祝你好运!

答案 2 :(得分:0)

LibVAD怎么样? www.libvad.com

看起来就像你正在描述的那样。

披露:我是LibVAD背后的开发者