本文内容均翻译自这篇博文:(该博主的相关文章都比较好,感兴趣的可以自行学习)

Voice Activity Detection(VAD) Tutorial

语音端点检测一般用于鉴别音频信号当中的语音出现(speech presence)和语音消失(speech absence)。这里将提供一个简单的VAD方法,当检测到语音时输出为1,否则,输出为0。

语音是否出现或者在背景噪声上是否平坦决定了VAD方法的检测是否稳定(The job of a VAD is to reliably determine if speech is present or not even in background noise)。在纯净背景噪声环境下(clean conditions),即使简单的能量检测方法也能够得到较好的语音检测效果,然而,一般情况下,我们得到的音频信号均会存在背景噪声。这就意味着,我们的VAD方法必须对噪声具有较好的鲁棒性。

VAD的总体步骤如下:

将音频信号进行分帧处理;

从每一帧数据当中提取特征;

在一个已知语音和静默信号区域的数据帧集合上训练一个分类器;

对未知的分帧数据进行分类,判断其属于语音信号还是静默信号。

通常,一个VAD算法会将音频信号划分为发音部分(voiced)、未发音部分(unvoiced)和静默部分(silence)。这里介绍的特征能够很好的适用于这种分类任务,但是分类器的分类类别是3类而非两类(voiced speech,unvoiced speech and silence)。

预处理

第一步是将音频信号通过一个高通滤波器,截止频率大约为\(200Hz\)。这一步的目的是移除信号当中的直流偏置分量和一些低频噪声。虽然在低于\(200Hz\)的部分仍然有部分语音信息,但是不会对语音信号造成很大的影响。

在特征提取之前,我们首先要对音频信号进行长度为\(20-40ms\)的分帧,一般帧与帧之间的重叠为\(10ms\)。举例来说,如果我们的音频信号采样率为\(16kHz\),取窗口大小为\(25ms\),这种情况下,每一帧数据的所包含的数据点为:\(0.025*16000=400\)采样点。令帧之间重叠为\(10ms\)来计算,第一帧的数据起始点为\(sample 0\),第二帧数据的起始点为\(sample 160\)。

特征提取

分帧完成之后,就可以对每一帧数据进行特征提取。在下面的讨论中,\(x(n)\)为音频数据的一帧数据,其中\(n\)的范围为\(1 \rightarrow L\)(\(L\)为每一帧数据的长度)。对每一帧数据进行下面五种特征的提取:

对数帧能量(logarithm of frame energy):

\[E=log(\sum\limits_{n=1}^{L}x(n)^2)

\]

过零率(zero crossing rate):每一帧数据穿过零点的次数

在延迟一个位置处标准化自相关系数(normalised autocorrelation coefficient at lag 1):

\[C=\frac{\sum\limits_{n=1}^{L-1}x(n)x(n-1)}{\sqrt{(\sum\limits_{n=1}^{L-1}x(n)^2)(\sum\limits_{n=1}^{L-1}x(n-1)^2)}}

\]

\(P_{th}\)阶线性预测的第一个系数

\(P_{th}\)阶线性预测误差的对数

在本文中,我们使用\(P=12\),也就是说线性预测器的阶数为\(12\)。

分类

上面介绍的特征,单一使用时无法有效的对音频信号进行端点检测,但是我们可以使用多种特征的组合,来有效的解决这一问题,并且降低错误分类的概率。

Rabiner使用一个推测(calculating)静默信号特征均值和方差;语音信号特征均值和方差的贝叶斯分类器来进行分类。为了对一个未知数据帧进行分类,我们计算该数据帧来自每一个标签数据的似然,假设数据分布服从多变量高斯分布。然后,选择最大似然所对应的模型作为该数据帧的标签。

我们也可以选择discriminative classifier,如:支持矢量机,神经网络等。这里有一个SVM库libsvm,能够简单的训练一个SVM分类器来用于语音信号和静默信号的分类。

训练

训练分类器需要足够的带标签数据,这就要求人们进行人工标注数据。具体的,在VAD应用当中,要求对音频信号中的语音部分和静默部分进行划分。一般来说,带标签数据越多,训练得到的分类器分类效果越好。一个重要的细节是:在训练数据当中的背景噪声要尽量与测试数据当中的背景噪声相匹配,否则会引起噪声失配问题。如果你无法对训练和测试数据当中的噪声类型进行确定,那么尽量使用多种噪声和多种\(SNR\)(信噪比)数据对分类器进行训练。

如果你想要应用VAD到一个实际应用当中,如:电话语音数据,很重要的一点是:进行训练的数据需要在相同的通道(channel)获取,训练所获取数据的channel和应用场景的channel相同。这样可以降低训练数据集和测试数据集的失配问题。一旦训练完成之后,你可以获得一个可以预测未知数据标签的模型。

Putting it All Together

模型训练完成之后,我们可以使用该模型对未知数据帧的标签进行预测。随着数据中噪声的增加,可以推测到,VAD模型的准确率会下降。

有时,预测标签在speech present和speech abscent之间剧烈震荡,这种情况是我们所不愿意看到的。在这种情况下,我们可以对预测标签使用中值滤波Median Filter进行处理。

