任何简单的VAD实现?

我正在为VAD(语音活动检测)寻找一些C / C ++代码。

基本上,我的应用程序是从设备读取PCM帧。 我想知道用户何时说话。 我不是在寻找任何语音识别算法,而只是用于语音检测。

我想知道用户何时说话以及何时完成:

bool isVAD(short * pcm,size_t count);

Sphinx和Freeswitch项目中有开源实现。 我认为它们都是基于能量的探测器,不需要任何类型的模型。

Sphinx 4 (Java但它应该很容易移植到C / C ++)

PocketSphinx

FreeSWITCH的

谷歌的开源WebRTC代码有一个用C语言编写的VAD模块。它使用高斯混合模型(GMM),它通常比简单的能量阈值检测器更有效,特别是在具有动态水平和背景噪声类型的情况下。 根据我的经验,它比Gilad在评论中提到的Moattar-Homayounpour VAD更有效。

VAD代码是更大,更大的WebRTC存储库的一部分,但它很容易将其拉出并自行编译。 例如, webrtcvad Python包装器仅包含VAD C源 。

WebRTC VAD API非常易于使用。 首先,音频必须是单声道16位PCM,具有8 KHz,16 KHz或32 KHz的采样率。 发送到VAD的每个音频帧长度必须为10,20或30毫秒。

以下是假设audio_frame为16000 Hz的10 ms(320字节)音频的示例概述:

 #include "webrtc/common_audio/vad/include/webrtc_vad.h" // ... VadInst *vad; WebRtcVad_Create(&vad); WebRtcVad_Init(vad); int is_voiced = WebRtcVad_Process(vad, 16000, audio_frame, 160); 

LibVAD怎么样 ? http://www.libvad.com

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

披露:我是LibVAD背后的开发人员