在回答我之前的问题时,我想知道是否存在任何语音检测库。通过语音检测,我的意思是传递音频缓冲区并获取语音开始和停止位置的索引。因此,如果我在44kHz的频率下有10秒的音频采样时间,那么我希望得到一个数字数组,例如:

44000
88000
123000
190334
...

然后在第二个第二点结束,等等。不幸的是,这是我在使用Google“语音检测”时看到的很多东西。 iPhone。

谢谢!

评论

您可能会在以下答案之一中找到答案:dsp.stackexchange.com/questions/912/…

除了唱歌以外,这非常相似:dsp.stackexchange.com/q/2367/29

同样相关:dsp.stackexchange.com/a/1543/29“语音活动检测”

您应该查看开始/偏移检测。它是一个活跃的领域,在音乐,语音和雷达信号处理中有许多应用。

#1 楼

在回答您的问题时,我曾提到语音活动检测是G.729等编解码器的标准功能。

应该为应用此算法的算法寻找参考编码器和解码器。

这样的例子是-http://www.voiceage.com/openinit_g729.php

另一个可能的来源是Speex编解码器。哪个实现了VAD

顺便说一句:您应该在Google中搜索“语音活动检测”或“说话突飞猛进”,而不是“语音检测”。

#2 楼

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

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

PocketSphinx

Freeswitch

来自Stackoverflow问题的答案。

#3 楼

使用自适应阈值的语音活动检测非常容易且方便在任何平台上实现

在这里,您可以拥有基于自适应能量的算法

我们第一次计算能量均值并标记为Emin

在此,您将通过的帧分为多个子帧,然后您可以检查每个子帧的活动

您可以克服重叠框架带来的更多问题

评论


$ \ begingroup $
我正在尝试实现本文中的方法,但是由于噪声抑制,当Min_E为零时会迷路。在这种情况下,根据公式,Thresh_E将为-INF。即使取log1p(Min_E),Thresh_E也将为零,因此由于非零能量,很容易对语音帧进行错误分类。有什么好的建议还是我误会了?公式:阈值_ E能量_ Pr imThresh * log(最小_ E)
$ \ endgroup $
–法雷
15年11月29日,0:29



#4 楼

LibVAD怎么样?

看起来恰好符合您的描述。

披露:我是LibVAD的开发商

评论


$ \ begingroup $
如何获得libVAD?
$ \ endgroup $
–托德
16年3月31日在14:18

$ \ begingroup $
通过购买。不过,在您填写表格后,网站才会透露价格。
$ \ endgroup $
– Camille Goudeseune
16-10-7在21:33

$ \ begingroup $
现在,链接转到了一个恶意软件站点,希望访问者更新闪存。
$ \ endgroup $
–史蒂夫遣散费
18年9月11日在20:09