我尝试在Android上创建说话人识别系统。目前我正在使用libxtract来计算帧中的MFCC向量,并使用libsvm进行分类。
您是否知道如何使用libxtract或其他可在NDK下编译的小型C,C ++库来检测帧中的语音(VAD语音活动检测)?
答案 0 :(得分:1)
强大的VAD是一个非常重要的问题,而且有many approaches。
您采取的方法取决于以下因素:
一个简单的方法可能涉及采取一系列功能" (例如f0,噪声,前10个部分的幅度)每个音频帧的噪声降低,并且训练机器学习算法(SVM就足够了)具有多种语音和非语音范例。
然而,最好不要将VAD视为一个简单的逐帧音频分类问题,而是将时间变化的音频方面考虑在内。这将使您更好地估计语音段开始和结束的位置。为此,您可以使用envelope follower或spectral 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背后的开发者