我正在寻找一些用于VAD (语音活动检测)的C/C++代码。
基本上,我的应用程序是从设备读取PCM帧。我想知道用户什么时候在说话。我不是在寻找任何语音识别算法,而只是为了语音检测。
我想知道用户什么时候说话,什么时候说完:
bool计数( size_t *isVAD,bool count);
发布于 2011-03-20 16:04:28
Sphinx和Freeswitch项目中有开源实现。我认为它们都是基于能量的探测器,不需要任何类型的模型。
Sphinx 4 (Java,但移植到C/C++应该很容易)
发布于 2016-04-25 01:29:51
谷歌的开源WebRTC代码有一个用C编写的VAD模块。它使用高斯混合模型,通常比简单的能量阈值检测器更有效,特别是在具有动态水平和背景噪声类型的情况下。在我的经验中,它也比吉拉德在their comment中提到的Moattar-Homayounpour更有效。
VAD代码是非常非常大的WebRTC存储库的一部分,但是很容易将其提取出来并自行编译。例如webrtcvad Python wrapper includes just the VAD C source。
WebRTC VAD API非常易于使用。首先,音频必须是单声道16位PCM,采样率为8 KHz、16 KHz或32 KHz。您发送到VAD的每个音频帧的长度必须为10、20或30毫秒。
以下是一个示例的概要,该示例假设audio_frame
是10毫秒(320字节)的音频,频率为16000 Hz:
#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);
发布于 2015-01-16 00:00:33
https://stackoverflow.com/questions/5367214
复制相似问题