3

我尝试在 Android 上创建扬声器识别系统。目前我正在使用 libxtract 从帧和 libsvm 计算 MFCC 向量进行分类。

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

4

3 回答 3

1

鲁棒VAD是一个不平凡的问题,有很多方法

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

  • 您的应用程序上下文的细节以及您的应用程序将如何被使用
  • 您可以对您将要处理的音频做出什么样的假设(您可以期待什么样的背景噪音或非语音音频)
  • 您的系统是否需要实时运行

一种简单的方法可能涉及对每个音频帧进行“特征包”(例如 f0、噪声、前 10 个部分的幅度)后降噪,并使用多种语音训练机器学习算法( SVM就足够了)和非语音示例。

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

于 2014-08-06T09:18:05.807 回答
1

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

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

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

于 2014-10-11T05:25:09.183 回答
0

LibVAD 怎么样?www.libvad.com

似乎这正是您所描述的。

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

于 2017-10-24T21:18:31.147 回答