用于语音活动检测的库(非语音识别)


18

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

44000
88000
123000
190334
...

例如,这将表明语音从一秒钟开始,然后在两秒钟之内结束,依此类推。

不需要的是语音识别,它可以从口语单词中写出文字。不幸的是,这是我在Google“语音检测”中看到的很多内容。

如果该库是C,C ++甚至是Objective-C,那将非常好,因为我正在为iPhone编写应用程序。

谢谢!


1
:您可能会发现在这些答案中的一个答案dsp.stackexchange.com/questions/912/...
Geerten

1
这非常相似,只是唱歌而不是讲话:dsp.stackexchange.com/q/2367/29
endolith,2012年

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

1
您应该研究开始/偏移检测。它是活跃的领域,在音乐,语音和雷达信号处理中有许多应用。
Cyber​​Men 2012年

Answers:


13

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

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

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

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

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



4

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

在这里你可以有一个算法是 基于自适应能量

初次计算时,对上述算法进行了少量补充,将能量均值标记为Emin

在这种情况下,您通过的框架分为多个子框架,您还可以检查每个子框架的活动

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


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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.