织梦CMS - 轻松建站从此开始!

罗索

VAD检测原理及其过程

jackyhwei 发布于 2022-06-14 10:05 点击:次 
范围极广,降噪,语音识别等领域都需要有vad检测。vad检测有很多方法,这里我们之介绍一下webrtc里面的vad检测。 webrtc的vad检测原理是根据人声的频谱范围,把输入的频谱分成六个子带(80H
TAG: WebRTC  VAD  

范围极广,降噪,语音识别等领域都需要有vad检测。vad检测有很多方法,这里我们之介绍一下webrtc里面的vad检测。
webrtc的vad检测原理是根据人声的频谱范围,把输入的频谱分成六个子带(80Hz250Hz,250Hz500Hz,500Hz1K,1K2K,2K3K,3K4K。) 分别计算这六个子带的、能量。然后使用高斯模型的概率密度函数做运算,得出一个对数似然比函数。对数似然比分为全局和局部,全局是六个子带之加权之和,而局部是指每一个子带则是局部,所以语音判决会先判断子带,子带判断没有时会判断全局,只要有一方过了,就算有语音。
webrtc的vad检测代码比较简洁,核心代码只在三个文件中。
webrtc_vad.c 该文件是用户调用的API函数,使用vad一般只需要调用该里面的函数即可。
使用函数:WebRtcVad_Create WebRtcVad_Init 申请内存和初始化一些参数。

使用函数:WebRtcVad_set_mode 设置vad要处理的采样率,一般是8000或16000
使用函数:WebRtcVad_Process 核心函数,完成检测是否有人声的核心。
vad_core.c 该文件是webrtc_vad.c 文件中函数的实现代码,也是vad最深层的核心代码。

 使用方法:    初始化调用:    WebRtcVad_Create();    WebRtcVad_Init();    WebRtcVad_set_mode();    处理调用:    WebRtcVad_Process(); 

注意事项:
这里共有三种帧长可以用到,分别是80/10ms,160/20ms,240/30ms。其它采样率的48k,32k,24k,16k会重采样到8k来计算VAD。之所以选择上述三种帧长度,是因为语

音信号是短时平稳信号,其在10ms~30ms之间可看成平稳信号,高斯马尔科夫等比较的信号处理方法基于的前提是信号是平稳的,在10ms~30ms,平稳信号处理方法是可以使用的。
从vad的代码中可以看出,实际上,系统只处理默认10ms,20ms,30ms长度的数据,其它长度的数据没有支持,笔者修改过可以支持其它在10ms-30ms之间长度的帧长度发现也是可以的。
vad检测共四种模式,用数字0~3来区分,激进程度与数值大小正相关。
0: Normal,1:low Bitrate, 2:Aggressive;3:Very Aggressive 可以根据实际的使用
在初始化的时候可以配置。
动也会带来影响,所以取了80Hz以上的信号。

(秩名)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/202206/17867.html]
本文出处:CSDN 作者:秩名 原文
顶一下
(0)
0%
踩一下
(0)
0%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容