python信号端点检测_语音端点检测(Voice Activity Detection,VAD)相关推荐

  1. 语音端点检测(Voice Activity Detection,VAD)

    1.VAD的总体步骤:https://www.bbsmax.com/A/1O5EOo73z7/ 2.基于短时能量和过零率的简单实现(实际上精确度高的VAD会提取4种或更多的特征进行判断,这里只介绍两种 ...

  2. python信号端点检测_语音信号端点检测

    语音信号的端点检测方法有很多种,简单的方法可以直接通过计算出声音的音量大小,找到音量大于某个阈值的部分,认为该部分为需要的语音信号,该部分与阈值的交点即为端点,其余部分认为非语音帧. 计算音量 计算音 ...

  3. caffe 人脸关键点检测_全套 | 人脸检测 人脸关键点检测 人脸卡通化

    点击上方"AI算法与图像处理",选择加"星标"或"置顶" 重磅干货,第一时间送达 来源:CVPy 人脸检测历险记 可能跟我一样,人脸检测是很 ...

  4. anchor free 目标检测_《目标检测》系列之二:目标检测中的Anchor机制回顾

    前段时间,YOLOv4&v5大火,很多人忽视了yolov5在anchor上的一些细节变化,因此,本文从Faster RCNN着手,逐步分析SSD.YOLOv4&v5的anchor机制. ...

  5. opencv表面缺陷检测_机器视觉表面缺陷检测 光学元件瑕疵检测

    在工业领域中,划痕缺陷检测技术主要应用于汽车.3C.冶金等行业,主要是对物体表面划痕进行识别检测.目前大多数生产企业仍在依靠人工检测.受检测要求高,工人长时间工作容易视觉疲劳等因素影响,检测准确率普遍 ...

  6. 什么是pdi检测_汽车pdi检测是什么?如何知道新车做没做pdi

    相信前阵子网上闹得沸沸扬扬的奔驰漏油事件大家都了然于胸吧,事件的当事人坐在发动机舱盖上这么一哭,更是将4S店隐藏的种种内幕公布于世.在而后经相关部门的检测,奔驰漏油事件的原因竟是发动机在装配时,机油防 ...

  7. mk突变点检测_气候突变检测

    1.气候突变是什么意思 科学家们所说的气候变化,通常指的是"气候渐变".也就是我们经常说的,"地球在逐渐变暖",或者是"气候在慢慢变暖".但 ...

  8. anchor free 目标检测_【目标检测】anchor-free—CenterNet总结

    [文前]本文所讲述的 CenterNet 为 [Objects as Points] (http://arxiv.org/abs/1904.07850)) 有两篇 paper 都为 centernet ...

  9. 五金件视觉检测_五金配件视觉检测_五金冲压件视觉检测

    五金配件是用五金制作成的机器零件或部件,以及一些小五金制品.它可以单独用途,也可以做协助用具.例如五金工具.五金零部件.日用五金.建筑五金以及安防用品等.小五金产品大都不是最终消费品.而是作为工业制造 ...

  10. opencv 图像雾检测_雾的检测算法

    雾的检测算法相对来说文献不是很多,这次和大家介绍两篇相对来说比较容易实现的两篇文章,其中一篇是基于灰度直方图的方式进行分析检测,另一篇是将rgb图像空间转化为hsv空间进行分析检测. 1.灰度图检测 ...

最新文章

  1. (0067)iOS开发之iOS新增类UILayoutGuide的用途
  2. 禁用任何未使用的端口com_分享连接思科路由器控制台端口的正确设置
  3. clone远程代码 在不同电脑上git_用树莓派3搭建私有git代码仓库
  4. R语言中级--自定义方程
  5. 傲游浏览器怎么创建笔记 傲游浏览器笔记创建方法分享
  6. Educational Codeforces Round 14 - F (codeforces 691F)
  7. 为什么黑客都用python-为什么黑客需要学习C++和Python?
  8. 开发环境搭建与Hadoop的配置
  9. TrueCrypt中文教程
  10. boot版本是什么 cent os_BOOT是什么?该怎么打开啊!
  11. 已知视频码率、视频时长,怎么计算视频文件大小
  12. 一篇文入门OA流程开发
  13. java的副语言_公共表达中,悄悄影响你的“副语言”
  14. linux acl权限是什么意思,Linux ACL是什么意思
  15. 莫名奇妙的异常010:Unexpected server response (0) while retrieving PDF
  16. 今天才发现!通过微信左下角,还可以快速找到未读消息
  17. benchmark java_Xudong
  18. 认知升级|系列2|复利思维
  19. 在shell 脚本中获取该脚本的所在目录
  20. php redis incr秒杀,Redis瞬时高并发秒杀方案总结

热门文章

  1. django使用mysql函数_请问django 可以操作mysql函数么?
  2. 【光学】基于matlab光栅衍射仿真【含Matlab源码 502期】
  3. 【雷达通信】基于matlab SVM识别雷达数据【含Matlab源码 305期】
  4. 计算机思维与计算文化,计算文化与计算思维基础
  5. 若依可以商用吗_商用自动炒菜机Qamp;A,你想知道的都在这里!
  6. 快二游戏数据分析_1.更快的数据分析
  7. 算法与数据结构篇(暂未解答)
  8. soapui返回值类型都有哪些_小程序都有哪些类型,开发小程序效果如何
  9. c语言200行代码大作业含菜单,2018级C语言大作业 - 坦克动荡
  10. 下拉框系统甄选火星推荐_微博下拉框技术选择5火星