webRTC的VAD算法的研究

Posted damizhou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了webRTC的VAD算法的研究相关的知识,希望对你有一定的参考价值。

摘要:

     在上一篇的文档中,分析unimrcp中vad算法的诸多弊端,但是有没有一种更好的算法来取代呢。目前有两种方式 1. GMM   2. DNN。

    其中鼎鼎大名的WebRTC VAD就是采用了GMM 算法来完成voice active dector。今天笔者重点介绍WebRTC VAD算法。在后面的文章中,

    我们在刨析DNN在VAD的中应用。下面的章节中,将介绍WebRTC的检测原理。

 

原理:

    首先呢,我们要了解一下人声和乐器的频谱范围,下图是音频的频谱。

   技术图片

                                     本图来源于网络

    根据音频的频谱划分了6个子带,80Hz~250Hz,250Hz~500Hz,500Hz~1K,1K~2K,2K~3K,3K~4K,分别计算出每个子带的特征。

 

步骤:

    第一步:降频

      WebRTC 支持8kHz 16kHz 32kHz 48kHz的音频,但是WebRTC首先都将16kHz 32kHz 48kHz首先降频到8kHz,再进行处理。

   

 1         int16_t speech_nb[240];  // 30 ms in 8 kHz.
 2         const size_t kFrameLen10ms = (size_t) (fs / 100);
 3         const size_t kFrameLen10ms8khz = 80;
 4         size_t num_10ms_frames = frame_length / kFrameLen10ms;
 5         int i = 0;
 6         for (i = 0; i < num_10ms_frames; i++) 
 7             resampleData(audio_frame, fs, kFrameLen10ms, &speech_nb[i * kFrameLen10ms8khz],
 8                          8000);
 9         
10         size_t new_frame_length = frame_length * 8000 / fs;
11         // Do VAD on an 8 kHz signal
12         vad = WebRtcVad_CalcVad8khz(self, speech_nb, new_frame_length);

 

    

    

   

   

  

 

   

 

    

  

 

以上是关于webRTC的VAD算法的研究的主要内容,如果未能解决你的问题,请参考以下文章

提纲挈领webrtc音频处理算法之写在前面的话

WebRTC音频预处理单元APM的整体编译及使用 - android

WebRTC音视频之噪音消除功能

WebRTC音视频之噪音消除功能

WebRTC音视频引擎研究--整体架构分析

转帖WebRTC回声抵消模块简要分析