語音發生檢測VAD

2021-08-09 06:19:19 字數 1513 閱讀 9701

webrtc 的各個音訊處理都很值得大家學習,

不說個人感覺最牛的aec, 就這個vad就很好!

基本實現思想是 通過把訊號分為 6個頻帶,對各個子頻帶進行 雜訊和語音 的高斯模型特徵判決!

對不同的訊號頻率均降頻到8k hz,內部對 16、24、32、48、做了分頻

如果需要做不同訊號頻率的檢測,需要單獨做分頻到8k。

判決引數均可調整:

個人新增了乙個具有明顯辨識度的語音頻號引數:

custom as 4

// mode 0, quality.

static const int16_t koverhangmax1q[3] = ;

static const int16_t koverhangmax2q[3] = ;

static const int16_t klocalthresholdq[3] = ;

static const int16_t kglobalthresholdq[3] = ;

// mode 1, low bitrate.

static const int16_t koverhangmax1lbr[3] = ;

static const int16_t koverhangmax2lbr[3] = ;

static const int16_t klocalthresholdlbr[3] = ;

static const int16_t kglobalthresholdlbr[3] = ;

// mode 2, aggressive.

static const int16_t koverhangmax1agg[3] = ;

static const int16_t koverhangmax2agg[3] = ;

static const int16_t klocalthresholdagg[3] = ;

static const int16_t kglobalthresholdagg[3] = ;

// mode 3, very aggressive.

static const int16_t koverhangmax1vag[3] = ;

static const int16_t koverhangmax2vag[3] = ;

static const int16_t klocalthresholdvag[3] = ;

static const int16_t kglobalthresholdvag[3] = ;

// mode 4, custom.

static const int16_t koverhangmax1cus[3] = ;

static const int16_t koverhangmax2cus[3] = ;

static const int16_t klocalthresholdcus[3] = ;

static const int16_t kglobalthresholdcus[3] = ;

單獨抽稀的vad模組原始碼:

不要用speex做靜音檢測vad

speex從1.2版本開始支援靜音檢測vad 還有降噪 回聲消除 自動增益控制agc 抖動buffer 重取樣等一堆功能 等針對語音的預處理功能,實現在libspeexdsp庫中。真正用起來後,發現各種坑!因為speex初始化時frame size填的20ms幀長,所以各位從上圖可以看到,每隔20m...

常用有話幀檢測技術(VAD)

前言 總結一下基本的有話幀檢測 voice activity detection,vad 技術,基於神經網路的待後面梳理完神經網路的理論後再作整理。一 雙門限 這是一種boosting的思路,即 兩個弱分類器可以組合更強的分類器,依次類推,三 四門限其實都可。每一種門限對應一種判決準則。基本的雙門限...

常用有話幀檢測技術(VAD)

前言 總結一下基本的有話幀檢測 voice activity detection,vad 技術,基於神經網路的待後面梳理完神經網路的理論後再作整理。一 雙門限 這是一種boosting的思路,即 兩個弱分類器可以組合更強的分類器,依次類推,三 四門限其實都可。每一種門限對應一種判決準則。基本的雙門限...