WebRTCオーディオノイズ低減使用


webrtcのns原理:起動前50フレームのデータを用いてノイズモデルを構築し,起動前200フレームの信号強度を正規化したスペクトル差計算に用いた.この2つのモデルに基づいて確率目的関数を用いてフレーム毎の信号対雑音比を計算し,雑音と音を区別し,計算した信号対雑音比に基づいて周波数領域でヴィーナフィルタを用いて雑音信号を雑音除去し,最後にノイズ低減前後のエネルギー比と信号対雑音類似比に基づいてノイズ低減後のデータを修復し調整して出力した.
Webrtcのノイズ低減モジュールを研究し,ここではwebrtcのノイズ低減モジュールの使用方法を簡単に述べる.
1、ノイズ低減ハンドルを作成する:
NsHandle *pNS_inst = NULL;

WebRtcNs_Create(&pNS_inst);

2、ノイズ低減ハンドルの初期化
 WebRtcNs_Init(pNS_inst, samplerate);//samplerate  8000, 16000,32000

3、ノイズ低減策の設定
WebRtcNs_set_policy(pNS_inst,nMode);//nMode  0,1,2,3

4、まずフィルタ関数を用いてオーディオデータを高低周波に分け、高周波と低周波でノイズ低減関数内部に伝達する必要がある
WebRtcSpl_AnalysisQMF(shBufferIn,in_len,shInL,shInH,filter_state1,filter_state12);

5、ノイズ低減が必要なデータを高周波と低周波で対応するノイズ低減処理インタフェースに伝達するとともに、返却データも高周波と低周波に分ける
 WebRtcNs_Process(pNS_inst ,shInL  ,shInH ,shOutL , shOutH);

6、ノイズ低減に成功した場合、ノイズ低減後の高周波及び低周波データからフィルタインタフェースに入り、出力データは処理完了データである
 WebRtcSpl_SynthesisQMF(shOutL,shOutH,shout__len,shBufferOut,Synthesis_state1,Synthesis_state12);